This shows you the differences between two versions of the page.
pm:prj2022:imacovei:theodor.cristea [2022/04/21 23:38] theodor.cristea created |
pm:prj2022:imacovei:theodor.cristea [2022/05/27 22:24] (current) theodor.cristea |
||
---|---|---|---|
Line 23: | Line 23: | ||
* Senzor vibratii | * Senzor vibratii | ||
* Servomotor | * Servomotor | ||
- | * 7 segment display | + | * 4 digit 7 segment display |
* Butoane | * Butoane | ||
* Fire | * Fire | ||
+ | |||
+ | Schema electrica: | ||
+ | |||
+ | {{:pm:prj2022:imacovei:schematic_theo_cristea.png?300|}} | ||
===== Software Design ===== | ===== Software Design ===== | ||
+ | |||
+ | Mediu de dezvoltare: Arduino IDE | ||
+ | Librarii: Servo.h | ||
+ | Descriere functii: | ||
+ | * setup: setez pinii de input si de output, activez intreruperile PCINT8 si PCINT9, pornesc fast-PWM cu top-ul pe ICR1 cu prescaler de 64 | ||
+ | * loop: actualizez seed-ul pentru random folosind datele citite de senzori, iar daca servo-ul este pornit, actualizez OCR1A-ul; la final apelez displayNumber | ||
+ | * displayNumber: afisez numarul pe display; din cauza ca display-ul nu este capabil sa afiseze mai mult de o cifra la un moment dat, ciclez prin afisarea cifrelor cu un delay de 5 milisecunde | ||
+ | * ISR(PCINT1_vect): verific apasarea butoanelor si ma folosesc de functia millis() pentru a ma asigura ca exista un delay de minim 0.5 secunde intre apasari (sa nu se apese butonul de mai multe ori) | ||
+ | * pickDigit: alege care din cele 4 cifre de pe display este afisata | ||
+ | * displayDigit: alege ce cifra se afiseaza | ||
+ | * random: aplica un hash asupra seed-ului si numarului generat precedent pentru a obtine un nou numar random | ||
+ | * turnOff: se seteaza toate segmentele de pe display pe off | ||
+ | |||
===== Rezultate Obţinute ===== | ===== Rezultate Obţinute ===== | ||
+ | https://youtube.com/shorts/TWNSeBUvwRE?feature=share \\ | ||
+ | Puteti observa ca din filmare nu se intelege foarte bine ce se afiseaza pe display. In realitate se vede bine. Cifrele sunt afisate alternativ, cu un delay de 5 ms intre ele, deoarece display-ul este incapabil sa afiseze mai mult de o cifra la un moment dat. Astfel, se simuleaza afisarea continua a tuturor celor 4 cifre. Ochiul uman nu observa nicio anomalie, in schimb camera observa. | ||
===== Concluzii ===== | ===== Concluzii ===== | ||
+ | Mi-a placut super mult sa lucrez pe acest proiect. Mi s-a parut super interesant sa caut in datasheet diverse informatii despre intreruperi, pwm si am invatat multe despre lucrul cu arduino si despre conectarea hardware-ului folosind breadboard-ul. | ||
===== Download ===== | ===== Download ===== | ||
+ | {{:pm:prj2022:imacovei:true_random_number_generator.zip|}} | ||
===== Jurnal ===== | ===== Jurnal ===== | ||
+ | 20.04 - Alegere tema proiect \\ | ||
+ | 21.04 - Comandare componente \\ | ||
+ | 30.04-10.04 - Implementarea pe Tinkercad a proiectului in masura disponibilitatii componentelor \\ | ||
+ | 21.05-23.05 - Implementarea fizic a proiectului (cu tot cu scrierea de cod pentru componentele ce nu exista pe tinkercad) \\ | ||
+ | ===== Legenda pentru Bibliografie/Resurse ===== | ||
+ | [1] - lava lamps din introducere \\ | ||
+ | [2] - pini si intreruperile specifice pinilor \\ | ||
+ | [3] - pwm si intreruperi \\ | ||
+ | [4] - pwm si intreruperi \\ | ||
+ | [5] - conectare display \\ | ||
+ | [6] - utilizarea display-ului \\ | ||
+ | [7] - frecventa pwm si conectarea servomotorului \\ | ||
+ | [8] - conectarea servomorotului \\ | ||
+ | |||
===== Bibliografie/Resurse ===== | ===== Bibliografie/Resurse ===== | ||
- | <sup>[1]</sup>https://www.cloudflare.com/learning/ssl/lava-lamp-encryption/ | + | <sup>[1]</sup>https://www.cloudflare.com/learning/ssl/lava-lamp-encryption/ \\ |
+ | <sup>[2]</sup>https://ocw.cs.pub.ro/courses/_detail/pm/lab/uno.jpg?id=pm%3Alab%3Alab2-2022 \\ | ||
+ | <sup>[3]</sup>https://ocw.cs.pub.ro/courses/_media/pm/atmel-7810-automotive-microcontrollers-atmega328p_datasheet.pdf \\ | ||
+ | <sup>[4]</sup>https://ocw.cs.pub.ro/courses/pm/lab/lab3-2022 \\ | ||
+ | <sup>[5]</sup>https://www.optimusdigital.ro/ro/optoelectronice-afisaje-led/646-afisaj-cu-led-rosu-de-4-cifre-cu-catod-comun-de-036-3641as.html \\ | ||
+ | <sup>[6]</sup>https://create.arduino.cc/projecthub/SAnwandter1/programming-4-digit-7-segment-led-display-2d33f8 \\ | ||
+ | <sup>[7]</sup>https://www.optimusdigital.ro/ro/motoare-servomotoare/26-micro-servomotor-sg90.html \\ | ||
+ | <sup>[8]</sup>https://components101.com/motors/servo-motor-basics-pinout-datasheet \\ | ||
<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> | ||