This is an old revision of the document!
Schema electrică și diagrame de semnal vor fi atașate mai jos.
Codul utilizează următoarele biblioteci externe: - `Wire.h`: pentru comunicația I2C; - `LiquidCrystal_I2C.h`: pentru controlul afișajului LCD; - `IRremote.h`: pentru interpretarea semnalelor de la telecomandă.
Display-ul LCD este configurat pe adresa I2C `0x27`, cu 16 coloane și 2 rânduri. Receptorul IR este conectat la un pin digital definit ca `IRPIN`. Senzorii ultrasonic folosesc perechi de pini `TRIG`/`ECHO` pentru măsurători. Buzzer-ul este conectat la `BUZZER_PIN`, iar pompa este controlată printr-un releu conectat la `RELAY_PIN`.
Sunt definite coduri pentru butoanele de pe telecomandă: - stânga pentru selectarea paharului mic, - dreapta pentru selectarea paharului mare, - OK pentru confirmarea selecției și inițierea procesului de dozare.
Durata de turnare este stabilită în funcție de selecție, iar valorile pentru nivelul minim și maxim de apă, respectiv distanța maximă admisă pentru detectarea paharului, sunt configurate ca variabile constante.
Funcția `setup()` inițializează componentele hardware, configurând pinii și pornind comunicarea cu LCD-ul și receptorul IR. În bucla principală `loop()`, codul citește valorile senzorilor și așteaptă o comandă de la telecomandă. Dacă este selectat un pahar, sistemul setează durata de turnare și actualizează afișajul. La apăsarea butonului OK, se verifică dacă există suficientă apă și dacă este detectat un pahar. Dacă una dintre condiții nu este îndeplinită, se declanșează un semnal sonor și se afișează un mesaj de eroare. În caz contrar, pompa este activată pentru timpul setat.
Printre funcțiile implementate se numără: - `beep()`: generează un semnal sonor prin buzzer; - `pourWater()`: activează pompa pentru perioada configurată; - `isWater()`: returnează true dacă nivelul apei este suficient; - `isGlass()`: verifică prezența unui pahar; - `readWaterLevel()` și `readGlassDistance()`: returnează valorile măsurate de cei doi senzori ultrasonic.
Fluxul de utilizare este simplu: utilizatorul selectează mărimea paharului, confirmă cu OK, iar sistemul validează condițiile și acționează pompa dacă totul este în regulă. În caz contrar, utilizatorul este notificat corespunzător.