#define dataPin 0
#define latchPin 1
#define clockPin 2
#define t 300
const uint16_t pattern[17] = {
0b0000000000000000, // 0 blank
0b1000000000000000, // 1
0b0100000000000000, // 2
0b0010000000000000, // 3
0b0001000000000000, // 4
0b0000100000000000, // 5
0b0000010000000000, // 6
0b0000001000000000, // 7
0b0000000100000000, // 8
0b0000000010000000, // 9
0b0000000001000000, // 10
0b0000000000100000, // 11
0b0000000000010000, // 12
0b0000000000001000, // 13
0b0000000000000100, // 14
0b0000000000000010, // 15
0b0000000000000001 // 16
};
void setup() {
pinMode(latchPin, OUTPUT);
pinMode(dataPin, OUTPUT);
pinMode(clockPin, OUTPUT);
}
void displayDigit(uint16_t d) {
digitalWrite(latchPin, LOW);
shiftOut(dataPin, clockPin, LSBFIRST, lowByte(pattern[d]));
shiftOut(dataPin, clockPin, LSBFIRST, highByte(pattern[d]));
// shiftOut(dataPin, clockPin, LSBFIRST, lowByte(d));
// shiftOut(dataPin, clockPin, LSBFIRST, highByte(d));
digitalWrite(latchPin, HIGH);
}
void loop() {
for (uint8_t d = 1; d < 17; d++) {
displayDigit(d);
delay(t);
}
for (uint8_t d = 15; d >= 2; d--) {
displayDigit(d);
delay(t);
}
// for (uint16_t d = 0; d <= 0xFFFF; d++) {
// displayDigit(d);
// delay(t);
// }
}