This shows you the differences between two versions of the page.
pm:prj2024:vstoica:bogdan.sprincenatu [2024/05/27 09:02] bogdan.sprincenatu [Software Design] |
pm:prj2024:vstoica:bogdan.sprincenatu [2024/05/27 23:37] (current) bogdan.sprincenatu [Rezultate Obţinute] |
||
---|---|---|---|
Line 42: | Line 42: | ||
Acest cod implementează un sistem automat de dozare a apei, controlat prin telecomandă infraroșu și utilizând senzori cu ultrasunete pentru a detecta nivelul apei și prezența unui pahar. Codul este scris pentru un microcontroller Arduino și utilizează un display LCD pentru a afișa mesaje către utilizator. Iată o descriere detaliată a codului: | Acest cod implementează un sistem automat de dozare a apei, controlat prin telecomandă infraroșu și utilizând senzori cu ultrasunete pentru a detecta nivelul apei și prezența unui pahar. Codul este scris pentru un microcontroller Arduino și utilizează un display LCD pentru a afișa mesaje către utilizator. Iată o descriere detaliată a codului: | ||
- | ### Biblioteci Incluse | + | Biblioteci Incluse |
- | - *Wire.h*: Utilizată pentru comunicarea I2C. | + | - Wire.h: Utilizată pentru comunicarea I2C. |
- | - *LiquidCrystal_I2C.h*: Controlul display-ului LCD prin I2C. | + | - LiquidCrystal_I2C.h: Controlul display-ului LCD prin I2C. |
- | - *IRremote.h*: Pentru a citi semnalele de la telecomanda infraroșu. | + | - IRremote.h: Pentru a citi semnalele de la telecomanda infraroșu. |
- | ### Definirea Componentelor | + | Definirea Componentelor |
- | - *LiquidCrystal_I2C lcd(0x27, 16, 2)*: Inițializează display-ul LCD cu adresa I2C 0x27, având 16 coloane și 2 rânduri. | + | - LiquidCrystal_I2C lcd(0x27, 16, 2): Inițializează display-ul LCD cu adresa I2C 0x27, având 16 coloane și 2 rânduri. |
- | - *decode_results results*: Structură pentru a stoca rezultatele decodării semnalului IR. | + | - decode_results results: Structură pentru a stoca rezultatele decodării semnalului IR. |
- | - *Pinii de conexiune*: | + | - Pinii de conexiune: |
- | - *IRPIN*: Pinul pentru receptorul IR. | + | - IRPIN: Pinul pentru receptorul IR. |
- | - *TRIG_PIN1 și ECHO_PIN1*: Pinii pentru senzorul de nivel al apei. | + | - TRIG_PIN1 și ECHO_PIN1: Pinii pentru senzorul de nivel al apei. |
- | - *TRIG_PIN2 și ECHO_PIN2*: Pinii pentru senzorul de prezență a paharului. | + | - TRIG_PIN2 și ECHO_PIN2: Pinii pentru senzorul de prezență a paharului. |
- | - *BUZZER_PIN*: Pinul pentru buzzer. | + | - BUZZER_PIN: Pinul pentru buzzer. |
- *RELAY_PIN*: Pinul pentru releu. | - *RELAY_PIN*: Pinul pentru releu. | ||
- | - *Coduri pentru butoane IR*: | + | - Coduri pentru butoane IR: |
- | - *BUTTON_LEFT*: Cod pentru butonul de alegere a paharului mic. | + | - BUTTON_LEFT: Cod pentru butonul de alegere a paharului mic. |
- | - *BUTTON_RIGHT*: Cod pentru butonul de alegere a paharului mare. | + | - BUTTON_RIGHT: Cod pentru butonul de alegere a paharului mare. |
- | - *BUTTON_OK*: Cod pentru butonul de confirmare. | + | - BUTTON_OK: Cod pentru butonul de confirmare. |
- | - *Constante*: | + | - Constante: |
- | - *MAX_WATER_LEVEL*: Nivelul maxim de apă necesar. | + | - MAX_WATER_LEVEL: Nivelul maxim de apă necesar. |
- | - *MIN_WATER_LEVEL*: Nivelul minim de apă. | + | - MIN_WATER_LEVEL: Nivelul minim de apă. |
- | - *MAX_GLASS_DISTANCE*: Distanța maximă la care este detectat paharul. | + | - MAX_GLASS_DISTANCE: Distanța maximă la care este detectat paharul. |
- | - *SMALL_GLASS* și *BIG_GLASS*: Timpul de turnare pentru pahare mici și mari. | + | - SMALL_GLASS și BIG_GLASS: Timpul de turnare pentru pahare mici și mari. |
- | ### Setup | + | Setup |
- Inițializează LCD-ul și buzzer-ul. | - Inițializează LCD-ul și buzzer-ul. | ||
- Configurează pinii pentru senzorii de ultrasunete, releu și receptorul IR. | - Configurează pinii pentru senzorii de ultrasunete, releu și receptorul IR. | ||
- Pornește citirea semnalului IR și comunicarea serială. | - Pornește citirea semnalului IR și comunicarea serială. | ||
- | ### Loop | + | Loop |
- Afișează pe serial monitor distanțele citite de la senzorii de apă și pahar. | - Afișează pe serial monitor distanțele citite de la senzorii de apă și pahar. | ||
- Verifică dacă a fost primit un semnal IR: | - Verifică dacă a fost primit un semnal IR: | ||
Line 80: | Line 80: | ||
- Dacă sunt îndeplinite condițiile, începe procesul de turnare a apei. | - Dacă sunt îndeplinite condițiile, începe procesul de turnare a apei. | ||
- | ### Funcții Auxiliare | + | Funcții Auxiliare |
- | - *beep()*: Emite un sunet de avertizare prin buzzer. | + | - beep(): Emite un sunet de avertizare prin buzzer. |
- | - *pourWater()*: Activează releul pentru a turna apă pentru timpul specificat și resetează variabila pourTime. | + | - pourWater(): Activează releul pentru a turna apă pentru timpul specificat și resetează variabila pourTime. |
- | - *isWater()*: Verifică dacă nivelul apei este suficient. | + | - isWater(): Verifică dacă nivelul apei este suficient. |
- | - *isGlass()*: Verifică dacă este prezent un pahar. | + | - isGlass(): Verifică dacă este prezent un pahar. |
- | - *readWaterLevel()*: Citește și returnează nivelul apei folosind senzorul cu ultrasunete. | + | - readWaterLevel(): Citește și returnează nivelul apei folosind senzorul cu ultrasunete. |
- | - *readGlassDistance()*: Citește și returnează distanța până la pahar folosind senzorul cu ultrasunete. | + | - readGlassDistance(): Citește și returnează distanța până la pahar folosind senzorul cu ultrasunete. |
- | ### Fluxul de Operare | + | Fluxul de Operare |
1. Utilizatorul apasă un buton pe telecomandă pentru a selecta mărimea paharului. | 1. Utilizatorul apasă un buton pe telecomandă pentru a selecta mărimea paharului. | ||
2. Codul IR este citit și interpretat. | 2. Codul IR este citit și interpretat. | ||
Line 99: | Line 99: | ||
</note> | </note> | ||
- | ===== Rezultate Obţinute ===== | ||
- | |||
- | <note tip> | ||
- | Care au fost rezultatele obţinute în urma realizării proiectului vostru. | ||
- | </note> | ||
- | |||
- | ===== Concluzii ===== | ||
===== Download ===== | ===== Download ===== | ||
<note warning> | <note warning> | ||
- | O arhivă (sau mai multe dacă este cazul) cu fişierele obţinute în urma realizării proiectului: surse, scheme, etc. Un fişier README, un ChangeLog, un script de compilare şi copiere automată pe uC crează întotdeauna o impresie bună ;-). | + | {{:pm:prj2024:vstoica:bogdan_sprincenatu_332cc.zip|}} |
- | + | ||
- | Fişierele se încarcă pe wiki folosind facilitatea **Add Images or other files**. Namespace-ul în care se încarcă fişierele este de tipul **:pm:prj20??:c?** sau **:pm:prj20??:c?:nume_student** (dacă este cazul). **Exemplu:** Dumitru Alin, 331CC -> **:pm:prj2009:cc:dumitru_alin**. | + | |
</note> | </note> | ||
- | ===== Jurnal ===== | ||
- | |||
- | <note tip> | ||
- | Puteți avea și o secțiune de jurnal în care să poată urmări asistentul de proiect progresul proiectului. | ||
- | </note> | ||
- | |||
- | ===== Bibliografie/Resurse ===== | ||
- | |||
- | <note> | ||
- | Listă cu documente, datasheet-uri, resurse Internet folosite, eventual grupate pe **Resurse Software** şi **Resurse Hardware**. | ||
- | </note> | ||
- | <html><a class="media mediafile mf_pdf" href="?do=export_pdf">Export to PDF</a></html> | ||