This shows you the differences between two versions of the page.
pm:prj2023:fstancu:alexandra.voicila [2023/05/07 14:12] alexandra.voicila created |
pm:prj2023:fstancu:alexandra.voicila [2023/05/29 20:10] (current) alexandra.voicila [Software Design] |
||
---|---|---|---|
Line 3: | Line 3: | ||
Proiectul va simula aruncarea unui zar. In cazul in care ai noroc si nimeresti 6, se va deschide o cutie cu o mica surpriza. In total, vei avea 3 sanse de aruncare care vor fi contorizate si afisate prin intermediul unui ecran. | Proiectul va simula aruncarea unui zar. In cazul in care ai noroc si nimeresti 6, se va deschide o cutie cu o mica surpriza. In total, vei avea 3 sanse de aruncare care vor fi contorizate si afisate prin intermediul unui ecran. | ||
- | Cred ca este un proiect amuzant si interactiv. In acelasi timp, consider ca proiectul imbina atat cunostinte de PM, cat si de probabilitate/matematica. | + | Cred ca este un proiect amuzant si interactiv. In acelasi timp, consider ca proiectul imbina atat cunostinte de PM, cat si de probabilitate/matematica. Pentru a afla care este surpriza va astept la PM fair ;-) |
===== Descriere generală ===== | ===== Descriere generală ===== | ||
Line 13: | Line 13: | ||
===== Hardware Design ===== | ===== Hardware Design ===== | ||
- | Lista componente: | + | Lista componente:\\ |
+ | -Arduino UNO\\ | ||
+ | -LCD I2C 1604\\ | ||
+ | -leduri\\ | ||
+ | -fire\\ | ||
+ | -rezistente variabile\\ | ||
+ | -buton\\ | ||
+ | -Servomotor SG90 cu limitator\\ | ||
- | -Arduino UNO | + | {{:pm:prj2023:fstancu:schema_hardware.png?600 |}} |
- | + | {{:pm:prj2023:fstancu:schema_thinkercad_va.png?700 |}} | |
- | -LCD I2C 1604 | + | |
- | + | ||
- | -leduri | + | |
- | + | ||
- | -fire | + | |
- | + | ||
- | -rezistente variabile | + | |
- | + | ||
- | -buton | + | |
- | + | ||
- | -Servomotor SG90 cu limitator | + | |
===== Software Design ===== | ===== Software Design ===== | ||
+ | **Dezvoltarea codului** s-a realizat in Arduino IDE.\\ | ||
+ | **Laboratoare**: I2C, Intreruperi, PWM \\ | ||
+ | **Biblioteci folosite** au fost LiquidCrystal_I2C.h, Servo.h pentru controlarea servomotorului, respectiv a display-ul I2C de catre Arduino.\\ | ||
+ | Pentru **initializare**, am folosit variabile globale precum button (pinul la care este conectat butonul), pozitia initiala a servomotorului (aleasa convenabil prin testare).\\ | ||
+ | **Functii:**\\ | ||
+ | -setup() - initializarea servomotorului, starii pinilor, serialei (pentru afisarea mesajelor de debug), a lcd-ului si a intreruperii folosite la apasarea butonului.\\ | ||
+ | -displayNumOnDice() - se genereza numarul random in functie de care se face aprinderea ledurilor si afisarea unui mesaj specific pe lcd. In cazul in care se nimereste 6, jocul este "castigat", servomotorul se activeaza, deschizand cutia pe care o pastreaza deschisa 5s, un timp suficient pentru jucator sa isi ridice premiul.\\ | ||
+ | -ISR() - rutina de tratare a intreruperii, facuta dupa debounceTime\\ | ||
+ | -rollDice() - functia specifica "aruncarii zarului"\\ | ||
+ | -loop() - apeleaza functia precedenta\\ | ||
+ | -generateRandomSeed() - pentru a creste complexitatea, am folosit aceasta functie de generare a seed-ului in locul functiei obisnuite de random. Folosind functia de analogRead, se realizeaza o citire pe un pin neconectat, "in aer". Dar acest lucru nu este suficient deoarece tensiunea nu fluctueaza la un nivel considerabil. Folosindu-ma totusi de valorile citite, interpretate ca biti, se creeaza prin shiftari si adunari un rezultat final pentru seed pe 32 de biti. | ||
- | <note tip> | + | ===== Proiectul finalizat ===== |
- | Etapa urmatoare | + | {{:pm:prj2023:fstancu:va4.jpeg?300|}} |
- | </note> | + | {{:pm:prj2023:fstancu:va3.jpeg?300|}}\\ |
+ | {{:pm:prj2023:fstancu:va2.jpeg?300|}} | ||
+ | {{:pm:prj2023:fstancu:va1.jpeg?300|}} | ||
- | ===== Rezultate Obţinute ===== | ||
- | |||
- | <note tip> | ||
- | Etapa urmatoare | ||
- | </note> | ||
===== Concluzii ===== | ===== Concluzii ===== | ||
+ | Mi-a placut mult sa lucrez la acest proiect, fiind una dintre singurele ocazii de a interactiona cu partea hardware. Am avut unele dificultati la inceput (mi-era teama sa nu stric componentele) din cauza lipsei de experienta in lucrul cu circuite fizice. Pentru inceput, am realizat circuitul in thinkercad ca sa pot experimenta mai libera, fara sa am teama amintita anterior. Dar la final, am fost foarte multumita si mandra de proiectul realizat.=) | ||
===== Download ===== | ===== Download ===== | ||
- | + | {{:pm:prj2023:fstancu:src_dicesimulator.zip|}} | |
- | <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ă ;-). | + | |
- | + | ||
- | 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> | + | |
===== Jurnal ===== | ===== Jurnal ===== | ||
<note tip> | <note tip> | ||
- | 07.05 - etapa 2 | + | 07.05 - etapa 2\\ |
+ | 21.05 - etapa hardware\\ | ||
+ | 27.05 - etapa software\\ | ||
+ | 28.05 - adaugarea ultimelor detalii \\ | ||
+ | 29.05 - finalizarea proiectului | ||
</note> | </note> | ||
Line 61: | Line 64: | ||
<note> | <note> | ||
- | Listă cu documente, datasheet-uri, resurse Internet folosite, eventual grupate pe **Resurse Software** şi **Resurse Hardware**. | + | https://docs.arduino.cc/learn/electronics/servo-motors \\ |
+ | https://arduinogetstarted.com/tutorials/arduino-lcd-i2c \\ | ||
+ | https://rheingoldheavy.com/better-arduino-random-values \\ | ||
+ | https://www.learnrobotics.org/blog/cool-arduino-projects-arduino-dice-simulation | ||
</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> | ||