Robot Beginner Kit inseguitore

Il progetto che ti presento oggi è il Robot Beginner Kit inseguitore di Michele, un allievo del mio ultimo corso che ha voluto condividere la sua evoluzione del Robot Beginner Kit.

Robot Beginner Kit inseguitore

L’evoluzione relaizzata di Michele si aggiunge alle altre evoluzioni del robot realizzate e condivise da tanti appassionati di robotica e di arduino.

La particolarità di questa evoluzione è che usa componenti semplicissimi come le fotoresistenze che trasformano il beginner kit nel Robot Beginner Kit inseguitore.

Cosa insegue il Robot Beginner Kit inseguitore ?

Il Robot Beginner Kit inseguitore è programmato per seguire la fonte luminosa che colpisce le sue fotocellule.

Il progetto è stato realizzato in una prima versione dotata di due fotoresistenze ed in grado di girare seguendo la luce.

Come funzione il Robot

Per comprendere il principio su cui è stato realizzato il Robot Beginner Kit inseguitore puoi leggere l’articolo dedicato all’inseguitore solare, trattato in una delle lezioni del corso avanzato e usato da Michele per realizzare il progetto.

… Letto ? ….

Se hai letto l’articolo sai che le due fotoresistenze devono essere posizionate a 90° l’una rispetto all’altra in modo da catturare la luce in modo uniforme su entrambe solo quando la fonte luminosa è perpendicolare.

foto resistenze

L’evoluzione di questo principio fatta da Michele riguarda il controllo dei motori in modo che la rotazione del robot avvenga facendo ruotare in senso inverso le ruote del Robot Beginner Kit inseguitore invece di spostare il servomotore.

Schema di collegamento delle fotoresistenze

Entrambe le fotoresistenze sono state collegate come nello schema seguente:

schema collegamenti

e collegate a loro volta al pin A5 di arduino.

Robot Beginner Kit inseguitore fronte

Lo sketch di Michele

Michele mi ha inviato anche lo sketch che ha realizzato per il progetto perché potessi condividerlo:

#define PWMA 5
#define PWMB 6
#define AIN1 1
#define AIN2 2
#define BIN1 8
#define BIN2 9
#define STBY 0
int sensore = A5;
int vel = 60;
int centrale = 512;
int tolleranza = 50;

void setup()
{
  pinMode( STBY, OUTPUT );
  pinMode( PWMA, OUTPUT );
  pinMode( PWMB, OUTPUT );
  pinMode( AIN1, OUTPUT );
  pinMode( AIN2, OUTPUT );
  pinMode( BIN1, OUTPUT );
  pinMode( BIN2, OUTPUT );
  pinMode( sensore, INPUT );
  digitalWrite( STBY, HIGH );
  analogWrite( PWMA, vel );
  analogWrite( PWMB, vel );
}

void loop()
{

  int dist = analogRead(sensore);
  if ( dist < (centrale-tolleranza) ) {
    girasx();
  }
  else if (dist > (centrale+tolleranza)) {
    giradx();
  } else {
    alt();
  }
  delay(30);
}

void avanti()
{
  digitalWrite( AIN1, LOW );
  digitalWrite( AIN2, HIGH );
  digitalWrite( BIN1, LOW );
  digitalWrite( BIN2, HIGH );
}

void alt()
{
  digitalWrite( AIN1, LOW );
  digitalWrite( AIN2, LOW );
  digitalWrite( BIN1, LOW );
  digitalWrite( BIN2, LOW );
}

void giradx() {
  digitalWrite( AIN1, LOW );
  digitalWrite( AIN2, HIGH );
  digitalWrite( BIN1, HIGH );
  digitalWrite( BIN2, LOW );
}

void girasx() 
{
  digitalWrite( AIN1, HIGH );
  digitalWrite( AIN2, LOW );
  digitalWrite( BIN1, LOW );
  digitalWrite( BIN2, HIGH );
}

gran parte dello sketch è identico a quello presentato per il Robot Beginner Kit che ti invito a leggere per trovare la descrizione minuziosa dello sketch.

Commenterò in quaeto articolo solo i cambiamenti tra lo sketch originale del Robot Beginner Kit e quello scritto da Michele.

La linee 08-11: definisci alcune variabili utili alo sketch:

  • sensore: imposta il pin a cui hai collegato il pin centrale alle due fotoresistenze;
  • vel: imposta una velocità costante
  • centrale: definisce la soglia di valori che ti aspetti dalle fotoresistenze quando ricevono la medesima quantità di luce
  • tolleranza: indica un valore di tolleranza che sottrarrai o sommerai al valore centrale delle fotoresistenze perchè nella pratica un valore così preciso come 512 sarà difficile da ottenere;

linee 15-22: per ciascun pin definito imposta la modalità di INPUT o OUTPUT di funzionamento;

linee 24-25: definisci ed imposta la velocità di rotazione dei motori. In questo sketch Michele ha deciso di impostare nella fase di setup() la velocità costante e non vuole che essa cambi in fase di movimento;

linea 31: leggi il sensore analogico con il comando analogRead() e imposta il valore letto nella variabile dist;

linea 32: valuta se il valore letto dalle resistenze è inferiore alla differenza tra il punto centrale e la tolleranza;

linea 33: se la verifica eseguita alla linea 32 è confermata richiama la funzione girasx() che sposta a sinistra il Robot Beginner Kit inseguitore;

linea 35: controlla se il valore letto è maggiore della somma tra il punto centrale e la tolleranza;

linea 36: in tal caso ruota a destra richiamando la funzione giradx();

linee 37-39: se tutte le condizioni presenti alle linee 32 e 35 non sono verificate esegue la funzione alt() che, ironia nel nome, ferma il robot;

linea 40: attendi un tempo di 30 millisecondi prima di rieseguire la verifica dei valori rilevati dalle resistenze;

linee 43-72: le differenze rispetto al Robot Beginner Kit riguardano la completa mancanza delle accelerazioni e lo sdoppiamento della funzione gira() in girasx() e giradx();

Robot Beginner Kit inseguitore alto

Il video del Robot Beginner Kit inseguitore

Quando Michele ha portato la sua realizzazione al corso abbiamo realizzato un piccolo video:

Prima di inserire un commento, per favore, leggi il regolamento

Permanent link to this article: https://www.mauroalfieri.it/elettronica/robot-beginner-kit-inseguitore.html

12 pings

Skip to comment form

  1. […] Robot Beginner Kit inseguitore […]

Lascia un commento

Your email address will not be published.

Questo sito usa Akismet per ridurre lo spam. Scopri come i tuoi dati vengono elaborati.