This commit is contained in:
danielvici123
2025-02-06 11:03:28 +01:00
4 changed files with 263 additions and 0 deletions

View File

@@ -0,0 +1,78 @@
/* 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);
}

View File

@@ -0,0 +1,113 @@
/* 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);
}

View File

@@ -0,0 +1,36 @@
/* INFP Klassenarbeit 2025-01-17
* Aufgabe 2
* Grüne LED mit PWM dimmen
* Name: CWIKLA DANIEL
*/
const int Taster2 = 2, Taster4 = 4, LED_gruen = 33;
unsigned long currentMillis, lastMillis;
float fiftypercent = 511;
void setup( ) {
ledcAttach(LED_gruen, 125, 10); // PWM für grüne LED konfigurieren
pinMode(Taster2, 5); // das funktioniert so
pinMode(Taster4, 5); // da muss man nix ändern...
// PWM Anfangswert für 50%
ledcWrite(LED_gruen, 0);
}
void loop( ) {
// Zeitsteuerung ergänzen
currentMillis = millis();
if (currentMillis - lastMillis >= 200){
// Taster2 gedrückt: Wert um 100 erhöhen
if (digitalRead(Taster2) == HIGH){
fiftypercent += 100;
}
// Taster4 gedrückt: Wert um 100 verringern
if (digitalRead(Taster4) == HIGH){
fiftypercent -= 100;
}
fiftypercent = constrain(aktueller_pwm, 0, 1023);
ledcWrite(LED_gruen, fiftypercent);
lastMillis = currentMillis;
}
}

View File

@@ -0,0 +1,36 @@
/* INFP Klassenarbeit 2025-01-17
* Aufgabe 2
* Grüne LED mit PWM dimmen
* Name: CWIKLA DANIEL
*/
const int Taster2 = 2, Taster4 = 4, LED_gruen = 23;
float fiftypercent = 0;
void setup( ) {
// PWM für grüne LED konfigurieren
//freq. noch bearbeiten
ledcAttach(LED_gruen, 8, 10);
pinMode(Taster2, 5); // das funktioniert so
pinMode(Taster4, 5); // da muss man nix ändern...
// PWM Anfangswert für 50%
Serial.println(2**10);
}
void loop( ) {
// Zeitsteuerung ergänzen
// Taster2 gedrückt: Wert um 100 erhöhen
// Taster4 gedrückt: Wert um 100 verringern
}