Einen Servo anschließen und in Betrieb nehmen
Bevor der Bulli fahrbar gemacht werden kann, müssen wir uns über die Lenkung Gedanken machen.
Um den T1 lenken zu können, benötigen wir einen Servomotor. Ein Servomotor ist ein sehr feiner Motor, der über eine Datenleitung einen Winkel zwischen 0° und 180° einstellen kann. Dieser eignet sich also perfekt zum Lenken. Benötigt wird eine Spannungsversorgung und Masse, sowie die Datenleitung. |
Abbildung 1: Servoantrieb Quelle: BBS2 Wolfsburg |
---|
Angeschlossen werden kann der Servo am Pin 14 des ESP32.
Abbildung 2: Steckbrett Quelle: BBS2 Wolfsburg |
Abbildung 3: Schaltplan Quelle: BBS2 Wolfsburg |
---|
Zum Programmieren mit dem Servo Motor muss wieder eine Bibliothek geladen werden. Diese wurde allerdings schon bei der Installation vom ESP32 mit installiert. Solltest du die Bibliothek dennoch nicht in der Bibliotheksverwaltung finden, musst du sie nachträglich installieren.
Abbildung 4: Servo Bibliothek
Quelle: BBS2 Wolfsburg
Das Beispielprogramm zum hin und herfahren des Servomotors ist auf der nächsten Seite abgelegt.
#include <ESP32Servo.h>
|
Zunächst muss die Bibliothek eingebunden werden, in der Methoden zur Steuerung des Servo enthalten sind. |
#define SERVO_PIN 14
|
Dies ist eine Textersetzung, welche überall wo "SERVO_PIN" im Code auftaucht eine 14 einsetzt. Das dient der besseren Lesbarkeit und Verständlichkeit des Codes. |
Servo testServo; |
Da mehrere Servos an einem ESP32 angeschlossen werden können, braucht jeder Servo einen eigenen Namen (hier: "testServo") dadurch wird ein Objekt der Klasse "Servo" angelegt und Adressierungen mit diesem Namen werden immer auf dieses Objekt angewandt. |
---|---|
void setup()
{
//Den Servo für den ESP32 bereit machen
testServo.setPeriodHertz(50);
testServo.attach(SERVO_PIN, 500, 2500);
}
|
Damit der Servo funktioniert müssen zusätzlich auch ein paar Parameter an das Objekt übergeben werden. Es müssen die Frequenz, der Pin, die minimale Puls weite und die maximale Pulsweite mitgeteilt werden. |
void loop()
{
for(int idx = 0; idx <= 180; idx++)
{
testServo.write(idx);
delay(30);
}
|
Mit dem "write" Befehl kann man nun den aktuellen Winkel des Servos festlegen. In diesem Fall wird der Winkel über das Durchlaufen der for-Schleife von 0 bis 180 durchfahren. |
for(int idx = 0; idx <= 180; idx++)
{
testServo.write(idx);
delay(10);
}
delay(1000);
}
|
Hier wird der Winkel wieder rückwärts zurückgestellt. Nach einer Pause von einer Sekunde beginnt das Programm wieder von vorne. |
Zuletzt geändert: Montag, 5. Februar 2024, 11:10