This shows you the differences between two versions of the page.
pm:prj2024:sseverin:diana.stanicoaea [2024/05/25 23:38] diana.stanicoaea [Software Design] |
pm:prj2024:sseverin:diana.stanicoaea [2024/05/27 00:16] (current) diana.stanicoaea [Bibliografie/Resurse] |
||
---|---|---|---|
Line 54: | Line 54: | ||
**Descrierea logicii și metodelor folosite** | **Descrierea logicii și metodelor folosite** | ||
- | * setup() - folosit pentru initializarea componentelor (ecran OLEED, buton cu rezistență internă de pull-up, led RGB, buzzer) | + | * **setup()** - folosit pentru initializarea componentelor (ecran OLEED, buton cu rezistență internă de pull-up, led RGB, buzzer) |
- | * loop() - aici este implementata toata logica programului. Initial se afiseaza un mesaj de pregatire al senzorului deoarece acesta trebuie sa se inclazeasca pentru a afisa valori corecte. Cand timerul expira, voi afisa pe ecran faptul ca senzorul este gata si se poate incepe masurarea prin apasarea butonului. Dupa ce este apasat se va incepe masurarea timp de 7 secunde. Dupa ce s-au terminat cele 7 secunde voi afisa ultima valoare masurata si voi apela functia printResult() pentru a declansa actiunile corespunzatoare in functie de valoare. | + | * **loop()** - aici este implementata toata logica programului. Initial se afiseaza un mesaj de pregatire al senzorului deoarece acesta trebuie sa se inclazeasca pentru a afisa valori corecte. Cand timerul expira, voi afisa pe ecran faptul ca senzorul este gata si se poate incepe masurarea prin apasarea butonului. Dupa ce este apasat se va incepe masurarea timp de 7 secunde. Dupa ce s-au terminat cele 7 secunde voi afisa ultima valoare masurata si voi apela functia printResult() pentru a declansa actiunile corespunzatoare in functie de valoare. |
- | * printResult() - Daca valoarea este mai mica de 200, se va afisa 'You can drive.' pe ecran si se va face led-ul verde. | + | * **printResult()** |
+ | <note> | ||
+ | - Daca valoarea este mai mica de 200, se va afisa 'You can drive.' pe ecran si se va face led-ul verde. | ||
- Daca valoarea se afla intre 200 si 280, se va afisa 'Wait one hour.' pe ecran, led-ul va fi galben iar buzzer-ul va transmite sunete intrerupte. | - Daca valoarea se afla intre 200 si 280, se va afisa 'Wait one hour.' pe ecran, led-ul va fi galben iar buzzer-ul va transmite sunete intrerupte. | ||
- Daca valoarea se afla intre 280 si 350, se va afisa 'Wait a few hours.' pe ecran, led-ul va fi tot galben, iar buzzer-ul va transmite aceleasi sunete intrerupte. | - Daca valoarea se afla intre 280 si 350, se va afisa 'Wait a few hours.' pe ecran, led-ul va fi tot galben, iar buzzer-ul va transmite aceleasi sunete intrerupte. | ||
- Daca valoarea este mai mare de 350, se va afisa 'Do not drive!', led-ul va deveni rosu iar buzzer-ul va scoate un sunet constant de alta frecventa. | - Daca valoarea este mai mare de 350, se va afisa 'Do not drive!', led-ul va deveni rosu iar buzzer-ul va scoate un sunet constant de alta frecventa. | ||
- | * printButtonPrompt() - functie pentru a afisa mesajul ca senzorul este gata de masurare. | ||
- | * printTitle() - functie pentru a afisa numele 'Breatalyzer" constant in partea de sus a ecranului. | ||
- | * printWarming() - functie pentru a afisa mesajul de pregatire a senzorului. | ||
- | * printAlcohol() - functie care afiseaza valoarea nivelului de alcool. | ||
- | * readAlcohol() - functie pentru citirea valorilor de la senzor si calibrarea lor. | ||
- | |||
- | |||
- | |||
- | <note tip> | ||
- | Descrierea codului aplicaţiei (firmware): | ||
- | * mediu de dezvoltare (if any) (e.g. AVR Studio, CodeVisionAVR) | ||
- | * librării şi surse 3rd-party (e.g. Procyon AVRlib) | ||
- | * algoritmi şi structuri pe care plănuiţi să le implementaţi | ||
- | * (etapa 3) surse şi funcţii implementate | ||
</note> | </note> | ||
+ | * **printButtonPrompt()** - functie pentru a afisa mesajul ca senzorul este gata de masurare. | ||
+ | * **printTitle()** - functie pentru a afisa numele 'Breatalyzer" constant in partea de sus a ecranului. | ||
+ | * **printWarming()** - functie pentru a afisa mesajul de pregatire a senzorului. | ||
+ | * **printAlcohol()** - functie care afiseaza valoarea nivelului de alcool. | ||
+ | * **readAlcohol()** - functie pentru citirea valorilor de la senzor si calibrarea lor. | ||
===== Rezultate Obţinute ===== | ===== Rezultate Obţinute ===== | ||
- | <note tip> | + | <note> |
- | Care au fost rezultatele obţinute în urma realizării proiectului vostru. | + | Demos: |
+ | * [[https://youtu.be/sa9CNZZ7o-8?si=sKB12-hLpTnPyphd|Exemplu 1]] | ||
+ | * [[https://youtube.com/shorts/4SyZZIwYV2M?si=dK28bVFj5OvlAsvM|Exemplu 2]] | ||
</note> | </note> | ||
===== Concluzii ===== | ===== Concluzii ===== | ||
+ | Prin combinarea componentelor hardware și software, am reușit să construiesc un dispozitiv capabil să detecteze nivelurile de alcool din respirație și să ofere recomandări corespunzătoare șoferilor. | ||
+ | |||
+ | În timpul dezvoltării, am întâlnit diverse provocări tehnice, cum ar fi gestionarea temporizărilor și a controlului buzzer-ului fără a bloca funcționarea sistemului. Cu toate acestea, prin aplicarea unor soluții eficiente și prin perseverență, am reușit să depășesc aceste obstacole și să obțin rezultatele dorite. | ||
===== Download ===== | ===== Download ===== | ||
- | <note warning> | + | <note> |
- | 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ă ;-). | + | |
- | 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**. | + | {{:pm:prj2024:sseverin:breathalyzer.zip|}} |
</note> | </note> | ||
Line 101: | Line 99: | ||
<note> | <note> | ||
- | Listă cu documente, datasheet-uri, resurse Internet folosite, eventual grupate pe **Resurse Software** şi **Resurse Hardware**. | + | Resurse software: |
+ | * https://ocw.cs.pub.ro/courses/pm/lab/lab1-2023 | ||
+ | * https://ocw.cs.pub.ro/courses/pm/lab/lab3-2023-2024 | ||
+ | * https://ocw.cs.pub.ro/courses/pm/lab/lab6-2023-2024 | ||
+ | |||
+ | Resurse hardware: | ||
+ | * https://www.sparkfun.com/datasheets/Sensors/MQ-3.pdf | ||
+ | * https://docs.arduino.cc/tutorials/generic/digital-input-pullup/ | ||
+ | * https://docs.arduino.cc/learn/microcontrollers/analog-output/ | ||
+ | * https://circuitdigest.com/microcontroller-projects/understanding-difference-between-active-and-passive-buzzer-with-arduino | ||
</note> | </note> | ||
<html><a class="media mediafile mf_pdf" href="?do=export_pdf">Export to PDF</a></html> | <html><a class="media mediafile mf_pdf" href="?do=export_pdf">Export to PDF</a></html> | ||