Kippschalter am Arduino

Hallo!

Ich habe folgendes vor:

mit einem Kippschalter (3 Positionen) möchte ich drei verschiedene Aktionen ausführen.

Was funktioniert nicht:
mit dem Kippschalter geht das Ganze irgendwie nicht (IRS-201, https://www.amazon.de/gp/product/B01ASY7TVU/ref=ppx_yo_dt_b_asin_title_o01_s00?ie=UTF8&psc=1)

Was funktioniert:
wenn ich normale Drucktaster statt dem Kippschalter einbaue, funktioniert alles tadellos. Als pulldown Widerstand verwende ich 10kOhm.

Kann es sein, dass der Kippschalter mit 15A/250V nicht mit 5V zu betreiben ist?

Vielen Dank
Martin

Ps.: Beispielcode

const int button_0 = 5;           
const int button_1 = 6;          
const int button_2 = 7;


const int led_0 = 9;         
const int led_1 = 10;
const int led_2 = 11;


int buttonState_0 = 1;          
int buttonState_1 = 1;          
int buttonState_2 = 1;  


void setup() {

pinMode(button_0, INPUT);
pinMode(button_1, INPUT);
pinMode(button_2, INPUT);


pinMode(led_0, OUTPUT);
pinMode(led_1, OUTPUT);
pinMode(led_2, OUTPUT);

}

void loop() {

buttonState_0 = digitalRead(button_0);
buttonState_1 = digitalRead(button_1);
buttonState_2 = digitalRead(button_2);

  
  if (buttonState_0 == HIGH ) {
     
     digitalWrite(led_0, HIGH);
        }
  else {
      digitalWrite(led_0, LOW);
  }
  
  if (buttonState_1 == HIGH ) {
     
     digitalWrite(led_1, HIGH);
        } 
     else {
      digitalWrite(led_1, LOW);
  }
  
  if (buttonState_2 == HIGH ) {
     
     digitalWrite(led_2, HIGH);
        } 
     else {
      digitalWrite(led_2, LOW);
  }
    
}

Die Leistungsangabe deines Schalters hat sicher nichts damit zu tun.

Zeichne doch mal ein Schaltbild, wie du den Kippschalter angeschlossen hast.

Den Schalter kannst Du programmtechnisch wie 2 Taster anschließen. Mitte an Masse, Eingänge an die äußeren Anschlüsse und auf INPUT_PULLUP setzen.

Wenn ich das richtig lese hat der Schalter 3 Positionen:

  1. Stellung Ausgang 1 geschaltet
  2. Stellung: kein Ausgang geschaltet
  3. Stellung: Ausgang 2 geschaltet

Du müsstest also Deinen Sketch verändern nach:
wenn Ausgang1 (bzw am Arduino: Eingang) nicht geschaltet und Ausgang2 (Eingang) nicht geschaltet dann LED3 on, oder was auch immer

du hast einen Kippschalter mit Mittelstellung verlinkt.
ON-OFF-ON

das heißt mehr als zwei individuelle Pins machen wenig Sinn IN DEINEM FALL. Im Code fragst du 3 Pins ab was so nicht wirklich sinnvoll ist.

Jetzt braucht es erst mal ein Schaltbild (Papier reicht, kein Fritzing) - und in deinem speziellen Fall ein Echtbild was du wirklich wo angeschlossen hast.

vielen Dank schonmal für die vielen Antworten. Ich habe ungefähr eine Ahnung wo das Problem liegen könnte.

Hier erstmal meine Verschalung:

kippschalter.pdf (364 KB)

mweisbr:
Hier erstmal meine Verschalung:

Vorsicht Kurzschluß!

ungefähre Ahnung ist gut - genau das ist das Problem.

mweisbr:
Hier erstmal meine Verschalung:

Fast richtig ! :wink:

HotSystems:
Fast richtig ! :wink:

Ersetze „Fast“ durch „nix“ und du kommst der Sache recht nahe.

Such mal das richtige Schaltbild für deinen Kippschalter. Und poste ein Foto von dem Teil, wo man die Anschlüsse sieht.

ElEspanol:
Ersetze „Fast“ durch „nix“ und du kommst der Sache recht nahe.

Das bezog sich auf "Verschalung"!
Ich sehe nichts eingeschaltes. :wink:

Der Schalter wird zu vermutlich so funktionieren (das ganze 2 mal, da 2 reihig).
Hoffe es ist zu erkennen was ich meine.
Glaube nicht, daß Deine Verdrahtung stimmt.Unbenannt.png

Unbenannt.png

Vielen Dank für eure Anregungen. Mit den Posts von @Moko habe ich es auf die Reihe bekommen.

Hier nochmal den sketch:

const int button_0 = 5;           // Eingang Kippstellung 0
const int button_1 = 6;           // Eingang Kippstellung 1
const int button_2 = 7;


const int led_0 = 9;         
const int led_1 = 10;
const int led_2 = 11;


int buttonState_0 = 1;          // Variable für Kippstellung 0
int buttonState_1 = 1;          // Variable für Kippstellung 1
int buttonState_2 = 1;  


void setup() {

pinMode(button_0, INPUT);
pinMode(button_1, INPUT);
pinMode(button_2, INPUT);


pinMode(led_0, OUTPUT);
pinMode(led_1, OUTPUT);
pinMode(led_2, OUTPUT);

}

void loop() {

buttonState_0 = digitalRead(button_0);
buttonState_1 = digitalRead(button_1);
buttonState_2 = digitalRead(button_2);

  
  if (buttonState_0 == HIGH ) {
     // Motor drehen:
     digitalWrite(led_0, HIGH);
        }
  else {
      digitalWrite(led_0, LOW);
  }
  
  if (buttonState_2 == HIGH ) {
     // Motor drehen:
     digitalWrite(led_1, HIGH);
        } 
     else {
      digitalWrite(led_1, LOW);
  }
  
  if (buttonState_0 == LOW && buttonState_2 == LOW ) {
    digitalWrite(led_2, HIGH);
  }
  else {
    digitalWrite(led_2, LOW);
  }
  
  
    
}

Hier muss man aber jede Menge einstecken können:

ungefähre Ahnung ist gut - genau das ist das Problem.

Ersetze „Fast" durch „nix" und du kommst der Sache recht nahe.

Ich werde mich bemühen bei allen Dingen, die ich demnächst vorhabe, nie wieder Anfänger zu sein.

Viele Grüße
Martin

Schau dir mal ein wie ein ganz einfacher Taster mit Pullup Widerstand funktioniert:
https://rn-wissen.de/wiki/index.php/Pullup_Pulldown_Widerstand

Den extra Widerstand kannst du dir sparen da Prozessor interne Pullups hat die man aktivieren kann. Aber du musst den Schalter richtig anschließen und darfst nicht einfach Betriebsspannung und Masse verbinden!
Also einen Kontakt an Masse und den anderen auf einen µC-Pin. Bei Wechslern geht der gemeinsame Kontakt an Masse und die zwei anderen an einen Pin

Tip: Taster/Schalter kann man ganz leicht mit einem Multimeter ausmessen. Die haben eine Funktion die piept wenn man Durchgang hat

Mal sehen, wann ihr bei meinem Vorschlag #2 ankommt :wink:

mweisbr:
Hier muss man aber jede Menge einstecken können:

das hast nur in den falschen Hals bekommen. Mein Kommentar war gedacht als Bestätigung, dass du auf der richtigen Fährte bist.

Dicke Haut für hier herinnen hilft aber immer :wink:

DrDiettrich:
Mal sehen, wann ihr bei meinem Vorschlag #2 ankommt :wink:

Denke das war dem TO zu kompliziert, deshalb mein Gemälde :wink:
Dadurch hat er es ja verstanden, und wahrscheinlich (wenn auch unbewusst) #2 umgesetzt.