cR_17_lezione 08

by / sabato, 31 Dicembre 2016 / Published in Archivio Robotica

 

 

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:

 

Variabili:

n  Tipo (intero, reale, carattere, etc.)

n  Nome (caratteri alfanumerici)

n  Strutture (corso avanzato)

 

n  Principali comandi:

Assegnazione

n  Si calcola l’espressione a sinistra ed il risultato viene assegnato alla variabile a destra

Count = count +1

IN/OUT

n  Istruzioni per immettere o prelevare dei dati

digitalWrite(pin1,LOW)

Test

n  Viene eseguito il test (vero o falso) e secondo il valore viene eseguita l’istruzione seguente

If (count <= soglia)

Istruzione1

istruzione2

Cicli

n  Vengono eseguite ripetutamente un gruppo di istruzioni

For (x=0;x==9;x++)

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:

 

Contare tutti gli urti insieme

Accendere led diversi secondo il valore del contatore (PARI = VERDE, DISPARI = ROSSO)

 

 

 

 

di seguito le slide della lezione

 

 

(82)

TOP