Servo mittels zweier Taster steuern

Guten Abend,

Ich habe ein und Problem, unzwar wollte ich gern eine Schaltung rein zu Übungszwecken aufbauen, bei welcher 2 Taster einen Servo und entsprechende LEDs steuern. Drückt man den einen Taster, so dreht er sich in die eine Richtung und die eine grüne LED leuchtet auf, drückt man den anderen, so dreht er sich in die andere Richtung und die andere grüne LED leuchtet auf. Drückt man beide bleibt er mittig stehen und die rote Lampe leuchtet auf. Drückt man keinen Taster, so steht er mittig und Nichts leuchtet. So weit zur Theorie. ^^
Anscheinend habe ich aber irgendwo einen Fehler eingebaut, den ich irgendwie leider nicht selber finden kann. Oder kann man diesen Servo so gar nicht steuern?

Hab mal Bilder des Aufbaus und den Programm Code hinzu gefügt. ^^

#include <Servo.h>
Servo myServo;
int switchStateA;
int switchStateB;
int angle;
void setup() {
  myServo.attach(9);
  pinMode(2,INPUT);
  pinMode(3,INPUT);
  pinMode(12,OUTPUT);
  pinMode(12,OUTPUT);
  pinMode(13,OUTPUT);
}
void loop() {
  switchStateA = digitalRead(2);
  switchStateB = digitalRead(3);
  if (switchStateA == LOW &&
  switchStateB == LOW){
    angle = 90.0;
    digitalWrite(11, LOW);
    digitalWrite(12, LOW);
    digitalWrite(13, LOW);
  }if (switchStateA == HIGH && 
  switchStateB == HIGH){
    angle =90.0;
    digitalWrite(11, HIGH);
    digitalWrite(12, LOW);
    digitalWrite(13, LOW);
    angle = 90.0;
  }if (switchStateA == HIGH &&
  switchStateB == LOW){
    angle = 179.0;
    digitalWrite(11, LOW);
    digitalWrite(12, HIGH);
    digitalWrite(13, LOW);
  }if (switchStateA == LOW &&
  switchStateB == HIGH){
    angle =1.0;
    digitalWrite(11,LOW);
    digitalWrite(12,LOW);
    digitalWrite(13,HIGH);
  }
  myServo.write(angle);
  delay(10);
}

Und warum postet du deinen Beitrag doppelt ?
Das Bild reinhängen hätte gereicht.

Und beschreibe bitte was genau funktioniert und was nicht funktioniert.

Oh tut mir leid. Das doppelt Posten war ausversehen.
Kurz gesagt, es funktioniert gar nichts. Weder macht der Servo etwas, noch beginnt eine LED zu leuchten, wenn ein Taster gedrückt wird. Kann es vielleicht damit zusammen hängen, dass es sich um einen Analogservo handelt, und ich diesen auch nur über die Analogeingänge steuern kann?

Ok, Analogeingänge sind Eingänge, also nicht also nicht damit zu verwechseln.
Da du die Library verwendest, kannst du fast beliebige digitale Pins verwenden.

Wenn du das nur zum Testen brauchst, warum baust du das nicht Stück für Stück auf.
Servos mit Beispiele der Library testen.
Taster mit den Beispielen der IDE testen.
Usw.

Hallo John,

du versorgst das Servo aus dem 5V Anschluss des Arduinos. Je nach größe des Servos zieht das Servo unter Umständen zuviel Strom. Ich habe just heite bei instructables eine Anleitung gesehen wo das auch so gemacht wird. Servo direkt vom 5V-Anschluss des Arduinos versorgen. Der Arduino-Spannungsregler kann maximal 500 mA. Größere Servos können auch 1A oder 2A Strom ziehen.

Um jetzt herauszufinden was los ist:
Wenn die LEDs nicht leuchten. Polarität der LEDs prüfen. LEDs leuchten nur wenn sie "richtig herum" angeschlossen sind,

LED testen: Verbindung zum IO-Pin herausnehmen und stattdessen LED direkt mit +5V verbinden. Leuchtet die LED dann?

Super einfaches Blinkprogramm auf den Arduino laden und testen ob die LED blinkt.

supereinfaches Programm, das erst einmal nur einen Taster abfragt
Über die serielle Schnittstelle ausgeben lassen was am IO-Pin mit digitalRead gelesen wird.

Der Taster hat ja vier Anschlüsse. Jeweils zwei Anschlüsse sind direkt miteinander verbunden. Wenn du die beiden direkt verbundenen Anschlüsse erwischt hast dann kannst du drücken so lange du willst dann wäre der IO-Pin immer auf HIGH.

viele Grüße Stefan

Moin John,
die Taster-Pins 2 und 3 liegen m.E. - wenn nicht gedrückt - auf keinem definierten Potential.
Ich würde die nach Masse schalten lassen und dann die Eingänge mit INPUT_PULLUP initialisieren.
Die Logik ist dann natürlich anders herum.

Gruß Walter

Guten Abend
Viiielen lieben Dank für die ganzen Antworten. ^^
Hab den (die) Fehler nun auch gefunden. Hatte die "Pull Down Widerstände"(10kOhm) an den Ausgängen der Taster vergessen, weswegen (soweit ich das mittlerweile verstanden hab), die Digitaleingänge 2 & 3 nie wirklich "LOW" gelesen haben.
Zweiter, wenn auch kleiner Fehler war Programmseitig. Hatte in Zeile 10 statt "pinMode(11,OUTPUT); das gleiche wie in der Zeile danach, also "pinMode(12,OUTPUT); stehen, wodurch der Pin 11 nicht als Ausgang deklariert war und somit die Rote LED nicht leuchten konnte. Also klassischer Tippfehler.
Vielen Dank für die Hinweise und Ideen.