La inceput am definit pentru buzzer, led_rgb si ecranele lcd
In setup() am setat pinii de output si am initializat interfata LCD.
In loop() apelez functia distSensor(). De aici codul meu se imparte in mai multe functii.
In distSensor(), pentru inceput calculez distanta detectata de fiecare din cei doi senzori de proximitate cu ajutorul functiei readUltrasonicDistance(), apoi urmeaza 4 conditii in functie de aceste distante realizate cu ajutorul if else. Conditiile implica nivelul de amenintare detectat de senzorul de distanta. Astfel, daca una din distante e mai mica de 7 cm programul va aprinde ledul rgb pe culoarea rosie, buzzerul va suna foarte ascutit si des, iar pe ecran se va afisa DANGER IMINENT! si o reprezentare a distantei cu linii pentru o intelegere mai usoara. Analog, daca distantele sunt intre 7 si 15 cm ledul va fi portocaliu, buzzerul va suna mai rar si cu o tonalitate mai joasa, iar pe ecran va scrie MEDIUM DANGER! si vor afisate mai multe linii decat in cazul precedent. Daca distantele sunt intre 15 si 25 de cm ledul va fi galben, buzzerul va suna rar si jos, iar lcd-ul va afisa CAUTION DANGER!. Altfel, daca distantele sunt mai mari de 30 de cm va ledul va fi verde, buzzerul nu va suna, iar pe ecran nu se va afisa nimic. Daca distantele nu intra pe niciuna din conditiile de mai sus ledul va fi mov. Pentru a aprinde ledul o anume culoare vom folosi functia RGB_color(). Pentru a porni buzzerul si a modifica frecventa si amplitudinea sunetului vom folosi functia tone() inclusa in libraria Arduino. Pentru a afisa pe ecranele lcd vom apela functiile displayBack() si displayFront().
Functia readUltrasonicDistance() primeste ca parametri triggerPin si echoPin de la senzorul ultrasonic, pune pinul trigger pe HIGH timp de 10 ms, iar apoi citeste de pe pinul echo si returneaza timpul in ms al undei de sunet pana cand intalneste un obiect.
Functia RGB_color() primeste 3 parametrii R, G, B si scrie aceste valori pe pinii ledului RGB aprinzandu-l in diferite culori.
Functiile displayBack() si displayFront() afiseaza diferite mesaje pe ecranele corespunzatoare senzorului de proximitate din fata, respectiv cel din spate.