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 | enum Ampel { // Startwert festlegen ROT = 5, GELB, GRUEN }; /* wenn der Sensor zur y‑Achse zeigt letztes Signal rot -> ROTGELB = true -> Ampel zeigt rot und gelb letztes Signal grün -> ROTGELB = false -> Ampel zeigt nur gelb */ bool ROTGELB = true; void setup() { for (int i = ROT; i <= GRUEN; i++) { pinMode(i, OUTPUT); } Serial.begin(9600); } void loop() { // analoge Eingänge lesen int xAchse = analogRead(A0); int yAchse = analogRead(A1); int zAchse = analogRead(A2); // Sensor zeigt auf die x‑Achse -> Ampel rot, ROTGELB = true if (xAchse > 400) { digitalWrite(GELB, LOW); digitalWrite(GRUEN, LOW); digitalWrite(ROT, HIGH); ROTGELB = true; } // Sensor zeigt auf die y‑Achse // wenn ROTGELB = false -> nur die gelbe LED leuchtet if (yAchse > 400 && !ROTGELB) { digitalWrite(GRUEN, LOW); digitalWrite(ROT, LOW); digitalWrite(GELB, HIGH); } // wenn ROTGELB = true -> die rote und die gelbe LED leuchten if (yAchse > 400 && ROTGELB) { digitalWrite(GRUEN, LOW); digitalWrite(ROT, HIGH); digitalWrite(GELB, HIGH); } /* Sensor zeigt auf die z‑Achse ROTGELB muss auf false gesetzt werden, damit bei Aktivierung des y‑Achse nur die gelbe LED leuchtet */ if (zAchse > 400 ) { digitalWrite(ROT, LOW); digitalWrite(GELB, LOW); digitalWrite(GRUEN, HIGH); ROTGELB = false; } delay(20); } |
Letzte Aktualisierung: