Last active
November 17, 2017 17:17
-
-
Save karagenit/1688127c68e27c59760208f8379c35be to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#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