Arduino Uno R3 Steuerung Servo mit Schalter

Hier mal mein Problem. Ich habe meinen Arduino so programmiert das ein Tastschalter einen Servo steuert. Die Funktion ist wie folgt kurz erzählt:

Wenn Taster gedrückt, dann Position A, wenn Taster nicht gedrückt Position B. Von der Programmierung habe ich das auch hinbekommen. Ob der Code jetzt schön ist, lasse ich mal dahingestellt, aber soweit funktioniert alles. Jetzt kommt das große Aber. Den Schalter habe ich auf GND auf der Seite vom PWM gelegt und auf Steckplatz 2. Der Servo lässt sich auch auslösen, wenn ich einfach nur das Kabel am Anschluss 2 anfasse oder mich diesem nähere. Hierbei ist es egal, ob die Kabel am Schalter angeschlossen sind oder lose in der Luft hängen. Hierdurch ist das System störanfällig. Meine Schlussfolgerung ist, dass die Hemmschwelle für “High”/“Low” zu gering ist. Jetzt wollte ich fragen, ob jemand eine Idee hat, was hier Abhilfe leisten könnte? Anbei auch der Code.

#include <Servo.h> // Zugriff auf Servo Bibliothek
const int button = 2; // the number of the button pin
int state = 0; // 0 = Servo Position eins 1 = Servo Position zwei
Servo servo; // deklariert den Namen des ersten Servos

// variables will change:
int buttonState = 0; // variable for reading the pushbutton status



void setup() {
pinMode (button, INPUT);  // initialize the pushbutton pin as an input
servo.attach(9); // gibt an auf welchem Pin der Servo mit dem Steuerkabel angeschlossen ist
servo.write(0); // gibt die Grundstellung des Servo beim Start an
}

void loop() {
buttonState = digitalRead (button);  // read the state of the pushbutton value
if (buttonState == HIGH) {
  servo.write(90); // Stelle servo auf 90 grad

  
} else {
  servo.write(0); // Stelle servo auf 0 Grad
}

}

Hallo,
deine Beschreibung ist schwer zu verstehen.

en Schalter habe ich auf GND auf der Seite vom PWM gelegt und auf Steckplatz 2.

Was heißt das ?
Die Pins haben alle eine Bezeichnung, die auch auf dem Board steht. Das kann D2 bis D13 sein.
Oder evtl. A0 bis A5.

Also bitte richtig beschreiben.

Dein Fehler sind vermutlich fehlende Pullup-Widerstände. Das geht auch mit internen Pullups.
Z.B.:

pinMode (button, INPUT_PULLUP);

Entschuldigung für die missverständliche Ausdrucksweise. Schalterkabel liegen auf D2 und GND.
Dann teste ich morgen mal deinen Vorschlag. Danke für die Hilfe!

piosol:
Entschuldigung für die missverständliche Ausdrucksweise. Schalterkabel liegen auf D2 und GND.
Dann teste ich morgen mal deinen Vorschlag. Danke für die Hilfe!

Ok, du solltest dann auch besser auf LOW abfragen:

if (buttonState == LOW)

Da der Taster ja gegen GND (LOW) schaltet.

(deleted)

Danke für die Hilfe, jetzt funktioniert alles fehlerfrei!

piosol:
Danke für die Hilfe, jetzt funktioniert alles fehlerfrei!

Prima und auch danke für deine Rückmeldung.

(deleted)