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

Dependencies:   MMA8451Q mbed

Committer:
Ciesarik3
Date:
Mon Jan 08 15:00:34 2018 +0000
Revision:
10:346a5a5936b9
Parent:
9:51cf1120b4f4
Child:
11:a9918a8441a9
rozhodenie do dal?ieho suboru z mainu presunute nektore veci do headre cpp;

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 9:51cf1120b4f4 22 if ((IntSourceSystem&0x04)==0x04) {
Ciesarik3 9:51cf1120b4f4 23 char DATA [] = {0x01};
Ciesarik3 9:51cf1120b4f4 24 poslemSpravu(BRZDA, 0xcc, 0x01, DATA );
Ciesarik3 9:51cf1120b4f4 25 freeFall_LED = 0;
Ciesarik3 9:51cf1120b4f4 26 freeFall_check = 1;
Ciesarik3 9:51cf1120b4f4 27 }
Ciesarik3 9:51cf1120b4f4 28 }
Ciesarik3 9:51cf1120b4f4 29
Ciesarik3 9:51cf1120b4f4 30
Ciesarik3 9:51cf1120b4f4 31 void init_freeFall()
Ciesarik3 9:51cf1120b4f4 32 {
Ciesarik3 9:51cf1120b4f4 33 //https://www.nxp.com/docs/en/application-note/AN4070.pdf?&fasp=1&WT_TYPE=Applicatio
Ciesarik3 9:51cf1120b4f4 34 uint8_t data1[2] = {0x2A, 0x20}; // Deaktivacia senzora
Ciesarik3 9:51cf1120b4f4 35 i2c.write(MMA8451_I2C_ADDRESS , (char *)data1, 2);
Ciesarik3 9:51cf1120b4f4 36 uint8_t data2[2] = {0x15, 0xB8};
Ciesarik3 9:51cf1120b4f4 37 i2c.write(MMA8451_I2C_ADDRESS , (char *)data2, 2);
Ciesarik3 9:51cf1120b4f4 38 uint8_t data3[2] = {0x17, 0x03};
Ciesarik3 9:51cf1120b4f4 39 i2c.write(MMA8451_I2C_ADDRESS , (char *)data3, 2);
Ciesarik3 9:51cf1120b4f4 40 uint8_t data4[2] = {0x18, 0x06};
Ciesarik3 9:51cf1120b4f4 41 i2c.write(MMA8451_I2C_ADDRESS , (char *)data4, 2);
Ciesarik3 9:51cf1120b4f4 42 uint8_t data5[2] = {0x2D, 0x04};
Ciesarik3 9:51cf1120b4f4 43 i2c.write(MMA8451_I2C_ADDRESS , (char *)data5, 2);
Ciesarik3 9:51cf1120b4f4 44 uint8_t data6[2] = {0x2E, 0x00};
Ciesarik3 9:51cf1120b4f4 45 i2c.write(MMA8451_I2C_ADDRESS , (char *)data6, 2);
Ciesarik3 9:51cf1120b4f4 46 uint8_t data7[2]= {0x2A, 0x09 }; //Frekvencia je nastavena na 400 Hz, aktivacia senzora
Ciesarik3 9:51cf1120b4f4 47 i2c.write(MMA8451_I2C_ADDRESS , (char *)data7, 2);
Ciesarik3 9:51cf1120b4f4 48
Ciesarik3 9:51cf1120b4f4 49 freeFall_check = false;
Ciesarik3 9:51cf1120b4f4 50 freeFall_LED = 1;
Ciesarik3 9:51cf1120b4f4 51
Ciesarik3 9:51cf1120b4f4 52 acc.fall(&freeFall);
Ciesarik3 9:51cf1120b4f4 53 }
Ciesarik3 9:51cf1120b4f4 54
Ciesarik3 9:51cf1120b4f4 55 bool freeFall_status()
Ciesarik3 9:51cf1120b4f4 56 {
Ciesarik3 9:51cf1120b4f4 57 return freeFall_check;
Ciesarik3 9:51cf1120b4f4 58 }