Last active
October 2, 2020 14:59
-
-
Save zuzkins/56e308764c99b2276c7d0008f1aea0d2 to your computer and use it in GitHub Desktop.
7 segment 4 digit led display test
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
ub/* | |
Showing number 0-9 on a Common Anode 7-segment LED display | |
Displays the numbers 0-9 on the display, with one second inbetween. | |
A | |
--- | |
F | | B | |
| G | | |
--- | |
E | | C | |
| | | |
--- | |
D | |
This example code is in the public domain. | |
*/ | |
// Pin 2-8 is connected to the 7 segments of the display. | |
int pin_A = 2; | |
int pin_B = 3; | |
int pin_C = 4; | |
int pin_D = 5; | |
int pin_E = 6; | |
int pin_F = 7; | |
int pin_G = 8; | |
int D1 = 9; | |
int D2 = 10; | |
int D3 = 11; | |
int D4 = 12; | |
int digits[] = { | |
B01111110, // 0 | |
B00110000, // 1 | |
B01101101, // 2 | |
B01111001, // 3 | |
B00110011, // 4 | |
B01011011, // 5 | |
B01011111, // 6 | |
B01110000, // 7 | |
B01111111, // 8 | |
B01111011, // 9 | |
}; | |
int digits_count = sizeof(digits)/sizeof(int); | |
int mask_A = B01000000; | |
int mask_B = B00100000; | |
int mask_C = B00010000; | |
int mask_D = B00001000; | |
int mask_E = B00000100; | |
int mask_F = B00000010; | |
int mask_G = B00000001; | |
// the setup routine runs once when you press reset: | |
void setup() { | |
// initialize the digital pins as outputs. | |
pinMode(pin_A, OUTPUT); | |
pinMode(pin_B, OUTPUT); | |
pinMode(pin_C, OUTPUT); | |
pinMode(pin_D, OUTPUT); | |
pinMode(pin_E, OUTPUT); | |
pinMode(pin_F, OUTPUT); | |
pinMode(pin_G, OUTPUT); | |
pinMode(D1, OUTPUT); | |
pinMode(D2, OUTPUT); | |
pinMode(D3, OUTPUT); | |
pinMode(D4, OUTPUT); | |
} | |
unsigned long cur_digit = 0; | |
unsigned long lastRender = millis(); | |
// the loop routine runs over and over again forever: | |
void loop() { | |
int digit = 0; | |
digit = digits[(cur_digit + 1) % digits_count]; | |
digitalWrite(D1, HIGH); | |
digitalWrite(D2, HIGH); | |
digitalWrite(D3, HIGH); | |
digitalWrite(D4, LOW); | |
digitalWrite(pin_A, digit & mask_A); | |
digitalWrite(pin_B, digit & mask_B); | |
digitalWrite(pin_C, digit & mask_C); | |
digitalWrite(pin_D, digit & mask_D); | |
digitalWrite(pin_E, digit & mask_E); | |
digitalWrite(pin_F, digit & mask_F); | |
digitalWrite(pin_G, digit & mask_G); | |
delay(5); | |
digit = digits[cur_digit]; | |
digitalWrite(D1, LOW); | |
digitalWrite(D2, LOW); | |
digitalWrite(D3, LOW); | |
digitalWrite(D4, HIGH); | |
digitalWrite(pin_A, digit & mask_A); | |
digitalWrite(pin_B, digit & mask_B); | |
digitalWrite(pin_C, digit & mask_C); | |
digitalWrite(pin_D, digit & mask_D); | |
digitalWrite(pin_E, digit & mask_E); | |
digitalWrite(pin_F, digit & mask_F); | |
digitalWrite(pin_G, digit & mask_G); | |
delay(5); | |
if ((millis() - lastRender) >= 500) { | |
lastRender = millis(); | |
cur_digit = ++cur_digit % digits_count; | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment