Semestrálna práca VÝTAH Roman Ciesarík

Dependencies:   MMA8451Q mbed

Committer:
Ciesarik3
Date:
Mon Jan 08 17:47:48 2018 +0000
Revision:
11:a9918a8441a9
Parent:
10:346a5a5936b9
dorobena dokumentacia;

Who changed what in which revision?

UserRevisionLine numberNew contents of line
Ciesarik3 9:51cf1120b4f4 1 #include "FreeFall.h"
Ciesarik3 9:51cf1120b4f4 2 #include "headre.h"
Ciesarik3 9:51cf1120b4f4 3
Ciesarik3 9:51cf1120b4f4 4 #define MMA8451_I2C_ADDRESS (0x1d<<1)
Ciesarik3 9:51cf1120b4f4 5
Ciesarik3 9:51cf1120b4f4 6 PinName const SDA = PTE25;
Ciesarik3 9:51cf1120b4f4 7 PinName const SCL = PTE24;
Ciesarik3 9:51cf1120b4f4 8
Ciesarik3 9:51cf1120b4f4 9 DigitalOut freeFall_LED(LED_RED);
Ciesarik3 9:51cf1120b4f4 10 InterruptIn acc(PTA15);
Ciesarik3 9:51cf1120b4f4 11 I2C i2c(SDA, SCL);
Ciesarik3 9:51cf1120b4f4 12
Ciesarik3 9:51cf1120b4f4 13 bool freeFall_check;
Ciesarik3 9:51cf1120b4f4 14
Ciesarik3 9:51cf1120b4f4 15 void freeFall()
Ciesarik3 9:51cf1120b4f4 16 {
Ciesarik3 9:51cf1120b4f4 17 uint8_t IntSourceSystem = 0;
Ciesarik3 9:51cf1120b4f4 18 char t[1] = {0x0C};
Ciesarik3 9:51cf1120b4f4 19 i2c.write(MMA8451_I2C_ADDRESS , t, 1, true);
Ciesarik3 9:51cf1120b4f4 20 i2c.read(MMA8451_I2C_ADDRESS , (char *)&IntSourceSystem, 1);
Ciesarik3 9:51cf1120b4f4 21
Ciesarik3 11:a9918a8441a9 22 if ((IntSourceSystem&0x04)==0x04)
Ciesarik3 11:a9918a8441a9 23 {
Ciesarik3 9:51cf1120b4f4 24 char DATA [] = {0x01};
Ciesarik3 9:51cf1120b4f4 25 poslemSpravu(BRZDA, 0xcc, 0x01, DATA );
Ciesarik3 9:51cf1120b4f4 26 freeFall_LED = 0;
Ciesarik3 9:51cf1120b4f4 27 freeFall_check = 1;
Ciesarik3 9:51cf1120b4f4 28 }
Ciesarik3 9:51cf1120b4f4 29 }
Ciesarik3 9:51cf1120b4f4 30
Ciesarik3 9:51cf1120b4f4 31
Ciesarik3 9:51cf1120b4f4 32 void init_freeFall()
Ciesarik3 9:51cf1120b4f4 33 {
Ciesarik3 9:51cf1120b4f4 34 //https://www.nxp.com/docs/en/application-note/AN4070.pdf?&fasp=1&WT_TYPE=Applicatio
Ciesarik3 9:51cf1120b4f4 35 uint8_t data1[2] = {0x2A, 0x20}; // Deaktivacia senzora
Ciesarik3 9:51cf1120b4f4 36 i2c.write(MMA8451_I2C_ADDRESS , (char *)data1, 2);
Ciesarik3 9:51cf1120b4f4 37 uint8_t data2[2] = {0x15, 0xB8};
Ciesarik3 9:51cf1120b4f4 38 i2c.write(MMA8451_I2C_ADDRESS , (char *)data2, 2);
Ciesarik3 9:51cf1120b4f4 39 uint8_t data3[2] = {0x17, 0x03};
Ciesarik3 9:51cf1120b4f4 40 i2c.write(MMA8451_I2C_ADDRESS , (char *)data3, 2);
Ciesarik3 9:51cf1120b4f4 41 uint8_t data4[2] = {0x18, 0x06};
Ciesarik3 9:51cf1120b4f4 42 i2c.write(MMA8451_I2C_ADDRESS , (char *)data4, 2);
Ciesarik3 9:51cf1120b4f4 43 uint8_t data5[2] = {0x2D, 0x04};
Ciesarik3 9:51cf1120b4f4 44 i2c.write(MMA8451_I2C_ADDRESS , (char *)data5, 2);
Ciesarik3 9:51cf1120b4f4 45 uint8_t data6[2] = {0x2E, 0x00};
Ciesarik3 9:51cf1120b4f4 46 i2c.write(MMA8451_I2C_ADDRESS , (char *)data6, 2);
Ciesarik3 9:51cf1120b4f4 47 uint8_t data7[2]= {0x2A, 0x09 }; //Frekvencia je nastavena na 400 Hz, aktivacia senzora
Ciesarik3 9:51cf1120b4f4 48 i2c.write(MMA8451_I2C_ADDRESS , (char *)data7, 2);
Ciesarik3 9:51cf1120b4f4 49
Ciesarik3 9:51cf1120b4f4 50 freeFall_check = false;
Ciesarik3 9:51cf1120b4f4 51 freeFall_LED = 1;
Ciesarik3 9:51cf1120b4f4 52
Ciesarik3 9:51cf1120b4f4 53 acc.fall(&freeFall);
Ciesarik3 9:51cf1120b4f4 54 }
Ciesarik3 9:51cf1120b4f4 55
Ciesarik3 9:51cf1120b4f4 56 bool freeFall_status()
Ciesarik3 9:51cf1120b4f4 57 {
Ciesarik3 9:51cf1120b4f4 58 return freeFall_check;
Ciesarik3 9:51cf1120b4f4 59 }