
LEZIONE n° 8
– ROBOT AVANZATO –
– MECCANICA –
Con questa lezione proseguiamo a gestire il robot in una maniera “avanzata”. Come detto per prima cosa dobbiamo organizzare l’hardware e seconda del tipo di robot (2 o 4 ruote) e del numero dei sensori. Dovremo porre particolare attenzione al collegamento dei vari blocchi elettrici del robot. Dopo aver collegato in modo adeguato tutti i blocchi potremmo continuare ad organizzare la gestione del robot.
Come visto nella lezione precedente per il robot che vogliamo realizzare (explorer junior) avremo almeno bisogno di:
MOTORI (2 + ball caster) = permettono, se opportunamente comandati, di dirigere il robot in ogni direzione ottenendo la NAVIGAZIONE all’interno del labirinto. La ball caster serve a rendere nonostante il movimento il robot stabile.
SENSORI DI URTO (2 + baffi) = con due sensori e con i baffi incrociati possiamo facilmente gestire tre tipi di urto (sinistra, destra e centro). Si possono usare anche dei sensori di distanza agli ultrasuoni ma la loro affidabilità non è molto elevata.
SENSORI DI LUCE (2 o più) = il numero dei sensori di luce dipende molto dal numero dei piedini di Arduino rimasti liberi dopo che sono stati montati gli urti ed i motori. Per gli explorer junior è più semplice poiché avremo un solo tipo di sensori analogici.
DISPOSITIVI DI SEGNALAZIONE = il più semplice è sicuramente il LED, si potrebbe usare anche un display ma richiede un numero elevato di piedini per la sua gestione
Il programma (in ordine) del Robot deve:
MANDARLO AVANTI
GESTIRE GLI URTI
GESTIRE LE LUCI
Il Robot Avanzato , oltre alle dotazioni base, può avere:
SENSORI DI URTO A DISTANZA
VARI SENSORE DI LUCE
ALCUNI LED o un DISPLAY
Il software per il Robot Avanzato , oltre alle dotazioni base, può gestire:
L’USCITA da una TRAPPOLA (CONTARE gli URTI)
TROVARE la LUCE da LONTANO
SEGUIRE i BORDI
Vediamo in dettaglio come dobbiamo agire per ottenere il “MASSIMO” dal nostro robot:
Per far MUOVERE il robot bisogna AGIRE sul TEMPO
Inizialmente ci vuole più Tempo (bisogna vincere l’attrito)
Dobbiamo per prima cosa impostare il movimento desiderato e successivamente fissare per quanto tempo vogliamo eseguirlo. Dovremo quindi per far navigare il robot gestire tutte le possibilità o gli eventi che avvengono. A titolo di esempio se viene rilevato l’urto destro a dobbiamo (nell’ordine):
Fermare il robot
Tornare poco indietro
Girare a sinistra
Andare avanti
Per prendere pratica con la programmazione si propone il seguente esercizio:
far percorrere al robot un quadrato di 80 centimetri e poi fermarlo
Mandare avanti il robot per 80 cm (tempo)
Girare di 90° (tempo)
Ripetere per 4 volte
Fermarsi (variabile che “blocca” l’esecuzione)
LISTATO ESERCIZIO – Per provare a fare le modifiche proposte copiare il listato (colorato in rosso) ed incollarlo in un editor di solo testo [Notepad ad esempio]
/////////////////////////////////////////////////////////////////////
// i tempi per le varie operazioni sono stati fissati TUTTI ad UN SECONDO (VANNO TROVATI I VALORI CORRETTI)
//////////////// CORSO ROBOT 2018-19 LEZIONE n° — 8 — ESERCIZIO n° 18
/////////////////////////////////////////////////////////////////////
int x = 0;
int speed_motor = 75;
int TIME_GO_FORWARD = 2500;
int TIME_GO_RIGHT = 2750;
Serial.print(” SPEED = ” );
Serial.print(speed_motor);
magic=1;
// vado AVANTI SE NON CI SONO OSTACOLI
if (one_shot1 == 0)
{
Serial.print(“\n”);
Serial.print(” —- QUADRATO — ” );
Serial.println(choice);
for (x=1;x<=4;x++)
{
Serial.print(” CICLO NUMERO = ” );
Serial.println(x);
avanti();
analogWrite(pwm_a, speed_motor);
analogWrite(pwm_b, speed_motor);
delay(TIME_GO_FORWARD);
Serial.print(” AVANTI per ” );
Serial.print(TIME_GO_FORWARD);
Serial.print(” MILLI secondi ” );
destra();
analogWrite(pwm_a, speed_motor);
analogWrite(pwm_b, speed_motor);
delay(TIME_GO_RIGHT);
Serial.print(” DESTRA per ” );
Serial.print(TIME_GO_RIGHT);
Serial.println(” secondi ” );
}
one_shot1 = 1;
stop_Motori();
}
Serial.println(” ” );
/////////////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////////////
/*************************************************************
END PROGRAM
*************************************************************/
di seguito le slide della lezione
(15)