Test program for CROC ObCP ENSMM
Dependencies: mbed SimpleBLE X_NUCLEO_IDB0XA1
Fork of ObCP_ENSMM_Test by
main.cpp@6:7d877f7e455d, 2019-01-14 (annotated)
- Committer:
- jimbaud
- Date:
- Mon Jan 14 09:23:49 2019 +0000
- Revision:
- 6:7d877f7e455d
- Parent:
- 3:e439dd384d7e
Test program for CROC ObCP
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
jimbaud | 6:7d877f7e455d | 1 | |
jimbaud | 6:7d877f7e455d | 2 | |
jimbaud | 6:7d877f7e455d | 3 | // This program use SimpleBLE and X_NUCLEO_IDB0XA1 librairies, don't forget to includ it !!! |
jimbaud | 6:7d877f7e455d | 4 | |
janjongboom | 0:ba1c49874d3c | 5 | #include "mbed.h" |
janjongboom | 0:ba1c49874d3c | 6 | #include "SimpleBLE.h" |
janjongboom | 0:ba1c49874d3c | 7 | |
jimbaud | 6:7d877f7e455d | 8 | |
jimbaud | 6:7d877f7e455d | 9 | |
jimbaud | 6:7d877f7e455d | 10 | //Name of the brodcasted BLE |
jimbaud | 6:7d877f7e455d | 11 | |
jimbaud | 6:7d877f7e455d | 12 | SimpleBLE ble("ObCP_ENSMM_CROC"); |
jimbaud | 6:7d877f7e455d | 13 | |
jimbaud | 6:7d877f7e455d | 14 | const int addr = 0x90; // define the I2C Address for TC74-A0 1001 000 0<-- R/W bit |
jimbaud | 6:7d877f7e455d | 15 | |
jimbaud | 6:7d877f7e455d | 16 | // GPIO set |
jimbaud | 6:7d877f7e455d | 17 | |
jimbaud | 6:7d877f7e455d | 18 | //Interrupt input |
jimbaud | 6:7d877f7e455d | 19 | |
jimbaud | 6:7d877f7e455d | 20 | InterruptIn user3(PC_13); //User3 |
jimbaud | 6:7d877f7e455d | 21 | InterruptIn user2(PC_12); //User2 |
jimbaud | 6:7d877f7e455d | 22 | InterruptIn user1(PC_11); //User1 |
jimbaud | 6:7d877f7e455d | 23 | |
jimbaud | 6:7d877f7e455d | 24 | //Analog input |
janjongboom | 2:12a235e7691a | 25 | |
jimbaud | 6:7d877f7e455d | 26 | AnalogIn analog_value(PA_5); //Analog input value |
jimbaud | 6:7d877f7e455d | 27 | AnalogIn current(PA_4); //PWM output current |
jimbaud | 6:7d877f7e455d | 28 | AnalogIn analog_temp(PC_4); //Analog temp sensor |
jimbaud | 6:7d877f7e455d | 29 | |
jimbaud | 6:7d877f7e455d | 30 | //PWM output |
jimbaud | 6:7d877f7e455d | 31 | |
jimbaud | 6:7d877f7e455d | 32 | PwmOut PWMoutput(PB_8); //Main PWM output |
jimbaud | 6:7d877f7e455d | 33 | PwmOut Green(PB_5); //PWM Red LED |
jimbaud | 6:7d877f7e455d | 34 | PwmOut Red(PB_4); //PWM Green LED |
jimbaud | 6:7d877f7e455d | 35 | PwmOut Blue(PB_0); //PWM Blue LED |
janjongboom | 0:ba1c49874d3c | 36 | |
jimbaud | 6:7d877f7e455d | 37 | //USART |
jimbaud | 6:7d877f7e455d | 38 | |
jimbaud | 6:7d877f7e455d | 39 | Serial terminal(PA_2, PA_3); //TX, RX |
jimbaud | 6:7d877f7e455d | 40 | |
jimbaud | 6:7d877f7e455d | 41 | //I2C Temp sensor |
jimbaud | 6:7d877f7e455d | 42 | |
jimbaud | 6:7d877f7e455d | 43 | I2C TC74(PB_7, PB_6); //TC74 temp sensor I2C sda, scl |
jimbaud | 6:7d877f7e455d | 44 | |
jimbaud | 6:7d877f7e455d | 45 | |
jimbaud | 6:7d877f7e455d | 46 | // Characteristic input |
jimbaud | 6:7d877f7e455d | 47 | SimpleChar<uint8_t> input = ble.readOnly_u8(0xA000, 0xA002); |
janjongboom | 0:ba1c49874d3c | 48 | |
jimbaud | 6:7d877f7e455d | 49 | // When characteristic LED RGB changing |
jimbaud | 6:7d877f7e455d | 50 | void LEDupdate(uint32_t newColor) { |
jimbaud | 6:7d877f7e455d | 51 | |
jimbaud | 6:7d877f7e455d | 52 | // read individual bytes |
jimbaud | 6:7d877f7e455d | 53 | uint8_t* channels = (uint8_t*)&newColor; |
jimbaud | 6:7d877f7e455d | 54 | |
jimbaud | 6:7d877f7e455d | 55 | // cast to float, as PwmOut expects a value between 0.0f and 1.0f |
jimbaud | 6:7d877f7e455d | 56 | Red = static_cast<float>(channels[0]) / 255.0f; |
jimbaud | 6:7d877f7e455d | 57 | Green = static_cast<float>(channels[1]) / 255.0f; |
jimbaud | 6:7d877f7e455d | 58 | Blue = static_cast<float>(channels[2]) / 255.0f; |
jimbaud | 6:7d877f7e455d | 59 | } |
jimbaud | 6:7d877f7e455d | 60 | |
jimbaud | 6:7d877f7e455d | 61 | // When characteristic PWM output changing |
jimbaud | 6:7d877f7e455d | 62 | |
jimbaud | 6:7d877f7e455d | 63 | void PWMupdate(uint8_t pwmvalue) { |
jimbaud | 6:7d877f7e455d | 64 | |
jimbaud | 6:7d877f7e455d | 65 | // cast to float, as PwmOut expects a value between 0.0f and 1.0f |
jimbaud | 6:7d877f7e455d | 66 | PWMoutput = static_cast<float>(pwmvalue) / 255.0f; |
jimbaud | 6:7d877f7e455d | 67 | |
jimbaud | 6:7d877f7e455d | 68 | } |
janjongboom | 0:ba1c49874d3c | 69 | |
jimbaud | 6:7d877f7e455d | 70 | // When characteristic input changing |
jimbaud | 6:7d877f7e455d | 71 | void Inputupdate() { |
jimbaud | 6:7d877f7e455d | 72 | |
jimbaud | 6:7d877f7e455d | 73 | TC74.start(); //Start condition |
jimbaud | 6:7d877f7e455d | 74 | TC74.write(addr|1); //Device Adress read mode |
jimbaud | 6:7d877f7e455d | 75 | input = TC74.read(0); //Temp register value reading |
jimbaud | 6:7d877f7e455d | 76 | TC74.stop(); //I2C stop |
jimbaud | 6:7d877f7e455d | 77 | |
jimbaud | 6:7d877f7e455d | 78 | } |
jimbaud | 6:7d877f7e455d | 79 | |
jimbaud | 6:7d877f7e455d | 80 | // Characteritic PWM LED RGB |
jimbaud | 6:7d877f7e455d | 81 | SimpleChar<uint32_t> color = ble.writeOnly_u32(0x6200, 0x6201, &LEDupdate); |
jimbaud | 6:7d877f7e455d | 82 | |
jimbaud | 6:7d877f7e455d | 83 | // Characteristic PWM output |
jimbaud | 6:7d877f7e455d | 84 | SimpleChar<uint8_t> pwmout = ble.writeOnly_u8(0xA000, 0xA001, &PWMupdate); |
jimbaud | 6:7d877f7e455d | 85 | |
jimbaud | 6:7d877f7e455d | 86 | |
jimbaud | 6:7d877f7e455d | 87 | //Main program |
jimbaud | 6:7d877f7e455d | 88 | |
jimbaud | 6:7d877f7e455d | 89 | int main(int, char**) { |
jimbaud | 6:7d877f7e455d | 90 | |
jimbaud | 6:7d877f7e455d | 91 | ble.start(); |
jimbaud | 6:7d877f7e455d | 92 | Ticker t; |
jimbaud | 6:7d877f7e455d | 93 | t.attach(&Inputupdate, 5.0f); |
jimbaud | 6:7d877f7e455d | 94 | |
jimbaud | 6:7d877f7e455d | 95 | while (1) { |
jimbaud | 6:7d877f7e455d | 96 | |
jimbaud | 6:7d877f7e455d | 97 | ble.waitForEvent(); |
janjongboom | 0:ba1c49874d3c | 98 | } |
janjongboom | 0:ba1c49874d3c | 99 | } |