enum kann die Definition einer größeren Anzahl zusammen gehörender Konstanten vereinfachen. Dem ersten Element wird der Wert 0 zugeordnet, jedes weitere Element wird um 1 hochgezählt.
Beispiel
Wochentage als Aufzählung.
Das Programm rückt den Wochentag in der ⇒switch … case-Anweisung jeweils um eine Position nach vorne.
|
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 |
enum Wochentage { SONNTAG, MONTAG, DIENSTAG, MITTWOCH, DONNERSTAG, FREITAG, SAMSTAG, ENDE }; Wochentage aktuellerTag = SAMSTAG; void setup() { Serial.begin(9600); // auf serielle Verbindung warten while (!Serial); delay(1000); } void loop() { switch (aktuellerTag) { case SAMSTAG: Serial.println("Samstag"); aktuellerTag = SONNTAG; break; case SONNTAG: Serial.println("Sonntag"); aktuellerTag = MONTAG; break; case MONTAG: Serial.println("Montag"); aktuellerTag = DIENSTAG; break; case DIENSTAG: Serial.println("Dienstag"); aktuellerTag = MITTWOCH; break; case MITTWOCH: Serial.println("Mittwoch"); aktuellerTag = DONNERSTAG; break; case DONNERSTAG: Serial.println("Donnerstag"); aktuellerTag = FREITAG; break; case FREITAG: Serial.println("Freitag"); aktuellerTag = ENDE; break; } } |

Beispiel
Lauflicht

|
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 |
enum Farben { GRUEN = 3, WEISS, ROT, BLAU, GELB }; void setup() { // pinMode: Startwert ⇒ GRUEN, Endwert ⇒ GELB for (int i = GRUEN; i <= GELB; i++) { pinMode(i, OUTPUT); } } void loop() { for (int i = GRUEN; i <= GELB; i++) { // aktuelle LED i einschalten digitalWrite(i, HIGH); delay(200); // aktuelle LED i ausschalten digitalWrite(i, LOW); } } |
Beispiel
Wechselblinker

|
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 |
enum LED { // Startwert festlegen ROT = 6, GELB }; unsigned long vorherigeZeit = 0; const long Dauer = 1000; // Definition der Zustände enum Zustand { ROT_AN, GELB_AN }; // Ausgangszustand -> LED1 eingeschaltet Zustand aktuellerZustand = ROT_AN; void setup() { pinMode(ROT, OUTPUT); pinMode(GELB, OUTPUT); } void loop() { unsigned long aktuelleZeit = millis(); // Wechsel der Zustände nach Ablauf von Dauer if (aktuelleZeit - vorherigeZeit >= Dauer) { vorherigeZeit = aktuelleZeit; /* aktuellen Zustand wechseln wenn ROT an -> GELB an wenn GELB an -> ROT an */ switch (aktuellerZustand) { case ROT_AN: aktuellerZustand = GELB_AN; break; case GELB_AN: aktuellerZustand = ROT_AN; break; } } // LEDs schalten je nach jeweiligen Zustand switch (aktuellerZustand) { case ROT_AN: digitalWrite(ROT, HIGH); digitalWrite(GELB, LOW); break; case GELB_AN: digitalWrite(ROT, LOW); digitalWrite(GELB, HIGH); break; } } |
Letzte Aktualisierung: