113 lines
2.5 KiB
C++
113 lines
2.5 KiB
C++
/* INFP Klassenarbeit 2025-01-17
|
|
* Aufgabe 1
|
|
* Ablaufsteuerung mit Ampel-LEDs
|
|
* Name: CWIKLA DANIEL
|
|
*/
|
|
|
|
// Pins für die Ampel-LEDs ergänzen
|
|
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, 5); // das funktioniert so
|
|
pinMode(Taster4, 5); // da muss man nix ändern...
|
|
pinMode(LED_rot, 3);
|
|
pinMode(LED_gelb, 3);
|
|
pinMode(LED_gruen, 3);
|
|
Serial.begin(115200);
|
|
Serial.println("DANIEL CWIKLA");
|
|
Zustand = off;
|
|
}
|
|
|
|
void loop( ) {
|
|
// Zeitsteuerung ergänzen
|
|
Einlesen( );
|
|
Ablauf( );
|
|
Ausgeben( );
|
|
}
|
|
|
|
// Aufgabe 1.1 Flankenerkennung ergänzen
|
|
void Einlesen( ) {
|
|
InTaster2 = digitalRead(Taster2);
|
|
InTaster4 = digitalRead(Taster4);
|
|
// wenn Flanke bei Taster 2 erkannt
|
|
if (InTaster2 == 1 && Merker2 == 0){
|
|
fTaster2 = true;
|
|
Serial.println("FLANKE fTaster 2 = true");
|
|
} else{
|
|
// ansonsten
|
|
fTaster2 = false;
|
|
Serial.println("FLANKE fTaster 2 = false");
|
|
}
|
|
Merker2 = InTaster2;
|
|
|
|
// wenn Flanke bei Taster 4 erkannt
|
|
if (InTaster4 == 1){
|
|
fTaster4 = true;
|
|
Serial.println("FLANKE fTaster 4 = true");
|
|
} else{
|
|
// ansonsten
|
|
fTaster4 = false;
|
|
Serial.println("FLANKE fTaster 4 = false");
|
|
}
|
|
Merker4 = InTaster4;
|
|
|
|
|
|
|
|
}
|
|
|
|
// Aufgabe 1.2 Ablauf fertigstellen
|
|
void Ablauf( ) {
|
|
// Zustand abfragen, Folgezustand zuweisen
|
|
switch(Zustand){
|
|
case off:
|
|
Serial.println("ZUSTAND: OFF");
|
|
if(fTaster2 == true) {
|
|
Zustand = stop;
|
|
} else if(fTaster4 == true){
|
|
Zustand = blink;
|
|
} else {
|
|
rot = false;
|
|
gelb = false;
|
|
gruen = false;
|
|
}
|
|
case stop:
|
|
Serial.println("ZUSTAND: STOP");
|
|
if(fTaster2 == true) {
|
|
Zustand = go;
|
|
} else {
|
|
rot = true;
|
|
gelb = false;
|
|
gruen = false;
|
|
}
|
|
case go:
|
|
Serial.println("ZUSTAND: GO");
|
|
if(fTaster2 == true) {Zustand = stop;}
|
|
else if (fTaster4 == true){ Zustand = off;
|
|
} else {
|
|
rot = false;
|
|
gelb = false;
|
|
gruen = true;
|
|
}
|
|
case blink:
|
|
Serial.println("ZUSTAND: BLINK");
|
|
if(fTaster4 == true) {Zustand = off;} else {
|
|
rot = false;
|
|
gelb = true;
|
|
gruen = false;
|
|
}
|
|
}
|
|
Ausgeben();
|
|
}
|
|
|
|
// ***** Ausgabewerte an die Pins rausschreiben
|
|
// hier nichts ändern oder ergänzen!
|
|
void Ausgeben() {
|
|
digitalWrite(LED_rot, rot);
|
|
digitalWrite(LED_gelb, gelb);
|
|
digitalWrite(LED_gruen, gruen);
|
|
} |