Servo MG 996R über Joystick steuern

Im heutigen Blog Beitrag steuern wir einen AZ-Delivery Servo MG996R über eine Joystick Modul.

 

Dazu benötigen wir:

1x AZ-Delivery Servo MG996R

1x Joystick Modul

1x AZ-Delivery UNO R3

1x 3er Set 40 Stk. Jumper Wire m2m/f2m/f2f

Der Servo zieht im Betrieb bis zu 2,5A - viel zu viel für unseren Uno R3. Daher müssen wir Ihn über ein externes Netzteil versorgen.

 

Wir bauen unten stehende Schaltung auf. Dabei ist zu beachten dass wir GND vom Arduino mit dem GND des externen Netzteils verbinden.

Am Servo befinden sich 3 Leitungen. Die dunkelste (in unserem Fall Braun) ist GND. Rot ist wie fast immer VCC (4,8 - 7,2 V Stromaufnahme: bis 2,5A), und Orange wird vom Uno R3 gesteuert und mit Pin 9 verbunden.

Der Joystick hat 5 Anschlusspins welche wie folgt mit dem Uno R3 verbunden werden:

 

Joystick

Uno R3

GND

GND

+5V

5V

VRx

A0

Vry

A1

SW

7

 

 

 

Schaltung

 

Für die Programmierung nehmen wir die Bibliothek mit dem einfachen Namen "Servo".

Wir nutzen außerdem nur die X-Achse um den Servo in die gewünschte Richtung zu drehen.

 

#include <Servo.h>;

Servo servo1; // Dem Servo eine Bezeichnung geben
#define joyX A0 // Pin A0 - Joystick X
#define joyY A1 // Pin A1 - Joystick Y
#define joyBTN D7  // Pin D7 - Joystick Button

int pos = 0, dir = 0, xValue, yValue; // Variablen für Position (pos), Richtung (dir), sowie den X und Y Wert des Joysticks 

void setup() {
  Serial.begin(9600);
  servo1.attach (9); // Steuerungsleitung vom Servo wird mit Pin 9 verbunden
}

void loop() {
  xValue = analogRead(joyX); // X-Position des Joysticks abfragen
  yValue = analogRead(joyY); // Y-Position des Joysticks abfragen
  //Auf Seriellem Monitor ausgeben - nur zur Fehlersuche
  Serial.print(pos); 
  Serial.print("\t\n");
  Serial.print(xValue);
  Serial.print("\t\n");

  if (xValue < 490){ // Wenn Joy nach Links <- 
    pos = --pos; // pos wird veringert
  } 
  
  if (xValue > 500){ // Wenn Joy nach Rechts
    pos = ++pos;  // pos wir erhöht
  }

  if (pos < 0){ // Damit pos nicht negativ wird
    pos = 0;
  }
  if (pos > 180){ // Damit pos nicht über 180 geht
    pos = 180;
  }

  delay(20);
  servo1.write(pos); // Servo auf Position "pos" bewegen
}
  


Nach dem Hochladen des Codes können wir nun den Servo mittels dem Joystick in die gewünschte Richtung drehen.

 

 

Wir hoffen, dass Sie unser heutiger Blogbeitrag Sie inspiriert hat, und wir freuen uns auf Ihre Kommentare. Bis zum nächsten Beitrag von AZ-Delivery, Ihrem Experten für Mikroelektronik!

Letzter Artikel LCD KeyPad Shield

Hinterlasse einen Kommentar

Kommentare müssen vor der Veröffentlichung überprüft werden

Erforderliche Angabe