79 lines
1.7 KiB
Plaintext
79 lines
1.7 KiB
Plaintext
/* INFP Klassenarbeit 2025-01-17
|
|
* Aufgabe 1
|
|
* Ablaufsteuerung mit Ampel-LEDs
|
|
* Name: CWIKLA DANIEL
|
|
*/
|
|
|
|
const int LED_rot = 27, LED_gelb = 19, LED_gruen = 23;
|
|
enum Zustaende_t { off, stop, blink, go } Zustand;
|
|
|
|
const int Taster2 = 2, Taster4 = 4;
|
|
bool fTaster2, fTaster4, InTaster2, InTaster4, Merker2, Merker4;
|
|
bool rot, gelb, gruen;
|
|
|
|
void setup() {
|
|
pinMode(Taster2, INPUT);
|
|
pinMode(Taster4, INPUT);
|
|
pinMode(LED_rot, OUTPUT);
|
|
pinMode(LED_gelb, OUTPUT);
|
|
pinMode(LED_gruen, OUTPUT);
|
|
|
|
Serial.begin(115200);
|
|
Serial.println("DANIEL CWIKLA");
|
|
|
|
Zustand = off;
|
|
}
|
|
|
|
void loop() {
|
|
Einlesen();
|
|
Ablauf();
|
|
Ausgeben();
|
|
}
|
|
|
|
void Einlesen() {
|
|
InTaster2 = digitalRead(Taster2);
|
|
InTaster4 = digitalRead(Taster4);
|
|
|
|
fTaster2 = (InTaster2 == HIGH && Merker2 == LOW);
|
|
fTaster4 = (InTaster4 == HIGH && Merker4 == LOW);
|
|
|
|
Merker2 = InTaster2;
|
|
Merker4 = InTaster4;
|
|
}
|
|
|
|
void Ablauf() {
|
|
switch (Zustand) {
|
|
case off:
|
|
Serial.println("ZUSTAND: OFF");
|
|
if (fTaster2) Zustand = stop;
|
|
else if (fTaster4) Zustand = blink;
|
|
rot = false; gelb = false; gruen = false;
|
|
break;
|
|
|
|
case stop:
|
|
Serial.println("ZUSTAND: STOP");
|
|
if (fTaster2) Zustand = go;
|
|
rot = true; gelb = false; gruen = false;
|
|
break;
|
|
|
|
case go:
|
|
Serial.println("ZUSTAND: GO");
|
|
if (fTaster2) Zustand = stop;
|
|
else if (fTaster4) Zustand = off;
|
|
rot = false; gelb = false; gruen = true;
|
|
break;
|
|
|
|
case blink:
|
|
Serial.println("ZUSTAND: BLINK");
|
|
if (fTaster4) Zustand = off;
|
|
rot = false; gelb = true; gruen = false;
|
|
break;
|
|
}
|
|
}
|
|
|
|
void Ausgeben() {
|
|
digitalWrite(LED_rot, rot);
|
|
digitalWrite(LED_gelb, gelb);
|
|
digitalWrite(LED_gruen, gruen);
|
|
}
|