Anschschließen und Auswerten von Tastern/Microschaltern

Hallo und guten Abend liebe Arduino-Gemeinde,
ich bin Anfänger und neu hier. Habe jedoch mein erstes Arduino-Projekt erfolgreich hinter mich gebracht. Ich habe mir eine elektrische Fahrradschaltung für ein Piniongetriebe gebaut. In diesem Projekt habe ich jedoch einige Hürden erfahren müssen, die ich zwar über Umwege in den Griff bekommen habe, aber man hätte es bestimmt eleganter machen können. Es gibt also Optimierungspotential.
Meine erste Frage :slight_smile:
In der Schaltung sind 5 Microtaster verbaut. Ich habe sie alle als Schließer angeschlossen und einen Anschluss des Tasters auf +3,3V gelegt. Den anderen Anschluss habe ich mit einem 10kOhm Widerstand nach GND geerdet.
Das ist bei 5 Schaltern und dem minimalen Platz, der zur Verfügung steht, ein ganz schöner Kabelsalat.

Ich habe aber in Chats gelesen, dass man unter Umständen auf die WIderstände (Pull-down) verzichten kann, wenn man die Schalter nicht auf einen Pluspol legt, sondern sie irgendwie anders anschließt. Vielleicht als Öffner ? Kann man dann auf die externen Widerstände verzichten ? Ich habe auch gehört, dass der Arduino schon interne Widerstände für diese Zwecke eingebaut hat.
Wenn mir jemand die verschiedenen Ascnhlussmöglichkeiten von Tastern auch in Verbindung mit der Bounce2 - Library erläutern könnte, wäre ich sehr dankbar.
Gruß Dirk

Hallo dirk1492,

hier kommt eine sehr gute Übersicht für den Anschluß von Komponeten an den Arduino.

Im IDE findest du ein Beispiel zum Entprellen der Taster.

Viel Spass beim Basteln und programmieren in C++.

Hallo Paul,
das ist wirklich super ! Natürlich habe ich die schlechteste aller Varianten erwischt ;-(
Also fast ! Ich habe meine Taster nicht an 5 V , sondern an 3,3 V angeschlossen. Trotzdem nicht gut.
Ich werde die nächste Schaltung definitiv mit S3 verdrahten.
Gruß Dirk

Hallo Paul,
ich würde noch kurz erklären, wie ich Variante S3 verstehe, damit ich etwas mehr Sicherheit bekomme.
Bei S3 ist der Schalter ein Öffner. Im Ruhezustand fließt also über den internen 20-50kOhm Widerstand ständig ein minimaler Strom. Das kann der Arduino erkennen und setzt den Digitaleingang auf HIGH.
Wird der Taster betätigt, unterbricht er den Stromkreis und der Stromfluss stoppt.
Auch das erkennt der Digitaleingang und gibt ein LOW zurück.
Gruß DIrk

Das sind alles Schliesser, die GND an den Arduino-Pin legen, wenn sie betätigt werden.

Mit

buttonState = !digitalRead(ButtonPin);

wird der ButtonState == HIGH, wenn der Taster betätigt wird.

Einfach mal ausprobieren.

Aha ! Ok, hab ich verstanden. Dank dir !

und nicht vergessen in der setup() Funktion:

pinMode (ButtonPin,INPUT_PULLUP);

zu programmieren.

Hallo Paul,
ja, den Befehl werde ich verwenden. Aber ich glaube, wenn ich bei S3 den Taster betätige bzw. schließe, dann wechselt das Signal von HIGH auf LOW, oder ?
Im Schema steht oben in grüner Schrift: Goes LOW an push.
Gruß Dirk

Dieses Verdrahtungsprinzip lässt sich ja sehr leicht ändern. Die jetzige 5V-Sammelleitung, welche sich auf die einzelnen Schalter verteilt, brauche ich nur auf GND legen. Und die 5 externen PullDown Widerstände entfallen.
Das gefällt mir sehr !

Ah....Ich glaube das Ausrufezeichen vor dem "digitalRead" dreht die Logik um !
Dann ist es so, wie du es beschrieben hast. Dann gibt's ein HIGH, wenn man den Taster drückt.

This topic was automatically closed 180 days after the last reply. New replies are no longer allowed.