Servo-Winkel über die serielle Schnittstelle
Teil des Abschnitts Ausgaben der Arduino-Journey von Coddy. Lektion 23 von 24.
Der Arm kann auch Befehle über den seriellen Monitor entgegennehmen. Gib einen Winkel ein und drücke Enter; Serial.parseInt() liest die Zahl:
if (Serial.available() > 0) {
int angle = Serial.parseInt();
Serial.read(); // der Zeilenumbruch nach der Zahl
// angle verwenden
}Der Zeilenumbruch nach der Zahl bleibt zurück. Beim nächsten Durchlauf von loop() würde parseInt() keine Ziffern finden, eine Sekunde warten und 0 zurückgeben. Bei einer Blinkgeschwindigkeit funktionierte es, diese 0 zu ignorieren, aber 0 ist ein echter Winkel. Lies also den Zeilenumbruch direkt nach der Zahl mit einem Serial.read() aus.
Jemand könnte auch eine Zahl eingeben, die kein Winkel ist. arm.write() interpretiert jede Zahl ab 544 als Impulslänge in Mikrosekunden, sodass 1000 den Arm auf ungefähr 45 Grad stellen würde. constrain() hält den Winkel zunächst zwischen 0 und 180:
angle = constrain(angle, 0, 180); // Übergib ihm die Variable, nicht parseInt()Aufgabe
MittelBewege den Servo auf den im Serial Monitor eingegebenen Winkel:
- wenn eine Zahl ankommt, lies sie mit
Serial.parseInt(), dann lies den Zeilenumbruch aus (0 ist auch ein Winkel) - halte sie mit
constrain()zwischen 0 und 180 - bewege den Arm und gib den Winkel als
Angle: 45aus
Drücke Run, sende 45 über den Serial Monitor und drücke dann Check.
Probier es selbst
#include <Servo.h>
Servo arm;
void setup() {
arm.attach(9);
arm.write(90);
Serial.begin(9600);
}
void loop() {
// Wenn eine Zahl ankommt: Lies sie ein und lies den Zeilenumbruch weg,
// halte sie zwischen 0 und 180, bewege den Arm und gib sie aus
}
Diese Lektion enthält ein kurzes Quiz. Starte die Lektion, um es zu beantworten und deinen Fortschritt zu speichern.
Alle Lektionen in Ausgaben
5Bewegung
Einen Servoarm bewegenEinen Servo schwenkenServo und DrehknopfServo-Winkel über die serielle SchnittstelleServo-LichtanzeigeÜbe selbstständig: Arduino-Playground