Skip to content

Instantly share code, notes, and snippets.

@karagenit
Last active November 17, 2017 17:17
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save karagenit/1688127c68e27c59760208f8379c35be to your computer and use it in GitHub Desktop.
Save karagenit/1688127c68e27c59760208f8379c35be to your computer and use it in GitHub Desktop.
#define OUT_A 0
#define OUT_B 1
#define OUT_C 2
#define OUT_D 3
#define SEG_G 4
#define DRIVER_ENABLE 5
#define DISP_DASH -1
#define DISP_BLANK -2
int numbers[] = {0, 6, DISP_DASH, 1, 3, DISP_DASH, 0, 0, DISP_BLANK};
int index = 0;
void setup() {
pinMode(OUT_A, OUTPUT);
pinMode(OUT_B, OUTPUT);
pinMode(OUT_C, OUTPUT);
pinMode(OUT_D, OUTPUT);
pinMode(SEG_G, OUTPUT);
pinMode(DRIVER_ENABLE, OUTPUT);
}
void loop() {
if(index >= (sizeof(numbers)/sizeof(int))) {
index = 0;
}
switch(numbers[index]) {
case DISP_DASH:
segDash();
break;
case DISP_BLANK:
segBlank();
break;
default:
segWrite(numbers[index]);
break;
}
index++;
delay(1000);
}
void segDash() {
digitalWrite(DRIVER_ENABLE, LOW);
digitalWrite(SEG_G, LOW); //OUTPUT ON LOW
digitalWrite(OUT_A, 0);
digitalWrite(OUT_B, 0);
digitalWrite(OUT_C, 0);
digitalWrite(OUT_D, 0);
}
void segWrite(int number) {
digitalWrite(DRIVER_ENABLE, HIGH);
digitalWrite(SEG_G, HIGH); //OUTPUT ON LOW
digitalWrite(OUT_A, number & 0b0001);
digitalWrite(OUT_B, number & 0b0010);
digitalWrite(OUT_C, number & 0b0100);
digitalWrite(OUT_D, number & 0b1000);
}
void segBlank() {
digitalWrite(DRIVER_ENABLE, LOW);
digitalWrite(SEG_G, HIGH); //OUTPUT ON LOW
digitalWrite(OUT_A, LOW);
digitalWrite(OUT_B, LOW);
digitalWrite(OUT_C, LOW);
digitalWrite(OUT_D, LOW);
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment