#include <Arduino.h>
// ---------- 7seg Click (74HC595) ----------
#define DATA_PIN D3 // SDA / MOSI -> DS
#define CLOCK_PIN D4 // SCL / SCK -> SHCP
#define LATCH_PIN D5 // LT -> STCP
// Prototype (IMPORTANT)
void writeRegisters(uint16_t registers);
uint8_t digits[] = {
0b01111110, // 0
0b00001010, // 1
0b10110110, // 2
0b10011110, // 3
0b11001010, // 4
0b11011100, // 5
0b11111100, // 6
0b00001110, // 7
0b11111110, // 8
0b11011110 // 9
};
void display(uint8_t value)
{
uint8_t compteur_0;
uint8_t compteur_1;
compteur_1 = value / 10; // dizaines
compteur_0 = value % 10; // unités
uint16_t data = digits[compteur_0];
data <<= 8;
data |= digits[compteur_1];
writeRegisters(data);
}
void setup() {
pinMode(DATA_PIN, OUTPUT);
pinMode(CLOCK_PIN, OUTPUT);
pinMode(LATCH_PIN, OUTPUT);
}
uint8_t value = 0;
void loop() {
display(value);
delay(500);
value++;
if (value > 99) {
value = 0;
}
}
void writeRegisters(uint16_t registers)
{
digitalWrite(LATCH_PIN, LOW);
shiftOut(DATA_PIN, CLOCK_PIN, MSBFIRST, highByte(registers));
shiftOut(DATA_PIN, CLOCK_PIN, MSBFIRST, lowByte(registers));
digitalWrite(LATCH_PIN, HIGH);
}