Masurarea distantei : Se calculeaza distanta pana la un obiect cu ajutorul unui senzor ultrasonic. Dupa ce se declanseaza senzorul este masurata durata impulsului ecou, iar distanta este calculata folosind viteza sunetului.
Comunicarea seriala: Se verifica date primite de la monitorul serial si modulul Bluetooth. Daca exista date de la monitorul serial, acestea sunt citite si transmise la modulul Bluetooth si viceversa. Se verifica daca input-ul primit de la bluetooth este “open”, iar daca acesta este se seteaza flag-ul barrierOpenRequested la true.
Starea butonului : Verificam daca starea butonului a fost schimbata. Daca s-a schimbat de la HIGH la LOW, indica faptul ca butonul a fost apasat si setam flag-ul barrierOpenRequested la true.
Controlul barierei: Verificam daca flag-ul barrierOpenRequested este setat. Daca este setat, inseamna ca este ceruta deschiderea barierei. Bariera se deschide daca masina este la o distanta mai mica de 15 cm si timeout-ul este mai mic de 3 secunde (au trecut mai putin de 3 secunde de cand masina a ajuns la distanta < 15 cm), iar in caz contrar bariera se inchide (adica timeout-ul a expirat). La deschiderea barierei se aprinde ledul verde si se stinge cel rosu, iar la inchidere se aprinde cel rosu si cel verde se stinge.