cR_17_lezione 07

by / martedì, 06 Dicembre 2016 / Published in Archivio Robotica

 

LEZIONE n° 7 – ROBOT

 

 

Con questa lezione cominciamo a gestire tutto il robot.

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 potremmo cominciare ad organizzare la gestione del robot.

Dovremo porre particolare attenzione alla programmazione di Arduino e quindi:

RICORDIAMO 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:

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)

n

 

di seguito le slide della lezione

 

 

(70)

TOP