/* 74HC595 Schieberegister mit 7SEG - Zählt 0..9
PIN-Belegung 74HC595:
DS: serieller Dateneingang, ESP-Pin19
SHCP: Schiebetakt, ESP-Pin18
STCP: HIGH = Übernahme vom SHR ins Ausgangs-Latch, ESP-Pin5
*/
const byte latchPin = 5;
const byte clockPin = 18;
const byte dataPin = 19;
// Muster für: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9
int datArray[16] = {0xFC,0x60,0xDA,0xF2,0x66,0xB6,0xBE,0xE0,0xFE,0xF6};
byte zahl, temp;
void setup ()
{
pinMode(latchPin, OUTPUT);
pinMode(clockPin, OUTPUT);
pinMode(dataPin, OUTPUT);
zahl = 0;
}
void loop()
{
digitalWrite(latchPin, LOW); // Ausgangslatch speichert,
temp = datArray[zahl]; // Der Inhalt des Arrays >>> temp
for(byte i = 8; i > 0; i--) // Schleife wird 8 mal durchlaufen
{
if(temp > 127) digitalWrite(dataPin, HIGH); // prüft ob MSB auf 1
else digitalWrite(dataPin, LOW); // wenn ja, wird DATAin = 1
// wenn nicht ist DATAin = 0
digitalWrite(clockPin, HIGH); // Mit Taktimpuls geht DATAin
digitalWrite(clockPin, LOW); // Wert ins SHR
temp = temp << 1; // nächste Stelle fokusieren
}
digitalWrite(latchPin, HIGH); // Latch gibt SHR-Werte an LEDs
delay(1000);
zahl++; // die nächste Zahl auswählen
if(zahl == 10) zahl = 0;
}