» » X1 – 02.1 Center

X1 – 02.1 Center

eingetragen in: X1-lernkurs | 0

 

Servo Center

In der vorherigen Lektion hast du den Servo kennengelernt, jetzt ist es an der Zeit, dass wir das erste wichtige Programm für den Roboter schreiben. In dieser Lektion lernst du den #define Befehl kennen, mit dem du Pins welche vorher nur durch Zahlen gekennzeichnet waren, einen Namen geben kannst. Diese Funktion ist besonders nützlich für dich, da sie dir hilft den Code übersichtlich zu gestalten.

Video-Beispiel:

 

Code-Beispiel:

#include <Servo.h>
//Pinbelegung benennen
#define servoLPin 9
#define servoMPin 10
#define servoRPin 11
//Servos benennen
Servo linkerServo;
Servo mittelServo;
Servo rechterServo;

void setup() {
 linkerServo.attach(servoLPin);
 rechterServo.attach(servoRPin);
 mittelServo.attach(servoMPin);
}

void loop() {
 //Alle Servos sollen auf Mittelposition
 linkerServo.write(72);
 rechterServo.write(72);
 mittelServo.write(60);
}

 
 
 

Schritt 1

Hier siehst du den oben erwähnten #define Befehl in aktion. Zu beachten ist, dass #define nicht mit einem Semikolon abgeschlossen wird.
Nach #define kommt der gewünschte Name für den gewählten Pin.

In unserem Fall möchten wir die drei gewählten Pins nach den mit ihnen verbundenen Servo benennen. Also servoLPin, servoMPin und servoRPin.

 

 

 

#define servoLPin 9
#define servoMPin 10
#define servoRPin 11

 

 

 

Schritt 2

Wie auch schon in Schritt 2 der vorherigen Lektion musst du Servo im Programm erstellen und mit einem Namen versehen, damit ihnen im nächsten Schritt ein Pin zugewiesen werden kann.

 

 

 

Servo linkerServo;
Servo mittelServo;
Servo rechterServo;

 

 

 

 

Schritt 3

Nachdem wir Pins und Servo benannt haben, werden in void setup() die 3 Servo aktiviert. Im nebenstehenden Code siehst du wie sich #define auf den Code auswirkt. In die Klammern hinter attach kommt jetzt nicht mehr die Nummer des Pins, sondern der definierte Name.

Wir werden diese Vorgehensweise in Zukunft beibehalten, da sie einen schönen Nebeneffekt hat. Es befindet sich eine geordnete Übersicht aller verwendeten Pins direkt am Anfang des Programmes.

 

 

 

void setup() {
linkerServo.attach(servoLPin);
rechterServo.attach(servoRPin);
mittelServo.attach(servoMPin);
}

 

 

 

 

Schritt 4

Um die Servoköpfe aufstecken zu können wollen wir die Servo auf ca. mittlere Position bringen. Um die Servo in ihre Position zu bringen benutzen wir void loop(). 

Da wir zwischen den Befehlen kein delay haben bewegen sich alle Servo nahezu gleichzeitig in ihre Position.

 

 

 

void loop() {

linkerServo.write(72);
rechterServo.write(72);
mittelServo.write(60);
}

 

 

 

 

Fazit

In dieser Lektion hast du ein Programm geschrieben, mit dem du die Servo in eine zentrale Position bringen kannst.

Wenn du die Servo zuweist und aktivierst, aber keinen Wert in die write Funktion setzt, bewegen sich die Servo in eine zufällige Position. Das kann dazu führen, dass die Servo das Gehäuse des X1 beschädigen. Andererseits bewegen sich die Servo natürlich nicht wenn sie vorher nicht aktiviert werden.
Interessant ist, dass die Servo nachdem sie aktiviert sind sich nicht mehr durch äußere Einwirkungen bewegen lassen. Es ist auch möglich sie wieder zu deaktivieren, was du in anderen Lektionen noch lernen wirst.

Wenn dir diese Lektion schwer gefallen ist empfehlen wir dir die vorherige Lektion noch einmal anzuschauen.

 

Bitte hinterlasse eine Antwort