Kann jemand mir helfen bei Arduino?
Im folgenden soll ausgewertet werden, ob der Taster kurz oder lang (> 1,5 Sekunden) betätigt wird.
Bei Programmstart sind alle LEDs aus.
Wenn der Taster an GPIO13 kurz betätigt wird, soll die rote LED an GPIO19 leuchten,
bei langem Tastendruck (> 1,5 Sekunden) leuchtet die grüne LED an GPIO21.
Nach 5 Sekunden geht die LED wieder aus und das Programm beginnt von vorne.
- Erstelle hierzu einen Programmablaufplan (PAP).
- Programmiere den Mikrocontroller entsprechend deines PAPs und kontrolliere die Funktion.
1 Antwort
zu 1.: Einfach den in der Aufgabenstellung beschriebenen Ablauf in grafischer Weise darstellen.
zu 2.: Folgendes Skript habe ich kurz geschrieben, aber nicht getestet. Sollte also hoffentlich funktionieren:
//Pins setzen
const int buttonPin = 13;
const int redLedPin = 19;
const int greenLedPin = 21;
void setup() {
pinMode(buttonPin, INPUT);
pinMode(redLedPin, OUTPUT);
pinMode(greenLedPin, OUTPUT);
}
void loop() {
// Warte auf Tasterbetätigung
while (digitalRead(buttonPin) == HIGH) {
delay(10);
}
// Taster betätigt
unsigned long startTime = millis();
while (digitalRead(buttonPin) == LOW) {
delay(10);
}
// Taster freigegeben
unsigned long endTime = millis();
unsigned long pressDuration = endTime - startTime;
if (pressDuration < 1500) {
// Kurzer Tastendruck
digitalWrite(redLedPin, HIGH);
delay(5000); // Warte 5 Sekunden
digitalWrite(redLedPin, LOW);
} else {
// Langer Tastendruck
digitalWrite(greenLedPin, HIGH);
delay(5000); // Warte 5 Sekunden
digitalWrite(greenLedPin, LOW);
}
}
Woher ich das weiß:Hobby