Test program for CROC ObCP ENSMM

Dependencies:   mbed SimpleBLE X_NUCLEO_IDB0XA1

Fork of ObCP_ENSMM_Test by Joël Imbaud

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?

UserRevisionLine numberNew 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 }