akcelerometar

Dependencies:   mbed ADXL345

Sadržaj:

1. Zadatak 2. Opis 3. Shema

Committer:
deltablues
Date:
Mon Mar 01 16:01:59 2021 +0000
Revision:
0:5790cb887b41
TVZ_Mikroupravljaci_Konstrukcijski_rad_Tomislav_Golic

Who changed what in which revision?

UserRevisionLine numberNew contents of line
deltablues 0:5790cb887b41 1 #include "mbed.h"
deltablues 0:5790cb887b41 2 #include <ADXL345.h>
deltablues 0:5790cb887b41 3
deltablues 0:5790cb887b41 4 class XYZ{
deltablues 0:5790cb887b41 5 public:
deltablues 0:5790cb887b41 6 float x;
deltablues 0:5790cb887b41 7 float y;
deltablues 0:5790cb887b41 8 float z;
deltablues 0:5790cb887b41 9
deltablues 0:5790cb887b41 10 void normalise(int* raw_data){
deltablues 0:5790cb887b41 11 x = float(int16_t(raw_data[0]))*4/1000;
deltablues 0:5790cb887b41 12 y = float(int16_t(raw_data[1]))*4/1000;
deltablues 0:5790cb887b41 13 z = float(int16_t(raw_data[2]))*4/1000;
deltablues 0:5790cb887b41 14 }
deltablues 0:5790cb887b41 15 };
deltablues 0:5790cb887b41 16
deltablues 0:5790cb887b41 17 ADXL345 adxl345(D11, D12, D13, D10);
deltablues 0:5790cb887b41 18 InterruptIn externalInterrupt(D15);
deltablues 0:5790cb887b41 19 Serial pc(USBTX, USBRX);
deltablues 0:5790cb887b41 20 DigitalOut RedLed(D6);
deltablues 0:5790cb887b41 21 DigitalOut GreenLed(D5);
deltablues 0:5790cb887b41 22 Ticker tick;
deltablues 0:5790cb887b41 23 int data[3];
deltablues 0:5790cb887b41 24 XYZ acc;
deltablues 0:5790cb887b41 25
deltablues 0:5790cb887b41 26 void freeFallDetect(){
deltablues 0:5790cb887b41 27 RedLed = 1;
deltablues 0:5790cb887b41 28 wait(0.1);
deltablues 0:5790cb887b41 29 RedLed = 0;
deltablues 0:5790cb887b41 30 pc.printf("Free fall detected\r\n");
deltablues 0:5790cb887b41 31 adxl345.getInterruptSource();
deltablues 0:5790cb887b41 32 return;
deltablues 0:5790cb887b41 33 }
deltablues 0:5790cb887b41 34
deltablues 0:5790cb887b41 35 void fetchData(){
deltablues 0:5790cb887b41 36 GreenLed = !GreenLed;
deltablues 0:5790cb887b41 37 adxl345.getOutput(data);
deltablues 0:5790cb887b41 38 acc.normalise(data);
deltablues 0:5790cb887b41 39 pc.printf("--X = %fg, Y = %fg, Z = %fg--\r\n", acc.x, acc.y, acc.z);
deltablues 0:5790cb887b41 40 return;
deltablues 0:5790cb887b41 41 }
deltablues 0:5790cb887b41 42
deltablues 0:5790cb887b41 43 int main(){
deltablues 0:5790cb887b41 44
deltablues 0:5790cb887b41 45 adxl345.setPowerControl(0x08);
deltablues 0:5790cb887b41 46 adxl345.setDataFormatControl(0x08);
deltablues 0:5790cb887b41 47 adxl345.setInterruptMappingControl(0xFB);
deltablues 0:5790cb887b41 48 adxl345.setFreefallThreshold(0x09);
deltablues 0:5790cb887b41 49 adxl345.setFreefallTime(25);
deltablues 0:5790cb887b41 50 adxl345.setInterruptEnableControl(0x04);
deltablues 0:5790cb887b41 51 adxl345.getInterruptSource();
deltablues 0:5790cb887b41 52
deltablues 0:5790cb887b41 53 externalInterrupt.rise(&freeFallDetect);
deltablues 0:5790cb887b41 54 tick.attach(&fetchData, 0.2);
deltablues 0:5790cb887b41 55
deltablues 0:5790cb887b41 56 while (true) {
deltablues 0:5790cb887b41 57 __WFI();
deltablues 0:5790cb887b41 58 }
deltablues 0:5790cb887b41 59 }