This shows you the differences between two versions of the page.
|
pm:prj2021:apredescu:pov-display [2021/06/01 18:46] andrei.carapcea [Jurnal] |
pm:prj2021:apredescu:pov-display [2021/06/02 22:50] (current) andrei.carapcea [Timer1 si modul de functionare] |
||
|---|---|---|---|
| Line 120: | Line 120: | ||
| Pinout Arduino Nano: | Pinout Arduino Nano: | ||
| - | {{:pm:prj2021:apredescu:nano-pinout.jpg?700|}} | + | {{:pm:prj2021:apredescu:800px-arduino-nano-pinout.png?700|}} |
| + | |||
| + | [[https://commons.wikimedia.org/wiki/File:Arduino-nano-pinout.png | Sursa Arduino Nano pinout]] | ||
| Am ales sa conectez LED-urile astfel incat sa ocupe fix portul PD (PD0-PD7 sau D2-D7 + D1, D0, adica RX0 si TX1). Astfel, pentru a modifica starea LED-urilor, se scrie direct valoarea retinuta in memorie in PORTD. | Am ales sa conectez LED-urile astfel incat sa ocupe fix portul PD (PD0-PD7 sau D2-D7 + D1, D0, adica RX0 si TX1). Astfel, pentru a modifica starea LED-urilor, se scrie direct valoarea retinuta in memorie in PORTD. | ||
| Line 141: | Line 143: | ||
| // input capture interrupt enable | // input capture interrupt enable | ||
| - | TIMSK1 = (1 << ICIE1) | + | TIMSK1 = (1 << ICIE1); |
| // enable output compare A match interrupt | // enable output compare A match interrupt | ||
| - | TIMSK1 |= (1 << OCIE1A) | + | TIMSK1 |= (1 << OCIE1A); |
| // timer overflow interrupt enable | // timer overflow interrupt enable | ||
| TIMSK1 |= (1 << TOIE1); | TIMSK1 |= (1 << TOIE1); | ||
| Line 155: | Line 157: | ||
| Acum, pentru fiecare unghi din cele 64, se va intra pe ISR-ul TIMER1_COMPA_vect, unde se poate afisa starea curenta a LED-urilor si se poate incrementa indicele in vectorul de afisare. La final, se actualizeaza OCR1A pentru a genera o intrerupere la urmatorul unghi. | Acum, pentru fiecare unghi din cele 64, se va intra pe ISR-ul TIMER1_COMPA_vect, unde se poate afisa starea curenta a LED-urilor si se poate incrementa indicele in vectorul de afisare. La final, se actualizeaza OCR1A pentru a genera o intrerupere la urmatorul unghi. | ||
| + | De asemenea, am folosit un "frame buffer" pentru a afisa textul. Astfel, nu apar artefacte atunci cand se actualizeaza configuratia display-ului si se afiseaza o configuratie incompleta. | ||
| Line 191: | Line 194: | ||
| ===== Concluzii ===== | ===== Concluzii ===== | ||
| + | Proiectul a fost interesant si are un rezultat satisfacator vizual. | ||
| + | |||
| + | A fost o experienta placuta pe partea de hardware si de software. | ||
| + | |||
| + | Cea mai dificila parte a proiectului este echilibrarea partii rotative, mai ales daca nu se foloseste un motor suficient de puternic. | ||
| + | |||
| + | Posibilitati de extindere a proiectului: | ||
| + | * modul Bluetooth + aplicatie de mobil pentru configurarea modurilor de iluminare | ||
| + | * modul RTC pentru afisarea timpului in timp real | ||
| + | * folosirea unui sistem de transmisie a puterii wireless pentru a alimenta componentele de pe rotor | ||
| ===== Download ===== | ===== Download ===== | ||
| + | PDF: | ||
| + | https://ocw.cs.pub.ro/courses/pm/prj2021/apredescu/pov-display?do=export_pdf | ||
| + | Cod: | ||
| + | |||
| + | {{:pm:prj2021:apredescu:pm-pov-display.zip|}} | ||
| ===== Bibliografie ===== | ===== Bibliografie ===== | ||
| - | PDF: https://ocw.cs.pub.ro/courses/pm/prj2021/apredescu/pov-display?do=export_pdf | + | |
| [[http://www.techydiy.org/arduino-pov-display/| techydiy POV display]] | [[http://www.techydiy.org/arduino-pov-display/| techydiy POV display]] | ||
| + | |||
| + | [[https://ocw.cs.pub.ro/courses/_media/pm/atmel-7810-automotive-microcontrollers-atmega328p_datasheet.pdf | Datasheet atmega328p]] | ||