Go Down

Topic: Verkabelung eines Schalters. (Read 723 times) previous topic - next topic

Profiler64

Jan 05, 2019, 07:04 pm Last Edit: Jan 05, 2019, 07:04 pm by Profiler64
Ich möchte einen Drehschalter mit zwei Positionen an einen Arduino Uno anschließen.
Der Schalter soll an zwei Digitalepins angeschlossen werden.

Bei HIGH soll eine Aktion ausgelöst werden und bei LOW auch. Und das für zwei Schaltpositionen.
Das programmieren ist an sich kein Problem.
Allerdings hab ich vergessen wie man das richtig anklemmt.


Bild meines Schemas befindet sich im Anhang


Es funktioniert auch. Nur frage ich mich ob es längerfristig zu Problemen kommt.
Kann ich auch ein 100k Resistor nehmen.

Ich würde mich freuen wenn mich jemand aufklären kann.
 :)

SpaghettiCode

#1
Jan 05, 2019, 07:29 pm Last Edit: Jan 05, 2019, 07:32 pm by SpaghettiCode
Hi,

beim Arduino schaltet man üblicherwese gegen GND (-), da Du interne PullUp-Widerstände im Arduino einschalten kannst.
Das heißt beim betätigen schaltest Du von High nach Low.

https://playground.arduino.cc/Deutsch/Eingang

Gruß André

Tommy56

Es funktioniert auch. Nur frage ich mich ob es längerfristig zu Problemen kommt.
Kann ich auch ein 100k Resistor nehmen.
Was sollte da zu Problemen führen? 10 kOhm ist für den Anfang ok, wenn die Leitungen nicht zu lang sind. Sonst musst Du weiter runter gehen. 100 kOhm halte ich für zuviel, weil dann evtl. schon zu viele Störungen mitspielen wollen.

Gruß Tommy
"Wer den schnellen Erfolg sucht, sollte nicht programmieren, sondern Holz hacken." (Quelle unbekannt)

agmue

Wenn Du INPUT_PULLUP verwendest, dreht sich die Logik um, denn gedrückt ist dann LOW. Da Du aber beide Zustände abfragen möchtest, ist es egal.

Ich lege Dir Tastenentprellung und Flankenauswertung nahe.

Das programmieren ist an sich kein Problem.
Warten wir mal ab, ob Dir Deine Erfahrung nicht hinderlich im Weg steht. Bei mir war es so.
Die Vorstellungskraft ist wichtiger als Wissen, denn Wissen ist begrenzt. (Albert Einstein)

postmaster-ino

Hi

Was meinst Du mit 'Bei HIGH und bei LOW auch'?
Wenn's beide Male die gleiche Aktion sein darf, brauchst Du weder einen Arduino, noch einen Schalter - nur die Aktion ;)

Du solltest also 'etwas' genauer beschreiben, was Dein Anliegen ist - gerne so, als ob Dein Gegenüber von Deinem Projekt ABSOLUT NICHTS weiß - und: in der Tat ist mir Dein Projekt völlig fremd!

MfG
Dein Problem, Dein Sketch, Deine Bilder.
Ob ich ohne Diese an Deinem Problem arbeiten will, entscheide aber immer noch ich.
Große Buchstaben? Immer wieder, neben Punkt und Komma, gerne gesehen.

HotSystems

Ich tippe auf eine Flankenauswertung, die hier gebraucht wird.
Gruß Dieter

I2C = weniger ist mehr: weniger Kabel, mehr Probleme. 8)

Profiler64

Hi,

beim Arduino schaltet man üblicherwese gegen GND (-), da Du interne PullUp-Widerstände im Arduino einschalten kannst.
Das heißt beim betätigen schaltest Du von High nach Low.

https://playground.arduino.cc/Deutsch/Eingang

Gruß André
Ok, gibt es jetzt Probleme wenn ich es anders rum mache? :)  Als Reaktion auf das Betätigen des Drehschalters wird auf einem OLED Display etwas angezeigt.


Was sollte da zu Problemen führen? 10 kOhm ist für den Anfang ok, wenn die Leitungen nicht zu lang sind. Sonst musst Du weiter runter gehen. 100 kOhm halte ich für zuviel, weil dann evtl. schon zu viele Störungen mitspielen wollen.

