Differences

This shows you the differences between two versions of the page.

Link to this comparison view

si:laboratoare:2025:02 [2025/10/08 17:41]
farhad_ali.gul [Haptics (DRV2605L)]
si:laboratoare:2025:02 [2025/10/08 17:43] (current)
farhad_ali.gul Update exercitii
Line 81: Line 81:
 </​note>​ </​note>​
  
-**1.** ​Înțelegeți ​API-ul ​oferit de NuttX pentru ​aceste două device-uri:+**1.** ​Pentru a va acomoda cu API-ul ​pe care NuttX il ofera pentru ​a interactiona cu cele doua device-uri, in cadrul acestui exercitiu va trebui sa inspectati codul si sa rulati aplicatiile de demo disponibile in repository-ul ''​nuttx-apps''​. 
 +  - ''​nuttx-apps/​examples/​drv2605l/''​ initializeaza device-ul cu anumite efecte de vibrare (''​upload_rom_effect'',​ ''​upload_constant_effect''​). Apelarea acestora se face ulterior, "on demand",​ prin ''​play_effect''​. 
 +  - ''​nuttx-apps/​examples/​lsm6dsl_reader''​ afiseaza la consola o data la doua secunde datele obtinute de la accelerometru si giroscop. Observati modul de interactiune cu senzorulacesta este expus printr-o intrare in ''/​dev/''​ care va trebui folosita in cadrul apelului de sistem ''​open'',​ iar mai apoi folosim apeluri de ''​ioctl''​ pentru a interactiona cu hardware-ul. 
 +  - Cautati definitiile pentru structurile de date folosite in ambele aplicatii.
  
-  - ''​nuttx-apps/examples/drv2605l/'' ​– inițializează efecte haptice (''​upload_rom_effect'',​ ''​play_effect'' ​etc.)+<note important>​ 
-  - ''​nuttx-apps/​examples/​lsm6dsl_reader'' ​– afișează valorile ​de la accelerometru și giroscop la fiecare 2 secunde.+Toate fișierele de tip header le puteți găsi în ''​nuttx/​include/nuttx/''​. Puteți căuta recursiv din linia de comandă folosind ​''​grep -r <​string>​''​
 +</​note>​ 
 + 
 +**2.** In cadrul acestui exercitiuvrem ca ceasul sa ne ofere informatii (prin vibrare) atunci cand viram stanga, respectiv dreapta. 
 +  - Folosindu-ne de ''​lsm6dsl_reader'' ​vom citi datele oferite de accelerometru si vom determina directia de mers. 
 +  - Daca ceasul este nemiscat sau merge inainte nu va oferi niciun fel de feedback utilizatorului
 +  - ''​drv2605l'' ​are o biblioteca interna ​de efecte de vibrare pe care o puteti consulta [[https://​www.ti.com/​lit/​ds/​symlink/​drv2605l.pdf|aici]], ​la pagina 63. Alegeti doua efecte din acest tabel si incarcati-le pe ceas. 
 +  - In functie de directia de mers, vom rula in mod constant unul dintre cele doua efecte pana cand ceasul va reveni in stare initiala (ceasul este nemiscat sau sau se misca doar inainte).
  
 <note tip> <note tip>
-Folosiți ​''​grep -r <​string>​ nuttx/​include/​nuttx/​'' ​pentru a găsi structurile de date relevante.+**Hint:** pentru a opri un efect, trebuie sa scrieti o functie care realizeaza inversul lui ''​play_effect''​. Parametrul care ne intereseaza ​si trebuie modificat este ''​play.value''​ (trebuie sa fie setat pe 0 - disabled).
 </​note>​ </​note>​
  
-**2.** Implementați feedback prin vibrație în funcție de direcția de mișcare: +<note tip> 
- +**Hint:** pentru a putea face polling mai des pe senzor si sa obtineti date mai accurate este nevoie sa folositi ​''​usleep''​. 
-  - Folosiți ''​lsm6dsl_reader'' ​pentru a determina direcția (stânga/​dreapta). +</​note>​
-  - Alegeți două efecte haptice din [[https://​www.ti.com/​lit/​ds/​symlink/​drv2605l.pdf|biblioteca DRV2605L]] (pagina 63). +
-  - Asociați efectele: +
-    * viraj stânga → efect 1   +
-    * viraj dreapta → efect 2   +
-    * staționar / înainte → fără vibrație +
-  - Scrieți o funcție pentru oprirea vibrației (''​play.value = 0''​)+
-  - Folosiți ''​usleep()''​ pentru citiri mai dese ale senzorului.+
  
-**3. (Bonus)** ​  +**3. (Bonus)** ​La exercitiul anterior, ​intensitatea ​de vibrare era absoluta (on/off). Ne dorim sa avem un mecanism mai complex prin care sa folosim vibrare graduala in functie de nivelul acceleratiei - cu cat acceleratia este mai mare, cu atat vibratia va fi mai puternica.
-Faceți vibrația proporțională cu intensitatea ​accelerației – cu cât accelerația e mai mare, cu atât vibrația e mai puternică.+
  
 ===== Resurse ===== ===== Resurse =====
   * [[https://​www.ti.com/​lit/​ds/​symlink/​drv2605l.pdf|DRV2605L Effect library]]   * [[https://​www.ti.com/​lit/​ds/​symlink/​drv2605l.pdf|DRV2605L Effect library]]
  
si/laboratoare/2025/02.1759934512.txt.gz · Last modified: 2025/10/08 17:41 by farhad_ali.gul
CC Attribution-Share Alike 3.0 Unported
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0