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!
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.
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
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
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.