Skip to content

Instantly share code, notes, and snippets.

@Chelsea486MHz
Created December 19, 2017 10:29
Show Gist options
  • Select an option

  • Save Chelsea486MHz/028e267ee1a42e5e7a6616058288ec2b to your computer and use it in GitHub Desktop.

Select an option

Save Chelsea486MHz/028e267ee1a42e5e7a6616058288ec2b to your computer and use it in GitHub Desktop.
#include <LCD5110_Basic.h>
#include <avr/pgmspace.h>
#define RST_PIN 25 /* Resets the flash duration */
#define INC_PIN 26 /* Increases it by 50 ms */
#define DEC_PIN 27 /* Decreases it by 50 ms */
#define SAF_PIN 28 /* Safety mechanism */
#define TRG_PIN 29 /* Triggers the flash */
#define FLS_PIN 13 /* The flash is connected to this pin */
#define SCR_RST 6
#define SCR_CE 7
#define SCR_DC 5
#define SCR_DIN 4
#define SCR_CLK 3
#define DEFAULT_FLASH_DURATION 500 /* 100 ms */
#define FLASH_DURATION_STEP 50
#define SAFETY_ENABLED 0xFF /* Safety is enabled. Can't use the flash. */
#define SAFETY_DISABLED 0x00 /* Safety is disabled. SMILE! */
const uint8_t screen[] PROGMEM={
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 0x0010 (16) pixels
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 0x0020 (32) pixels
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 0x0030 (48) pixels
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 0x0040 (64) pixels
0x00, 0x00, 0x00, 0x00, 0x00, 0xFE, 0x82, 0xBA, 0xBA, 0x82, 0xBA, 0xBA, 0x82, 0xBA, 0xBA, 0x82, // 0x0050 (80) pixels
0xFE, 0x38, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 0x0060 (96) pixels
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 0x0070 (112) pixels
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 0x0080 (128) pixels
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 0x0090 (144) pixels
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 0x00A0 (160) pixels
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 0x00B0 (176) pixels
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 0x00C0 (192) pixels
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 0x00D0 (208) pixels
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, // 0x00E0 (224) pixels
0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x80, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0x00, 0x80, // 0x00F0 (240) pixels
0x00, 0x00, 0x80, 0x00, 0x80, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 0x0100 (256) pixels
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 0x0110 (272) pixels
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 0x0120 (288) pixels
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xE0, 0x20, // 0x0130 (304) pixels
0x20, 0x27, 0x28, 0x28, 0x27, 0x20, 0x2F, 0x21, 0x22, 0x2F, 0x20, 0x2F, 0x28, 0x28, 0x20, 0x28, // 0x0140 (320) pixels
0x2F, 0x28, 0x20, 0x2F, 0x21, 0x22, 0x2F, 0x20, 0x2F, 0x2A, 0x28, 0x20, 0x20, 0x20, 0xE0, 0x00, // 0x0150 (336) pixels
0x00, 0xFC, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, // 0x0160 (352) pixels
0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, // 0x0170 (368) pixels
0x84, 0x84, 0x84, 0x04, 0x84, 0x84, 0x04, 0x04, 0x04, 0x84, 0x84, 0x84, 0x04, 0x04, 0xFC, 0x00, // 0x0180 (384) pixels
0x00, 0x00, 0xFD, 0x44, 0x54, 0x44, 0xFC, 0x44, 0x54, 0x44, 0xFC, 0x44, 0x54, 0x44, 0xFC, 0x44, // 0x0190 (400) pixels
0x54, 0x44, 0xFC, 0x44, 0x54, 0x44, 0xFC, 0x44, 0x54, 0x44, 0xFC, 0x44, 0x54, 0x44, 0xFC, 0x44, // 0x01A0 (416) pixels
0x54, 0x44, 0xFD, 0x00, 0x00, 0x7F, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, // 0x01B0 (432) pixels
0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, // 0x01C0 (448) pixels
0x40, 0x40, 0x40, 0x5F, 0x5F, 0x40, 0x5F, 0x5F, 0x40, 0x5F, 0x5F, 0x40, 0x53, 0x54, 0x5C, 0x5C, // 0x01D0 (464) pixels
0x48, 0x40, 0x7F, 0x00, 0x00, 0x00, 0x7F, 0x44, 0x55, 0x44, 0x7F, 0x44, 0x55, 0x44, 0x7F, 0x44, // 0x01E0 (480) pixels
0x55, 0x44, 0x7F, 0x44, 0x55, 0x44, 0x7F, 0x44, 0x55, 0x44, 0x7F, 0x44, 0x55, 0x44, 0x7F, 0x44, // 0x01F0 (496) pixels
0x55, 0x44, 0x7F, 0x44, 0x55, 0x44, 0x7F, 0x00,
};
extern uint8_t SmallFont[];
uint16_t flash_duration;
uint8_t safety_state;
LCD5110 scr(SCR_CLK, SCR_DIN, SCR_DC, SCR_RST, SCR_CE);
void setup(void)
{
scr.InitLCD(60);
scr.setFont(SmallFont);
scr.drawBitmap(0, 0, screen, 84, 48);
pinMode(RST_PIN, INPUT_PULLUP);
pinMode(INC_PIN, INPUT_PULLUP);
pinMode(DEC_PIN, INPUT_PULLUP);
pinMode(SAF_PIN, INPUT_PULLUP);
pinMode(TRG_PIN, INPUT_PULLUP);
pinMode(FLS_PIN, OUTPUT);
flash_duration = DEFAULT_FLASH_DURATION;
}
void loop(void)
{
if (digitalRead(RST_PIN) == HIGH)
flash_duration = DEFAULT_FLASH_DURATION;
else if (digitalRead(INC_PIN) == HIGH)
flash_duration += FLASH_DURATION_STEP;
else if (digitalRead(DEC_PIN) == HIGH)
flash_duration -= FLASH_DURATION_STEP;
else if (digitalRead(SAF_PIN) == HIGH)
{
if (safety_state == SAFETY_ENABLED)
{
safety_state = SAFETY_DISABLED;
scr.print(1, 1, "SAFETY OFF");
}
else
{
safety_state = SAFETY_ENABLED;
scr.print(1, 1, "SAFETY ON ");
}
}
else if (digitalRead(TRG_PIN) == HIGH)
{
digitalWrite(FLS_PIN, HIGH);
delay(flash_duration);
digitalWrite(FLS_PIN, LOW);
}
scr.printNumI(47, 1, flash_duration, 1);
delay(750);
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment