Hallo
Ich bin absoluter Neueinsteiger was Arduino betrifft. Ich habe einen Mega 2560 und kleines Programm, indem eine LED solange leuchten soll, wie ein Taster betätigt ist:
int ledPin = 22;
int tasterPin = 24;
void setup(){
pinMode(ledPin,OUTPUT);
pinMode(tasterPin,INPUT);
}
void loop(){
if (digitalRead(tasterPin)==HIGH){
digitalWrite(ledPin, HIGH);
} else {
digitalWrite(ledPin, LOW);
}
}
Wenn ich den Taster los lasse, leuchtet die LED noch ca. 2 Sekunden nach. Wo mache ich hier was falsch. Delay-Zeiten gibt es nicht. Habe auch schon andere Ports verwendet, überall das gleiche.
Schon mal vielen Dank für eure Hilfe.
Mfg
computerpap
Du brauchst am Tasterpin einen Pulldown-Widerstand.
Hast du den bei dir angeschlossen?
10 kOhm vom Pin 24 auf GND.
Hallo
Der Pulldown-Widerstand war die Lösung. Kann mir mal jemand erklären, warum ich diesen Widerstand benötige?
Ohne Widerstand haben die Eingänge keinen definierten Wert, sie flowten.
Dadurch wissen die nicht ob high oder low gemeint ist. Liegt daran, da die Eingänge sehr hochohmig sind und zudem noch alle vorhandenen Störungen aufnehmen.
Einfacher wäre es, du verwendest interne Pullups, dann fragst du auf Low ab.
Da sparst du die externen Pulldown.
Einfacher wäre es, du verwendest interne Pullups, dann fragst du auf Low ab.
Da sparst du die externen Pulldown.
Wie funktioniert das? Kannst du mir das etwas genauer beschreiben?
computerpap:
Wie funktioniert das? Kannst du mir das etwas genauer beschreiben?
Das findest du hier beschrieben.
Einfach "pinMode(tasterpin, INPUT_PULLUP)" einsetzen.
Werd ich mir mal anschauen. Vielen Dank für die schnelle und ausführliche Hilfe.
Schönes WE!
computerpap:
Werd ich mir mal anschauen. Vielen Dank für die schnelle und ausführliche Hilfe.
Schönes WE!
Gerne, dir auch ein schönes WE.