ich habe seit ca. 2 Wochen einen Arduino Leonardo mit dem ich schon viele Projekte erfolgreich abgeschlossen habe. Bei meinem aktuellen Projekt versuche ich mit 4 an die Pins 2,4,7 und 8 angeschlossenen Pushbuttons Eingaben der Tastatur zu simulieren. Dies hat genau mit der aktuellen Schaltung und dem Sketch auch schon super funktioniert. Auf einmal jedoch geben die genannten Pins jedoch fast dauerhaft ein HIGH aus. Selbst nachdem ich die gesamte Schaltung abgebaut habe und nichts mehr an den Pins angeschlossen habe ist dies der Fall.
Ich würde mich sehr freuen wenn mir jemand schnell helfen könnte oder mir nur einen Tipp geben könnte damit ich selber weiter recherchieren kann.
rhein7:
Ich würde mich sehr freuen wenn mir jemand schnell helfen könnte oder mir nur einen Tipp geben könnte damit ich selber weiter recherchieren kann.
Wie sollen wir helfen, wenn wir weder Schaltung noch Sketch von dir kennen.
Im Wahrsagen bin ich einfach schlecht.
Pins nicht richtig definiert, im Setup als Eingang.
Keine Pullup bzw. Pulldownwiderstände vorhanden.
dadurch wird zumindest der interne Pullup eingeschalten und der Pin ist nicht mehr so ganz empfindlich.
Offene Pins, ohne irgendeine Beschaltung, sind sehr empfänglich für Störungen.
Okay, das Schaltbild hatte ich komplett übersehen, mein Fehler. Ob es aber tatsächlich so aufgebaut wurde? Alle Anzeichen deuten auf einen unbeschalteten Eingang hin. Kann mir nicht vorstellen, dass mit einem nicht funktionierenden Pin oder gar Port dieses Fehlerbild auftritt, wenn extern ein Widerstand den Pin auf Masse zieht.
sth77:
Okay, das Schaltbild hatte ich komplett übersehen, mein Fehler. Ob es aber tatsächlich so aufgebaut wurde? Alle Anzeichen deuten auf einen unbeschalteten Eingang hin. Kann mir nicht vorstellen, dass mit einem nicht funktionierenden Pin oder gar Port dieses Fehlerbild auftritt, wenn extern ein Widerstand den Pin auf Masse zieht.
Bestimmte Annahmen müssen wir treffen, da man ansonsten alles in Zweifel ziehen muß. ICh nehme mal an daß die aufgebaute Schaltung dem Bild entspricht.
Ich gebe Dir recht daß man bei der Fehlerbeschreibung auf fehlende Pullup/Pulldown-Widerstände denkt.
Grüße Uwe
Ich würde trotzdem mal die interen Pullup anschalten. Es gibt viele Einflüsse, wie z.B. schlechte Kontakte im Steckbrett, gebrochene Leitungen etc. Wenn der interen Pullup an ist, dann hat man zumindest keinen floatenden Eingang.
Hallo,
vielen Dank erstmal für die vielen Antworten!
Ich habe jetzt alle Pins als INPUT_PULLUP definiert und dann abgefragt ob die Pins LOW sind, sodass dieser Code entsteht:
#include <Keyboard.h>
// Pins der Buttons
const int button1Pin = 2;
const int button2Pin = 4;
const int button3Pin = 7;
const int button4Pin = 8;
void setup() {
// Festlegen der Pins als INPUT
pinMode(button1Pin, INPUT_PULLUP);
pinMode(button2Pin, INPUT_PULLUP);
pinMode(button3Pin, INPUT_PULLUP);
pinMode(button4Pin, INPUT_PULLUP);
Keyboard.begin();
}
void loop() {
if (digitalRead(button1Pin) == LOW) { //Wenn Button 1 gedrückt wird
Keyboard.write('a');
delay(100);
Keyboard.write(KEY_RETURN);
delay(1000);
}
if (digitalRead(button2Pin) == LOW) { //Wenn Button 2 gedrückt wird
Keyboard.write('b');
delay(100);
Keyboard.write(KEY_RETURN);
delay(1000);
}
if (digitalRead(button3Pin) == LOW) { //Wenn Button 3 gedrückt wird
Keyboard.write('k');
delay(100);
Keyboard.write(KEY_RETURN);
delay(1000);
}
if (digitalRead(button4Pin) == LOW) { //Wenn Button 4 gedrückt wird
Keyboard.write(KEY_RETURN);
delay(1000);
}
}
Dies funktioniert auch ohne Probleme!
Jedoch frage ich mich warum die andere Lösung mit der Abfrage nach HIGH immer funktioniert hat und jetzt aufeinmal nicht mehr.
Auf jeden Fall kann ich jetzt erstmal weiter "basteln".
Jedoch frage ich mich warum die andere Lösung mit der Abfrage nach HIGH immer funktioniert hat und jetzt aufeinmal nicht mehr.
Die genaue Ursache kann ich dir nicht liefern...
Aber die tiefere Schicht des Problems. (evtl)
Wenn du gewusst hättest, wo das Problem ist, hättest du hier nicht fragen müssen.
Du hast uns alles gezeigt, wo du das Problem vermutest.
Wäre es da, dann hättest du, oder wir, es gefunden.
Das Problem steckt da wo du es nicht vermutest.
Darum hast du uns auch nicht die fehlerhafte Stelle gezeigt.
Darum weißt du (so wie wir) auch immer noch nicht, wo es geklemmt hat.
Tipp:
Der (gefundene) Fehler steckt immer da, wo man zuletzt gesucht hat.
Und die schönsten Fehler stecken in den Bereichen, wo man sich zu 100% sicher ist, dass sie da nicht stecken können.