Menu
CoddyTech

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()
challenge icon

Sfida

Medio

Sposta 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
}
quiz iconMettiti alla prova

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