Proiectul presupune constriurea unei masinute care sa se mentina la o distanta constanta data ca input fata ce cel mai apropriat obiect. Acest lucru poate fi util atat pentru masurarea unei distante cat si pentru urmarirea unui obiect aflat in miscare sau metinerea constanta a unei distante dintre doua obiecte.
Masinuta va folosi un senzor cu ultrasunete pentru a masura distanata, va fi construita pe baza unei platforme cu 2 motoare controlate printr-un driver, va folosi 2 afisaje led cu 2 cifre pentru a afisa distanta data ca input si distanta curenta fata de obiectul din fata. Input-ul de distanta va vi dat print-un potentiometru pentru usurinta in utilizare, iar pentru a indica status-ul va fi folosit un led RGB. Pentru pornire/oprire va fi folosit un buton.
Functionalitatile proiectului au fost implementate in Arduino IDE folosind functii sepecifice acestuia.
Pentru extragerea unei valori de input de la potentiometru citesc valoarea generata de acesta pe un pin analog. Prin folosirea senzorului ultrasonic se contorizeaza perioada de timp intre trimierea unui semnal si receptionarea reflexiei acestuia, apoi se imparte la viteza sunetului si se afla distanta pana la primul obiect. Se face diferenta celor doua valori, iar semnul dicteaza directia de mers.
Daca distanta de parcurs este mai mare de un prag atunci masinuta va merge la viteza maxima, iar dupa depasirea pragului masinuta isi va micsora viteza cu cat se micsoreaza distanta. Acest lucru ajuta ca masinuta sa se stabilizeze mai rapid.
Cate doi pini de directie si un pin de enable controleza fiecare motor prin intermediul driver-ului de motoare.
Modulele de display led cu 7 segmente sunt controlate prin intermediul unei biblioteci. Pentru fiecare modul este necesar (pe langa Vcc si GND) un pin de date, unul cu semnal de ceas, si un pin de latch care sa permulte intre cele doua display-uri de pe fiecare modul. Administrarea acestor pini este realizata de biblioteca, ramase fiind definirea constantelor pentru fiecare cifra si trimiterea acestora.
Apasarea butonului declaseaza o intrerupere care seteaza o variabila. In urma apasarii butonului masinuta se va invarti 180 de grade.
In final mi s-a parut un proiect interesant la care am reusit sa mai invat cate ceva despre Arduino si alte componente precum afisaje led cu 7 segmente, drivere de motoare, potentiometre si senzori. Pot sa ma laud ca am devenit mai bun la lipit, am ajuns de la aproape a topi placuta si izolatia de pe fire, pana la niste lipituri decente. Consider ca a fost o experineta productiva si as mai incerca si pe viitor sa fac astfel de proiecte.