Salve a tutti sto facendo un programma su arduino per scuola , il programma consiste nel rilevare le fonti di luce attraverso 3 fototransistor (nel robot sostituiti da sensori di luce ), uno avanti uno a Sx e uno a Dx;
ora vi spiego meglio , ho costruito una macchinetta robot con 2 motori collegati ad arduino , in pratica lo scopo di questa macchinetta è quello di rilevare tutte le luci in un campo , e di fermarsi e accendere un led quando le trova , però deve essere vicino a queste luci più o meno a 10 cm.
il robot inoltre rimbalza con dei sensori di contatto quando sbatte su qualcosa .
Ora , l'intensità luminosa che deve riconoscere il robot me la regolo attraverso un trimmer .
utilizzo arduino UNO , è alimentato da una batteria di 6 volt circa , e sulla piattaforma di arduino è montata una scheda che serve per i motori , di colore verde :~ scusate l approssimazione
fino ad ora ho scritto questa parte di programma , che non comprende i sensori di luce , premetto di essere un principiante , quindi se potreste spiegarmi anche solo in che modo posso dire che se la luce è forte il computer deve fermarsi e accendere il LED
Grazie a tutti in anticipo =)
int dir_a = 3;
int dir_b = 7;
int pwm_a = 11;
int pwm_b = 12;
int bmp_right = 9;
int bmp_left = 5;
int speed_loop = 220 ;
void setup ()
{
pinMode (dir_a, OUTPUT);
pinMode (dir_b, OUTPUT);
pinMode (pwm_a, OUTPUT);
pinMode (pwm_b, OUTPUT);
pinMode (bmp_right, INPUT);
pinMode (bmp_left, INPUT);
}
void avanti()
{
digitalWrite (3 , HIGH);
digitalWrite (7 , HIGH);
digitalWrite (pwm_a , speed_loop);
digitalWrite (pwm_a , speed_loop);
}
void indietro()
{
digitalWrite (3 , LOW);
digitalWrite (7 , LOW);
digitalWrite (pwm_a , speed_loop);
digitalWrite (pwm_a , speed_loop);
}
void left()
{
digitalWrite (3 , HIGH);
digitalWrite (7 , LOW);
digitalWrite (pwm_a , speed_loop);
digitalWrite (pwm_a , speed_loop);
}
void right()
{
digitalWrite (3 , LOW);
digitalWrite (7 , HIGH);
digitalWrite (pwm_a , speed_loop);
digitalWrite (pwm_a , speed_loop);
}
void smettila()
{
digitalWrite (pwm_a , 0);
digitalWrite (pwm_a , 0);
}
void loop ()
{
avanti();
if ((bmp_left == HIGH && bmp_right == HIGH ))
{
smettila();
delay (10);
indietro();
delay (700);
left ();
delay (1800);
}
if ((bmp_left == LOW && bmp_right == HIGH ))
{
smettila();
delay (10);
indietro();
delay (700);
left ();
delay (900);
}
if ((bmp_left == HIGH && bmp_right == LOW ))
{
smettila();
delay (10);
indietro();
delay (700);
right ();
delay (900);
}
}
dir_a e dir_b è il nome che dò ai motori
pwm_a e pwm_b è la potenza dei motori
bmp_left e bmp_right sono i sensori di contatto , funzionano come interruttori , quando si chiudono entrambi il robot va indietro e quando se ne chiude uno solo il robot gira