Last active
June 29, 2021 10:33
-
-
Save unixfool/0f0d21b0ae6c1be0ed8761557d1c4c49 to your computer and use it in GitHub Desktop.
74HC595 And Segment Display
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 the LED digit patterns, from 0 - 9 | |
// 1 = LED on, 0 = LED off, in this order: | |
// 74HC595 pin Q0,Q1,Q2,Q3,Q4,Q5,Q6,Q7 | |
// Mapping to a,b,c,d,e,f,g of Seven-Segment LED | |
byte seven_seg_digits[10] = { B11111100, // = 0 | |
B01100000, // = 1 | |
B11011010, // = 2 | |
B11110010, // = 3 | |
B01100110, // = 4 | |
B10110110, // = 5 | |
B10111110, // = 6 | |
B11100000, // = 7 | |
B11111110, // = 8 | |
B11100110 // = 9 | |
}; | |
// connect to the ST_CP of 74HC595 (pin 3,latch pin) | |
int latchPin = 3; | |
// connect to the SH_CP of 74HC595 (pin 4, clock pin) | |
int clockPin = 4; | |
// connect to the DS of 74HC595 (pin 2) | |
int dataPin = 2; | |
void setup() { | |
// Set latchPin, clockPin, dataPin as output | |
pinMode(latchPin, OUTPUT); | |
pinMode(clockPin, OUTPUT); | |
pinMode(dataPin, OUTPUT); | |
} | |
// display a number on the digital segment display | |
void sevenSegWrite(byte digit) { | |
// set the latchPin to low potential, before sending data | |
digitalWrite(latchPin, LOW); | |
// the original data (bit pattern) | |
shiftOut(dataPin, clockPin, LSBFIRST, seven_seg_digits[digit]); | |
// set the latchPin to high potential, after sending data | |
digitalWrite(latchPin, HIGH); | |
} | |
void loop() { | |
// count from 9 to 0 | |
for (byte digit = 10; digit > 0; --digit) { | |
delay(1000); | |
sevenSegWrite(digit - 1); | |
} | |
// suspend 4 seconds | |
delay(3000); | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment