byte Zahlen[10] =
{
B11101011, // 9
B11101111, // 8
B11100000, // 7
B10101111, // 6
B10101011, // 5
B01100011, // 4
B11101001, // 3
B11001101, // 2
B01100000, // 1
B11101110, // 0
};
int TASTER = 13;
int LAUTSPRECHER = 10;
int Minimum = 500;
int Maximum = 2000;
void setup()
{
// Pins auf OUTPUT setzen
for (int i = 2; i <= 9; i++)
{
pinMode(i, OUTPUT);
}
Serial.begin(9600);
pinMode(TASTER, INPUT_PULLUP);
// Zufallsgenerator starten
randomSeed(analogRead(A0));
// A (B11100111) anzeigen
ZahlZeigen(B11100111);
}
void loop()
{
int TasterLesen = digitalRead(TASTER);
if (!TasterLesen)
{
for (int i = 0; i <= sizeof(Zahlen) - 1; i++)
{
// aktuelles Array i (Zahlen als Bytes) an Funktion ZahlZeigen übergeben
ZahlZeigen(Zahlen[i]);
tone(LAUTSPRECHER, 1000, 10);
delay(1000);
}
// Countdown abgelaufen
// zufällige Tonfolge spielen
for (int i = 0; i < 10; i++)
{
tone(LAUTSPRECHER, random(Minimum, Maximum), 500);
delay(200);
}
// A (B11100111) anzeigen
ZahlZeigen(B11100111);
}
}
void ZahlZeigen(byte ArrayZahl)
{
// aktuelles Byte anzeigen
Serial.println(ArrayZahl, BIN);
// Bits des Arrays ArrayZahl prüfen
for (int i = 2; i <= 9; i++)
{
/*
vergleicht das Byte ArrayZahl mit dem Byte B10000000
befindet sich an beiden Positionen eine 1
das Ergebnis der Prüfung ist also nicht 0
-> Segment einschalten
ist eine der Positionen eine 0
das Ergebnis der Prüfung ist 0
-> Segment ausschalten
1 Bit nach links schieben -> nächstes Bit prüfen
nach 8 Durchläufen sind alle Segmente richtig geschaltet
*/
if ((ArrayZahl & B10000000) != 0) digitalWrite(i, HIGH);
else digitalWrite(i, LOW);
ArrayZahl = ArrayZahl << 1;
}
}
Letzte Aktualisierung: