This is an old revision of the document!
Pentru a putea rula exercitiile, este nevoie să compilați NuttX folosind hacktorwatch:iot
, la care va trebui sa activati manual cateva config-uri folosindu-va de sistemul de build (make menuconfig
). Astfel, veti activat atat compilarea codului de driver si initializarea efectiva a hardware-ului, cat veti si incarca pe placa aplicatii de demo pe care le puteti rula.
Ca sa folositi senzorul de haptics, aveti nevoie de urmatoarele config-uri:
CONFIG_FF_DRV2605L
. In cadrul acestui exercitiu de set-up va trebui sa determinati care sunt acele dependinte si sa le activati mai intai pe acelea.
Cele doua config-uri de mai jos va vor oferi access la accelerometru si giroscop:
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 senzorul: acesta 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.
nuttx/include/nuttx/
. Puteți căuta recursiv din linia de comandă folosind grep -r <string>
.
2. In cadrul acestui exercitiu, vrem ca ceasul sa ne ofere informatii (prin vibrare) atunci cand viram stanga, respectiv dreapta.
lsm6dsl_reader
vom citi datele oferite de accelerometru si vom determina directia de mers.drv2605l
are o biblioteca interna de efecte de vibrare pe care o puteti consulta aici, la pagina 63. Alegeti doua efecte din acest tabel si incarcati-le pe ceas.
play_effect
. Parametrul care ne intereseaza si trebuie modificat este play.value
(trebuie sa fie setat pe 0 - disabled).
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.