Angolo del servo da seriale
Fa parte della sezione Uscite del percorso Arduino di Coddy. Lezione 23 di 24.
Il braccio può anche ricevere comandi dal monitor seriale. Digita un angolo e premi Invio; Serial.parseInt() legge il numero:
if (Serial.available() > 0) {
int angle = Serial.parseInt();
Serial.read(); // il carattere di nuova riga dopo il numero
// usa angle
}Il carattere di nuova riga dopo il numero resta in attesa. Alla successiva esecuzione di loop(), parseInt() non troverebbe cifre, aspetterebbe un secondo e restituirebbe 0. Ignorare quel valore 0 funzionava per la velocità di lampeggio, ma 0 è un angolo valido. Quindi leggi il carattere di nuova riga per eliminarlo con un solo Serial.read() subito dopo il numero.
Qualcuno potrebbe anche digitare un numero che non è un angolo. arm.write() interpreta qualsiasi numero da 544 in su come una durata dell'impulso in microsecondi, quindi 1000 porterebbe il braccio vicino a 45 gradi. constrain() mantiene prima l'angolo tra 0 e 180:
angle = constrain(angle, 0, 180); // passagli la variabile, non parseInt()Sfida
MedioSposta il servo all’angolo digitato nel monitor seriale:
- quando arriva un numero, leggilo con
Serial.parseInt(), poi leggi il carattere di nuova riga (anche 0 è un angolo) - mantienilo tra 0 e 180 con
constrain() - sposta il braccio e stampa l’angolo come
Angle: 45
Premi Run, invia 45 dal monitor seriale, poi premi Check.
Provalo tu
#include <Servo.h>
Servo arm;
void setup() {
arm.attach(9);
arm.write(90);
Serial.begin(9600);
}
void loop() {
// quando arriva un numero: leggilo, scarta il carattere di nuova riga,
// mantienilo tra 0 e 180, muovi il braccio e stampalo
}
Questa lezione include un breve quiz. Inizia la lezione per rispondere e tenere traccia dei tuoi progressi.
Tutte le lezioni di Uscite
Esercitati da solo: Playground Arduino