1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 | #include “IRremote.hpp” byte Zahlen[6] = { B01100000, // 1 B11001101, // 2 B11101001, // 3 B01100011, // 4 B10101011, // 5 B10101111, // 6 }; int EmpfaengerPin = 11; int LAUTSPRECHER = 10; void setup() { // Pins auf OUTPUT setzen for (int i = 2; i <= 9; i++) { pinMode(i, OUTPUT); } IrReceiver.begin(EmpfaengerPin); // Zufallsgenerator starten Serial.begin(9600); randomSeed(analogRead(A0)); } void loop() { /* der Bereich der Zahlen 1 bis 6 als oberer Wert muss 7 angegeben werden, weil immer nach unten gerundet wird */ int Minimum = 1; int Maximum = 7; // Daten lesen -> beliebige Taste gedrückt if (IrReceiver.decode()) { /* printIRResultMinimal zeigt die verwendete Taste P = Protokoll C = Kommando in Hex auskommentiert lassen wenn die Tastencodes bekannt sind Serial.print(F(“P = Protokoll C = Taste hexadezimal: ”)); IrReceiver.printIRResultMinimal(&Serial); Serial.print(F(“ Dezimal: ”)); Serial.println(IrReceiver.decodedIRData.command); */ delay(100); // nächsten Wert lesen IrReceiver.resume(); // Würfeleffekt // in schneller Folge werden 10 Zufallszahlen angezeigt for (int i = 0; i < 10; i++) { // gewürfelte Zahl anzeigen byte Zahl = ZufallsZahl(Minimum, Maximum); delay(100); ZahlZeigen(Zahlen[Zahl - 1]); } tone(LAUTSPRECHER, 1000, 10); } } void ZahlZeigen(byte ArrayZahl) { // Bits des Arrays ArrayZahl prüfen // von Pin 2 bis Pin 9 durchlaufen 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 (Pins) richtig geschaltet */ if ((ArrayZahl & B10000000) != 0) digitalWrite(i, HIGH); else digitalWrite(i, LOW); ArrayZahl = ArrayZahl « 1; } } int ZufallsZahl(int Minimum, int Maximum) { int Zahl = random(Minimum, Maximum); return Zahl; } |
Letzte Aktualisierung: