Servo.h: Aceasta este o bibliotecă pentru controlul servo-motoarelor.
LiquidCrystal_I2C.h: Aceasta este o bibliotecă pentru controlul afișajului LCD I2C.
Funcții implementate:
measureDistance(): Această funcție măsoară distanța utilizând senzorul ultrasunete. Ea configurează pini pentru emițătorul și receptorul ultrasunetelor, măsoară durata semnalului de întoarcere și calculează distanța în funcție de durată.
setup(): Această funcție este apelată o singură dată la pornirea sistemului. Ea inițializează comunicarea serială, atașează servo-motorul la pinul specificat, configurează pini pentru senzorul ultrasunete și afișajul LCD, închide capacul coșului de gunoi și inițializează LCD-ul.
loop(): Această funcție se execută într-un ciclu continuu. Ea verifică disponibilitatea datelor seriale primite, măsoară distanța utilizând temporizatorul sau fără temporizator în funcție de regimul selectat, deschide sau închide servo-motorul în funcție de distanța măsurată și timpul specificat, afișează mesaje pe afișajul LCD în funcție de distanța măsurată și întârzie pentru o perioadă de timp specificată.
Aparatul utilizează un senzor ultrasunete pentru a măsura distanța până la obiectele din fața lui și un servo-motor pentru a deschide și închide capacul coșului de gunoi.
În funcție de valoarea distanței măsurate de senzorul ultrasunete, se iau decizii referitoare la deschiderea sau închiderea capacului coșului de gunoi:
Dacă sistemul este în regimul “1” (isFirst = 1), atunci se măsoară distanța la intervale regulate folosind un temporizator. Dacă distanța măsurată este mai mică de 10 cm, servo-motorul este atașat și deschide capacul treptat pe parcursul unei perioade de timp specificate de servoOpenTime (3000 milisecunde în acest caz). Dacă timpul de deschidere a expirat sau distanța măsurată este mai mare sau egală cu 10 cm, servo-motorul este dezasociat și capacul rămâne închis.
Dacă sistemul nu este în regimul “1” (isFirst = 0), atunci distanța este măsurată fără a utiliza temporizatorul. Dacă distanța măsurată este mai mică de 10 cm și nu există un temporizator în desfășurare (need_timer = false), servo-motorul este atașat și deschide capacul imediat. De asemenea, temporizatorul este pornit (need_timer = true) pentru a se asigura că servo-motorul nu rămâne deschis pentru o perioadă prea lungă de timp. Capacul rămâne deschis până când temporizatorul expiră și apoi servo-motorul este dezasociat.
De asemenea, codul utilizează o librărie LiquidCrystal_I2C pentru a afișa mesaje pe un afișaj LCD I2C. În funcție de distanța măsurată de senzorul ultrasunete, mesajul “Sunt Plin” sau “Sunt Gol” este afișat pe afișaj.
În concluzie, acest cod combină utilizarea unui senzor ultrasunete, unui servo-motor și unui afișaj LCD I2C pentru a crea un sistem automat de coș de gunoi care deschide și închide capacul în funcție de distanța față de obiectele din fața sa și afișează un mesaj corespunzător pe afișajul LCD.
→ Am realizat cablajul (10 mai 2023)
→ Scriu cod pentru dispozitiv (24 mai 2023)
→ Asamblez tot in cosul de gunoi (25-28 mai 2023)