
LEZIONE n° 8 – COLLAUDO ROBOT
Con questa lezione cominciamo a gestire il robot per la prossima gara (ROMECUP 2017). Per prima cosa dobbiamo organizzare l’hardware e seconda del tipo di robot (2 o 4 ruote) e dei sensori. Dovremo porre particolare attenzione al collegamento dei vari blocchi elettrici del robot.
Dopo aver collegato in modo adeguato tutti i blocchi possiamo cominciare ad organizzare la gestione del robot ed in particolare:
n Operazioni preliminari
n Impariamo a gestirlo
n Messa a punto
n Collaudo
Cominciamo con le operazioni preliminari:
– Capitano squadra
– Nome Robot
– Organizzare il programma
– Scelta strategie
Per ogni squadra si deve trovare il capitano che sarà il responsabile della squadra e, se necessario, dovrà parlare con l’arbitro della manifestazione. Nella scelta del nome si ha una scelta limitata solo dal buongusto. Fare il programma sarà sicuramente la parte più difficile e che vedremo in seguito.
Dovremo porre particolare attenzione alla programmazione di Arduino e quindi:
RICORDIAMO NUOVAMENTE I PRINCIPI DELLA PROGRAMMAZIONE DI ARDUINO:
n Variabili:
n Tipo (intero, reale, carattere, etc.)
n Nome (caratteri alfanumerici)
n Strutture (corso avanzato)
n Principali comandi:
n Assegnazione
n Si calcola l’espressione a sinistra ed il risultato viene assegnato alla variabile a destra
n Count = count +1
n IN/OUT
n Istruzioni per immettere o prelevare dei dati
n digitalWrite(pin1,LOW)
n Test
n Viene eseguito il test (vero o falso) e secondo il valore viene eseguita l’istruzione seguente
n If (count <= soglia)
n Istruzione1
n istruzione2
n Cicli
n Vengono eseguite ripetutamente un gruppo di istruzioni
n For (x=0;x==9;x++)
n istruzione1
Per provare a fare le modifiche proposte copiare il listato (colorato in rosso) ed incollarlo in un editor di solo testo [Notepad ad esempio]
listato programma esempio numero 12: leggere gli urti del robot – CONTARE L’URTO E VERIFICARE SE IL CONTATORE E’ PARI O DISPARI
/*
gestione urti ROBOT (con conteggio e verifica)
*/
int urtoSX=2;
int urtoDX=7;
int led_urtoSX=6;
int led_urtoDX=5;
int led_urtoCX=8;
int tempo_led;
int val_urtoSX;
int val_urtoDX;
int contaurtiSX = 0;
int contaurtiDX = 0;
int contaurtiCX = 0;
void setup()
{
Serial.begin(9600);
pinMode (urtoSX,INPUT);
pinMode (urtoDX,INPUT);
pinMode (led_urtoSX,OUTPUT);
pinMode (led_urtoDX,OUTPUT);
pinMode (led_urtoCX,OUTPUT);
digitalWrite(led_urtoSX,LOW); // SPEGNI LED
digitalWrite(led_urtoDX,LOW); // SPEGNI LED
digitalWrite(led_urtoCX,LOW); // SPEGNI LED
delay(500);
}
void loop()
{
val_urtoSX=digitalRead(urtoSX);
val_urtoDX=digitalRead(urtoDX);
// val_urtoSX=HIGH; // FOR DEBUGGING
// val_urtoDX=LOW;
tempo_led=250;
if ((val_urtoSX==HIGH)&&(val_urtoDX==HIGH)) // URTO CENTRO
{
Serial.println(” “);
Serial.println(” URTO CENTRO “);
contaurtiCX++;
Serial.print(” valore contatore Urto centro = “);
Serial.print(contaurtiCX);
if(contaurtiCX==(contaurtiCX/2)*2)
Serial.print(” contatore PARI “);
else
Serial.print(” contatore DISPARI “);
digitalWrite(led_urtoCX,HIGH); // ACCENDI LED
delay(tempo_led);
digitalWrite(led_urtoCX,LOW); // SPEGNI LED
}
if ((val_urtoSX==HIGH)&&(val_urtoDX==LOW)) // URTO SINISTRO
{
Serial.println(” “);
Serial.println(” URTO SINISTRO “);
contaurtiSX++;
Serial.print(” valore contatore Urto sinistro = “);
Serial.print(contaurtiSX);
if(contaurtiDX==(contaurtiDX/2)*2)
Serial.print(” contatore PARI “);
else
Serial.print(” contatore DISPARI “);
digitalWrite(led_urtoSX,HIGH); // ACCENDI LED
delay(tempo_led);
digitalWrite(led_urtoSX,LOW); // SPEGNI LED
}
if ((val_urtoSX==LOW)&&(val_urtoDX==HIGH)) // URTO DESTRO
{
Serial.println(” “);
Serial.println(” URTO DESTRO “);
contaurtiDX++;
Serial.print(” valore contatore Urto destro = “);
Serial.print(contaurtiDX);
if(contaurtiDX==(contaurtiDX/2)*2)
Serial.print(” contatore PARI “);
else
Serial.print(” contatore DISPARI “);
digitalWrite(led_urtoDX,HIGH); // ACCENDI LED
delay(tempo_led);
digitalWrite(led_urtoDX,LOW); // SPEGNI LED
}
}
}
Modifiche proposte:
n Contare tutti gli urti insieme
n Accendere led diversi secondo il valore del contatore (PARI = VERDE, DISPARI = ROSSO)
di seguito le slide della lezione











(83)