Servo¶
Überblick¶
In dieser Lektion erkunden Sie die Verwendung von Arduino und Servomotoren. Mit Fokus auf den Arduino Uno und den SG90-Servomotor lernen Sie, wie Sie das Arduino programmieren, um die schwenkende Bewegung des Servos zu steuern. Diese Technik ist in verschiedenen Anwendungen wie Robotik und automatisierten Systemen unerlässlich.
Benötigte Komponenten¶
Für dieses Projekt benötigen wir die folgenden Komponenten.
Es ist definitiv praktisch, ein ganzes Set zu kaufen, hier ist der Link:
Name |
ARTIKEL IN DIESEM KIT |
LINK |
---|---|---|
Elite Explorer Kit |
300+ |
Sie können sie auch einzeln über die untenstehenden Links kaufen.
KOMPONENTENBESCHREIBUNG |
KAUF-LINK |
---|---|
- |
|
Verdrahtung¶
Schaltplan¶
Code¶
Bemerkung
Sie können die Datei
27-servo.ino
direkt im Pfadelite-explorer-kit-main\basic_project\27-servo
öffnen.Oder kopieren Sie diesen Code in die Arduino IDE.
Code-Analyse¶
Hier wird die
Servo
-Bibliothek eingebunden, die eine einfache Steuerung des Servomotors ermöglicht. Der mit dem Servo verbundene Pin und der Anfangswinkel des Servos werden ebenfalls definiert.#include <Servo.h> const int servoPin = 9; // Define the servo pin int angle = 0; // Initialize the angle variable to 0 degrees Servo servo; // Create a servo object
Die Funktion
setup()
wird einmal ausgeführt, wenn das Arduino startet. Der Servo wird mit der Funktionattach()
an den definierten Pin angehängt.void setup() { servo.attach(servoPin); }
Die Hauptschleife enthält zwei
for
-Schleifen. Die erste Schleife erhöht den Winkel von 0 auf 180 Grad, und die zweite Schleife verringert den Winkel von 180 auf 0 Grad. Der Befehlservo.write(angle)
setzt den Servo auf den angegebenen Winkel. Diedelay(15)
-Anweisung bewirkt, dass der Servo 15 Millisekunden wartet, bevor er zum nächsten Winkel übergeht, und steuert so die Geschwindigkeit der Scanbewegung.void loop() { // scan from 0 to 180 degrees for (angle = 0; angle < 180; angle++) { servo.write(angle); delay(15); } // now scan back from 180 to 0 degrees for (angle = 180; angle > 0; angle--) { servo.write(angle); delay(15); } }