Freundliches Hallo in die Runde, ich bin neu hier und hoffe auf Hilfe.
Mit diesem Programm aus den ARDUNIO Beispielen bin ich angefangen:
const int buttonPin = 2;
const int ledPin = 12;
int buttonState = 0;
void setup() {
pinMode(ledPin, OUTPUT);
pinMode(buttonPin, INPUT);
}
void loop(){
buttonState = digitalRead(buttonPin);
if (buttonState == HIGH) {
digitalWrite(ledPin, HIGH);
}
else {
digitalWrite(ledPin, LOW);
}
}
Merkwürdigerweise geht die LED an Pin 12 nur mit einer Verzögerung von
ca. 2..3 Sekunden aus, wenn ich die 5V am Eingang Pin 2 wegnehme. Ich
habe
auch schon andere Varianten zur Programmierung mit digitalWrite
versucht, immer tritt diese Verzögerung auf. Hat jemand eine Idee warum
das so ist?
Vielen Dank für die Unterstützung vorab!
Gast
#4570912
Am Eingang fehlt der Pullup-Widerstand. Dadurch hält der Eingang seinen Pegel noch eine Weile. Mit pinMode(buttonPin, INPUT_PULLUP); schaltet man den Pullup ein.
Gast
#4570913
Legst du einfach +5V an Pin 2 an und ziehst das Kabel wieder ab? In dem Fall hättest du einen offenen CMOS-Eingang, der ladungen noch einige Zeit speichern kann, und so etwas länger noch ein "HIGH" liest. 2 einfache Vorschläge: 1.: Du beschaltest den Pin mit einem Pull-Down-Widerstand (z.B. 10 kOhm) zusätzlich zum Schalter. 2.: Du schreibt pinMode(buttonPin, INPUT_PULLUP) statt pinMode(buttonPin, INPUT) und ziehst den Pin gegen GND. Dann ist ein interner Pullup aktiviert, der den Eingang auf VCC läd, sobald ihn das Kabel nicht mehr gegen GND zieht. A.Dent
Gast
#4570915
A.Dent hat natürlich Recht.
Hallo A.Dent und Mario M.! Super, hätte ich auch selber merken können. Vielen Dank für die Hilfe und freundliche Grüße. Wilfried
Antwort schreiben
Bitte melde dich an, um einen Beitrag zu schreiben.