Placa pentru Analog Device ADXL345.
Cod Sursa include wire.h include adxl345.h ADXL345 adxl; variable adxl is an instance of the ADXL345 library void setup(){ Serial.begin(9600); adxl.powerOn(); set activity inactivity thresholds (0-255) adxl.setActivityThreshold(75); 62.5mg per increment adxl.setInactivityThreshold(75); 62.5mg per increment adxl.setTimeInactivity(10); how many seconds of no activity is inactive? look of activity movement on this axes - 1 on; 0 off adxl.setActivityX(1); adxl.setActivityY(1); adxl.setActivityZ(1); look of inactivity movement on this axes - 1 on; 0 off adxl.setInactivityX(1); adxl.setInactivityY(1); adxl.setInactivityZ(1); look of tap movement on this axes - 1 on; 0 off adxl.setTapDetectionOnX(0); adxl.setTapDetectionOnY(0); adxl.setTapDetectionOnZ(1); set values for what is a tap, and what is a double tap (0-255) adxl.setTapThreshold(50); 62.5mg per increment adxl.setTapDuration(15); 625 s per increment adxl.setDoubleTapLatency(80); 1.25ms per increment adxl.setDoubleTapWindow(200); 1.25ms per increment set values for what is considered freefall (0-255) adxl.setFreeFallThreshold(7); (5 - 9) recommended - 62.5mg per increment adxl.setFreeFallDuration(45); (20 - 70) recommended - 5ms per increment setting all interupts to take place on int pin 1 I had issues with int pin 2, was unable to reset it adxl.setInterruptMapping( ADXL345_INT_SINGLE_TAP_BIT, ADXL345_INT1_PIN ); adxl.setInterruptMapping( ADXL345_INT_DOUBLE_TAP_BIT, ADXL345_INT1_PIN ); adxl.setInterruptMapping( ADXL345_INT_FREE_FALL_BIT, ADXL345_INT1_PIN ); adxl.setInterruptMapping( ADXL345_INT_ACTIVITY_BIT, ADXL345_INT1_PIN ); adxl.setInterruptMapping( ADXL345_INT_INACTIVITY_BIT, ADXL345_INT1_PIN ); register interupt actions - 1 on; 0 off adxl.setInterrupt( ADXL345_INT_SINGLE_TAP_BIT, 1); adxl.setInterrupt( ADXL345_INT_DOUBLE_TAP_BIT, 1); adxl.setInterrupt( ADXL345_INT_FREE_FALL_BIT, 1); adxl.setInterrupt( ADXL345_INT_ACTIVITY_BIT, 1); adxl.setInterrupt( ADXL345_INT_INACTIVITY_BIT, 1); } void loop(){ int x,y,z; adxl.readAccel(x, y, z); read the accelerometer values and store them in variables x,y,z Output x,y,z values - Commented out Serial.print( X: )
Serial.print(x)
Serial.print( Y: )
Serial.print(y)
Serial.print( Z: )
Serial.println(z); } Raspberry PI Daca nu iti este clar ce este un Accelerometru si care sunt aplicatiile lui practice, aici gasesti un document in limba romana care iti explica mai multe - http: robofun.ro forum viewtopic.php?f 16t 158 (microcontroller-ul folosit este Arduino, vezi mai jos pentru un tutorial pentru conectarea cu Raspberry PI) Cod Sursa gcc -o read_adxl readings_general.c include stdio.h include stdlib.h include fcntl.h include unistd.h include string.h include include incl.
Modurile cu consum redus permit administrarea energiei inteligenta, bazata pe miscare, cu sesizare de praguri si masuratori active de acceleratie cu disipare de energie extrem de scazuta.
Un buffer first in, first out (FIFO) cu 32 de nivele integrat, in curs de patentare, poate fi folosit pentru a stoca datele pentru a minimiza interventia procesorului gazda.
Aceste functii pot fi mapate pe unul din doi pini de iesire de intrerupere.
Sesizarea caderii libere depisteaza daca aparatul este in cadere.
Sesizarea batailor usoare depisteaza bataile simple sau duble.
Sesizarea activitatii si inactivitatii depisteaza prezenta sau lipsa miscarii si daca acceleratia pe oricare axa excede un nivel setat de catre utilizator.
Mai multe functii de sesizare speciale sunt furnizate.
Rezolutia sa mare (4 mg LSB) permite masurarea schimbarilor de inclinatie mai mici de 1,0 .
ADXL345 este foarte potrivit pentru masuratori ale acceleratiei statice a gravitatiei in aplicatii care sesizeaza bascularea, ca si acceleratia dinamica rezultand din miscare sau socuri.
Datele de iesire digitale sunt formatate in complement fata de doi si sunt accesibile prin fie un SPI (cu 3 sau 4 fire) sau o interfata digitala I2C.
ADXL345 este un Accelerometru mic, subtire, cu un consum redus de energie, pe 3 axe cu masuratoare de rezolutie mare (13 biti) pana la 16 g.
Placa pentru Analog Device ADXL345