This shows you the differences between two versions of the page.
pm:prj2024:ddosaru:ioan.teodorescu1206 [2024/05/24 22:54] ioan.teodorescu1206 [Software Design] |
pm:prj2024:ddosaru:ioan.teodorescu1206 [2024/05/27 14:47] (current) ioan.teodorescu1206 [Download] |
||
---|---|---|---|
Line 88: | Line 88: | ||
* I2C | * I2C | ||
* I2C este foarte important in proiectul acesta, având ca principal scop economisirea pinilor microcontroller-ului și simplificarea conexiunilor hardware. Pentru inceput, am folosit un I2C Scanner pentru a găsi adresa ecranului (in acest caz, 0x27). Cu ajutorul ''LiquidCrystal_I2C'', care a facilitat procesul de controlare al ecranului, am reușit să controlez ecranul cu succes. | * I2C este foarte important in proiectul acesta, având ca principal scop economisirea pinilor microcontroller-ului și simplificarea conexiunilor hardware. Pentru inceput, am folosit un I2C Scanner pentru a găsi adresa ecranului (in acest caz, 0x27). Cu ajutorul ''LiquidCrystal_I2C'', care a facilitat procesul de controlare al ecranului, am reușit să controlez ecranul cu succes. | ||
+ | |||
+ | == Explicarea scheletului proiectului == | ||
+ | |||
+ | * ''setup()'' | ||
+ | * Se initializeaza configurația piniilor și initializarea componentelor (Ecran LCD, modul Bluetooth). | ||
+ | * ''updateInsertedState()'' | ||
+ | * Verifica distanta fata de cel mai apropiat obiect, pentru fiecare senzor. Daca distanta relativă este mai mică decât 10 la ambii senzori, inseamnă că avem cârți introduse, iar ''inserted'' e 1, altfel, 0. | ||
+ | * ''displaySpeedSelection()'' | ||
+ | * Afiseaza pe ecran mesajul de selectare a vitezei | ||
+ | * ''updateSpeedDisplay()'' | ||
+ | * Pentru functia de mai sus, actualizează doar procentajul. | ||
+ | * ''displayShufflingMessage()'' | ||
+ | * Afiseaza faptul ca se amestecă pachetul. | ||
+ | * ''doneMessage()'' | ||
+ | * Confirmă terminarea procesului. | ||
+ | * ''startMotors(int motorSpeed)'' | ||
+ | * Porneste motoarele. | ||
+ | * ''displayErrorMessage()'' | ||
+ | * Afișează un mesaj de eroare in cazul in care vreau sa incep procesul însă nu am nimic in compartimente. | ||
+ | * ''stopMotors()'' | ||
+ | * Oprește motoarele. | ||
+ | * ''loop()'' | ||
+ | * În primul rând, calculeaza cele 2 distanțe și verificăm dacă starea s-a schimbat (e diferită de starea cea veche). In caz afirmativ, vedem care este valoarea lui inserted (1 - avem cv in compartiment, 0 - nu e nimic) si se afișează mesajele respective. Apoi, verificam daca am primit ceva de la terminal (modul ble); Daca da, extragem ce am citit. Daca avem un numar din intervalul [1, 6], vom actualiza viteza motoarelor; daca primim 'S', vom da start la motoare. In momentul in care distantele de la ambii senzori cresc, se opreste motorul. | ||
===== Rezultate Obţinute ===== | ===== Rezultate Obţinute ===== | ||
<note tip> | <note tip> | ||
- | Care au fost rezultatele obţinute în urma realizării proiectului vostru. | + | Mic demo înainte de a realiza suportul final: https://www.youtube.com/watch?v=jcgRYc394oc |
</note> | </note> | ||
- | ===== Concluzii ===== | + | {{ :pm:prj2024:ddosaru:it_rez_1.jpg?nolink&500 |}} |
- | ===== Download ===== | + | {{ :pm:prj2024:ddosaru:it_rez_2.jpg?nolink&500 |}} |
- | <note warning> | + | {{ :pm:prj2024:ddosaru:it_rez_3.jpg?nolink&500 |}} |
- | 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ă ;-). | + | |
+ | Rezultat final: https://www.youtube.com/watch?v=CSkBXTHyeMI | ||
+ | |||
+ | Tin să menționez faptul că suportul nu este cel mai perfect, iar procesul de amestecare nu este cel mai bun. | ||
+ | |||
+ | ===== Download ===== | ||
- | 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> |
+ | Arhiva contine: | ||
+ | * Fisierul ''card_shuffler.ino'' care contine logica proiectului | ||
+ | * ''HCSR04-ultrasonic-sensor-lib-2.0.2.zip'' arhiva pentru biblioteca HCSR04 | ||
+ | * ''LiquidCrystal_I2C-1.1.2.zip'' arhiva pentru biblioteca LiquidCrystal_I2C | ||
</note> | </note> | ||
+ | Arhiva -> {{:pm:prj2024:ddosaru:proiect_pm.zip|}} | ||
===== Jurnal ===== | ===== Jurnal ===== | ||