56 lines
1.7 KiB
Arduino
56 lines
1.7 KiB
Arduino
|
//www.elegoo.com
|
||
|
//2016.12.12
|
||
|
|
||
|
// 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);
|
||
|
}
|