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

Dependencies:   MMA8451Q mbed

Committer:
Ciesarik3
Date:
Sun Jan 07 21:09:44 2018 +0000
Revision:
9:51cf1120b4f4
Child:
10:346a5a5936b9
okrem noise a watchdog;

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
Ciesarik3 9:51cf1120b4f4 10 DigitalOut freeFall_LED(LED_RED);
Ciesarik3 9:51cf1120b4f4 11 InterruptIn acc(PTA15);
Ciesarik3 9:51cf1120b4f4 12 I2C i2c(SDA, SCL);
Ciesarik3 9:51cf1120b4f4 13
Ciesarik3 9:51cf1120b4f4 14 bool freeFall_check;
Ciesarik3 9:51cf1120b4f4 15
Ciesarik3 9:51cf1120b4f4 16 void freeFall()
Ciesarik3 9:51cf1120b4f4 17 {
Ciesarik3 9:51cf1120b4f4 18 uint8_t IntSourceSystem = 0;
Ciesarik3 9:51cf1120b4f4 19 char t[1] = {0x0C};
Ciesarik3 9:51cf1120b4f4 20 i2c.write(MMA8451_I2C_ADDRESS , t, 1, true);
Ciesarik3 9:51cf1120b4f4 21 i2c.read(MMA8451_I2C_ADDRESS , (char *)&IntSourceSystem, 1);
Ciesarik3 9:51cf1120b4f4 22
Ciesarik3 9:51cf1120b4f4 23 if ((IntSourceSystem&0x04)==0x04) {
Ciesarik3 9:51cf1120b4f4 24 char DATA [] = {0x01};
Ciesarik3 9:51cf1120b4f4 25
Ciesarik3 9:51cf1120b4f4 26 poslemSpravu(BRZDA, 0xcc, 0x01, DATA );
Ciesarik3 9:51cf1120b4f4 27
Ciesarik3 9:51cf1120b4f4 28
Ciesarik3 9:51cf1120b4f4 29 //paket emergencyBreak = {.adresa = 0x0f,.dlzkaDat = 0x01, .data = command};
Ciesarik3 9:51cf1120b4f4 30 //paket freeFall_console= {.adresa = 0xD0,.dlzkaDat = 0x1e,.data = "\n\r FreeFALL ! volajte udrzbu !"};
Ciesarik3 9:51cf1120b4f4 31
Ciesarik3 9:51cf1120b4f4 32 freeFall_LED = 0;
Ciesarik3 9:51cf1120b4f4 33 freeFall_check = 1;
Ciesarik3 9:51cf1120b4f4 34 }
Ciesarik3 9:51cf1120b4f4 35 }
Ciesarik3 9:51cf1120b4f4 36
Ciesarik3 9:51cf1120b4f4 37
Ciesarik3 9:51cf1120b4f4 38 void init_freeFall()
Ciesarik3 9:51cf1120b4f4 39 {
Ciesarik3 9:51cf1120b4f4 40 //https://www.nxp.com/docs/en/application-note/AN4070.pdf?&fasp=1&WT_TYPE=Applicatio
Ciesarik3 9:51cf1120b4f4 41 uint8_t data1[2] = {0x2A, 0x20}; // Deaktivacia senzora
Ciesarik3 9:51cf1120b4f4 42 i2c.write(MMA8451_I2C_ADDRESS , (char *)data1, 2);
Ciesarik3 9:51cf1120b4f4 43 uint8_t data2[2] = {0x15, 0xB8};
Ciesarik3 9:51cf1120b4f4 44 i2c.write(MMA8451_I2C_ADDRESS , (char *)data2, 2);
Ciesarik3 9:51cf1120b4f4 45 uint8_t data3[2] = {0x17, 0x03};
Ciesarik3 9:51cf1120b4f4 46 i2c.write(MMA8451_I2C_ADDRESS , (char *)data3, 2);
Ciesarik3 9:51cf1120b4f4 47 uint8_t data4[2] = {0x18, 0x06};
Ciesarik3 9:51cf1120b4f4 48 i2c.write(MMA8451_I2C_ADDRESS , (char *)data4, 2);
Ciesarik3 9:51cf1120b4f4 49 uint8_t data5[2] = {0x2D, 0x04};
Ciesarik3 9:51cf1120b4f4 50 i2c.write(MMA8451_I2C_ADDRESS , (char *)data5, 2);
Ciesarik3 9:51cf1120b4f4 51 uint8_t data6[2] = {0x2E, 0x00};
Ciesarik3 9:51cf1120b4f4 52 i2c.write(MMA8451_I2C_ADDRESS , (char *)data6, 2);
Ciesarik3 9:51cf1120b4f4 53 uint8_t data7[2]= {0x2A, 0x09 }; //Frekvencia je nastavena na 400 Hz, aktivacia senzora
Ciesarik3 9:51cf1120b4f4 54 i2c.write(MMA8451_I2C_ADDRESS , (char *)data7, 2);
Ciesarik3 9:51cf1120b4f4 55
Ciesarik3 9:51cf1120b4f4 56 freeFall_check = false;
Ciesarik3 9:51cf1120b4f4 57 freeFall_LED = 1;
Ciesarik3 9:51cf1120b4f4 58
Ciesarik3 9:51cf1120b4f4 59 acc.fall(&freeFall);
Ciesarik3 9:51cf1120b4f4 60 }
Ciesarik3 9:51cf1120b4f4 61
Ciesarik3 9:51cf1120b4f4 62
Ciesarik3 9:51cf1120b4f4 63
Ciesarik3 9:51cf1120b4f4 64 bool freeFall_status()
Ciesarik3 9:51cf1120b4f4 65 {
Ciesarik3 9:51cf1120b4f4 66 return freeFall_check;
Ciesarik3 9:51cf1120b4f4 67 }