Gruß Tommy
Ja ich es geht lediglich um circa 10cm lange Kabel. Hab halt momentan nur noch 100k da. Dann werd ich nochmal welche besorgen.

Wenn Du INPUT_PULLUP verwendest, dreht sich die Logik um, denn gedrückt ist dann LOW. Da Du aber beide Zustände abfragen möchtest, ist es egal.

Ich lege Dir Tastenentprellung und Flankenauswertung nahe.
Warten wir mal ab, ob Dir Deine Erfahrung nicht hinderlich im Weg steht. Bei mir war es so.

Ich hab den Pinmode normal als Input festgelegt. Wie gesagt es funktioniert ja bereits. Ich war mir lediglich nicht sicher was denn nun der richtige Wert für den Wiederstand ist.

Hi

Was meinst Du mit 'Bei HIGH und bei LOW auch'?
Wenn's beide Male die gleiche Aktion sein darf, brauchst Du weder einen Arduino, noch einen Schalter - nur die Aktion ;)

Du solltest also 'etwas' genauer beschreiben, was Dein Anliegen ist - gerne so, als ob Dein Gegenüber von Deinem Projekt ABSOLUT NICHTS weiß - und: in der Tat ist mir Dein Projekt völlig fremd!

MfG
Ok Also ich habe ein Drehschalter der drei Positionen hat ( Auto, Null, Ein).

Bei Null schaltet der schalter auch nicht. Bei den beiden Inputs hab ich 5V anliegen. Wenn man auf Auto stellt kommen die 5V an dem einen Ausgang raus und wenn man auf Ein stellt bei dem anderen.

Ich hab es so programmiert dass wenn der Schalter auf Auto steht, in einem OLED-Display "Modus: Auto" angezeigt wird. Ebenso wird dann die automatische Regelung von einem Servo aktiviert (aber das ist eine andere Geschichte). Auf "Ein" soll auf dem OLED-Display "Modus: An" stehen. Ebenso wird der Servo auf die höchste Einstellung gestellt.
Bei Null soll auf dem OLED "Modus: Aus" stehen, und der Servo auf die niedrigeste Position.

Programmiert hab ich das ungefähr so:
if (buttonState == HIGH) {   //für die erste Schaltposition (Auto)

...

if (secbuttonState == HIGH){  //für die zweite Schaltposition (Ein)

...

if (secbuttonState == LOW) {
  if (buttonState == LOW){ 

...


Und so hab ich die Null-Position programmiert.

Wahrscheinlich werde ich gleich gesteinigt, weil das dumm programmiert ist. Aber hey es funktioniert :) .
Und ich lerne ja noch.



Tommy56

Kürzer, aber ohne Steinigung ;)
Code: [Select]

if (buttonState == LOW && secbuttonState == LOW)
// noch kürzer
if (!buttonState && !secbuttonState)


Gruß Tommy
"Wer den schnellen Erfolg sucht, sollte nicht programmieren, sondern Holz hacken." (Quelle unbekannt)

Profiler64

Kürzer, aber ohne Steinigung ;)
Code: [Select]

if (buttonState == LOW && secbuttonState == LOW)
// noch kürzer
if (!buttonState && !secbuttonState)


Gruß Tommy
Danke fürnden Tipp, hab das schon mal bei anderen Codes gesehen. Top

agmue

Ok, gibt es jetzt Probleme wenn ich es anders rum mache? :) 
Nein, wenn es funktioniert, ist es gut.

Hab halt momentan nur noch 100k da.
Für den Fall, es wäre notwendig, kannst Du auch vier 100k parallel schalten, ergibt 25k.
Die Vorstellungskraft ist wichtiger als Wissen, denn Wissen ist begrenzt. (Albert Einstein)

Profiler64

Für den Fall, es wäre notwendig, kannst Du auch vier 100k parallel schalten, ergibt 25k.

Gute Idee! Aber da ich mir gerade eine Platine designed hab und die bald ätzen möchte, werde ich mir noch ein paar 10K Wiederstände besorgen.

Danke an alle für ihre Hilfe und Antworten.

ElEspanol

werde ich mir noch ein paar 10K Wiederstände besorgen..
Wenn du noch öfter was mit Elektronik machen willst, bestell dir lieber gleich ein Widerstandssortiment beim fC. Da bekommst du Hunderte mit allen gängigen Werten für 3-4€.

Go Up