Diamo movimento al nostro robot Se siete arrivati fino a questo punto avete aggiunto alle vostre competenze l’uso dei servomotori e dei sensori ad ultrasuoni. Combiniamo queste due abilità sarete in grado di movimentare il vostro robot facendogli evitare ostacoli. Incominciamo con unire il codice per governare i servomotori e il sensore ad ultrasuoni che avete utilizzato:
#include <Servo.h>
// creazione degli oggetti servo
Servo MotoreSinistro;
Servo MotoreDestro;
const int periodoStampaSuSeriale = 250; // stampa sulla Serial Monitor ogni 1/4 di secondo
unsigned long ritardoSuSeriale = 0;
const int periodoLoop = 20; // un periodo di 20 ms = una frequenza di 50Hz
unsigned long ritardoLoop = 0;
// specifica i pin di trig e echo usati per il sensore ad ultrasuoni
const int TrigPin = 8;
const int EchoPin = 9;
int distanza;
int durata;
void setup()
{
Serial.begin(9600); // configurazione dei pin Arduino a cui colleghiamo il sensore
pinMode(TrigPin, OUTPUT);
pinMode(EchoPin, INPUT);
MotoreSinistro.attach(11);
MotoreDestro.attach(10);
}
void loop()
{
printOutput(); // stampa un messaggio di debug sulla Serial Monitor
if(millis() - ritardoLoop >= periodoLoop)
{
letturaSensoreUltrasuoni(); // legge e memorizza la distanza misurata
ritardoLoop = millis();
}
}
void letturaSensoreUltrasuoni()
{
digitalWrite(TrigPin, HIGH);
delayMicroseconds(10); // mantiene alto il trigger per almeno 10us
digitalWrite(TrigPin, LOW);
durata = pulseIn(EchoPin, HIGH);
distanza = (durata/2)/29;
}
void printOutput()
{
if((millis() - ritardoSuSeriale) > periodoStampaSuSeriale)
{
Serial.print("distanza: ");
Serial.print(distanza);
Serial.print("cm: ");
Serial.println();
ritardoSuSeriale = millis();
}
}









