Programme de la première cellule du RC, celle uniquement connectée en BT avec l'autre ObCP. Le code reçoit des infos et renvoi le temps relevé.
Dependencies: mbed SimpleBLE X_NUCLEO_IDB0XA1 LIS3DH_spi
main.cpp@10:a15e07c7ad61, 2020-01-22 (annotated)
- Committer:
- Nthnthj
- Date:
- Wed Jan 22 09:33:01 2020 +0000
- Revision:
- 10:a15e07c7ad61
- Parent:
- 9:3d83d0b410b8
- Child:
- 11:72c976e0d889
Code final
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
jimbaud | 6:1670244c4eb4 | 1 | //Includes |
jimbaud | 6:1670244c4eb4 | 2 | |
janjongboom | 0:ba1c49874d3c | 3 | #include "mbed.h" |
janjongboom | 0:ba1c49874d3c | 4 | #include "SimpleBLE.h" |
jimbaud | 6:1670244c4eb4 | 5 | #include "LIS3DH.h" |
Nthnthj | 9:3d83d0b410b8 | 6 | #include "stdlib.h" |
janjongboom | 0:ba1c49874d3c | 7 | |
jimbaud | 6:1670244c4eb4 | 8 | //Accelerometer |
jimbaud | 6:1670244c4eb4 | 9 | |
jimbaud | 6:1670244c4eb4 | 10 | #define MOSI PC_12 |
jimbaud | 6:1670244c4eb4 | 11 | #define MISO PC_11 |
jimbaud | 6:1670244c4eb4 | 12 | #define CS PC_5 |
jimbaud | 6:1670244c4eb4 | 13 | #define SCLK PC_10 |
jimbaud | 6:1670244c4eb4 | 14 | |
Nthnthj | 9:3d83d0b410b8 | 15 | //Bluetooth hc05-6 |
Nthnthj | 9:3d83d0b410b8 | 16 | |
Nthnthj | 10:a15e07c7ad61 | 17 | #define TX D0 |
Nthnthj | 10:a15e07c7ad61 | 18 | #define RX D1 |
Nthnthj | 9:3d83d0b410b8 | 19 | |
jimbaud | 6:1670244c4eb4 | 20 | //Init simpleBLE |
jimbaud | 6:1670244c4eb4 | 21 | |
Nthnthj | 9:3d83d0b410b8 | 22 | //SimpleBLE ble("ObCP_Roller_Catcher2"); |
jimbaud | 6:1670244c4eb4 | 23 | |
jimbaud | 6:1670244c4eb4 | 24 | |
jimbaud | 6:1670244c4eb4 | 25 | // GPIO set |
jimbaud | 6:1670244c4eb4 | 26 | |
jimbaud | 6:1670244c4eb4 | 27 | //Interrupt input |
jimbaud | 6:1670244c4eb4 | 28 | |
jimbaud | 6:1670244c4eb4 | 29 | InterruptIn user1(PC_13); //User1 |
Nthnthj | 9:3d83d0b410b8 | 30 | InterruptIn boutton1(D3); |
Nthnthj | 9:3d83d0b410b8 | 31 | InterruptIn boutton2(D4); |
Nthnthj | 9:3d83d0b410b8 | 32 | InterruptIn event(A0); |
Nthnthj | 9:3d83d0b410b8 | 33 | |
Nthnthj | 9:3d83d0b410b8 | 34 | Timer timer; |
Nthnthj | 9:3d83d0b410b8 | 35 | |
Nthnthj | 9:3d83d0b410b8 | 36 | DigitalOut led1(D14); |
Nthnthj | 9:3d83d0b410b8 | 37 | DigitalOut transistor(D6); |
jimbaud | 6:1670244c4eb4 | 38 | |
jimbaud | 6:1670244c4eb4 | 39 | //PWM output |
jimbaud | 6:1670244c4eb4 | 40 | |
jimbaud | 6:1670244c4eb4 | 41 | PwmOut PWMoutput(PB_1); //Main PWM output |
jimbaud | 6:1670244c4eb4 | 42 | PwmOut Green(PC_8); //PWM Red LED |
jimbaud | 6:1670244c4eb4 | 43 | PwmOut Red(PC_6); //PWM Green LED |
jimbaud | 6:1670244c4eb4 | 44 | PwmOut Blue(PC_9); //PWM Blue LED |
jimbaud | 6:1670244c4eb4 | 45 | |
jimbaud | 6:1670244c4eb4 | 46 | //Init accelerometer |
janjongboom | 2:12a235e7691a | 47 | |
jimbaud | 6:1670244c4eb4 | 48 | LIS3DH acc(MOSI, MISO, SCLK, CS, LIS3DH_DR_NR_LP_50HZ, LIS3DH_FS_2G); |
jimbaud | 6:1670244c4eb4 | 49 | |
jimbaud | 6:1670244c4eb4 | 50 | // Characteristics Accelerometer input |
jimbaud | 6:1670244c4eb4 | 51 | |
Nthnthj | 9:3d83d0b410b8 | 52 | //SimpleChar<float> accX = ble.readOnly_float(0xA000, 0xA002); |
Nthnthj | 9:3d83d0b410b8 | 53 | //SimpleChar<float> compteur = ble.readOnly_float(0xA000, 0xA003); |
Nthnthj | 9:3d83d0b410b8 | 54 | //SimpleChar<float> Temps = ble.readOnly_float(0xA000, 0xA004); |
Nthnthj | 9:3d83d0b410b8 | 55 | |
Nthnthj | 10:a15e07c7ad61 | 56 | Serial BT(USBTX,USBRX); |
Nthnthj | 10:a15e07c7ad61 | 57 | //Serial pc(USBTX, USBRX); |
Nthnthj | 9:3d83d0b410b8 | 58 | |
Nthnthj | 9:3d83d0b410b8 | 59 | int compteur; |
Nthnthj | 9:3d83d0b410b8 | 60 | bool flag = false; |
Nthnthj | 9:3d83d0b410b8 | 61 | float end,begin; |
Nthnthj | 10:a15e07c7ad61 | 62 | int message = 0; |
Nthnthj | 10:a15e07c7ad61 | 63 | int temps1 = 0; |
Nthnthj | 10:a15e07c7ad61 | 64 | string course; |
Nthnthj | 10:a15e07c7ad61 | 65 | char Buffer[10]; |
Nthnthj | 10:a15e07c7ad61 | 66 | int i = 0; |
Nthnthj | 10:a15e07c7ad61 | 67 | int begin2 = 0; |
Nthnthj | 10:a15e07c7ad61 | 68 | |
Nthnthj | 10:a15e07c7ad61 | 69 | void envoi(int message){ |
Nthnthj | 10:a15e07c7ad61 | 70 | BT.printf("%i\n", message); |
Nthnthj | 10:a15e07c7ad61 | 71 | // pc.printf("Message envoye \r\n"); |
Nthnthj | 10:a15e07c7ad61 | 72 | } |
Nthnthj | 10:a15e07c7ad61 | 73 | |
Nthnthj | 9:3d83d0b410b8 | 74 | |
Nthnthj | 9:3d83d0b410b8 | 75 | void pressed(){ |
Nthnthj | 10:a15e07c7ad61 | 76 | // pc.printf("Test 2 \n "); |
Nthnthj | 10:a15e07c7ad61 | 77 | led1 = !led1; |
Nthnthj | 10:a15e07c7ad61 | 78 | temps1 = timer.read_ms(); |
Nthnthj | 10:a15e07c7ad61 | 79 | |
Nthnthj | 10:a15e07c7ad61 | 80 | // pc.printf("%i \r\n",temps1); |
Nthnthj | 10:a15e07c7ad61 | 81 | message = temps1; |
Nthnthj | 10:a15e07c7ad61 | 82 | envoi(message); |
Nthnthj | 10:a15e07c7ad61 | 83 | //timer.stop(); |
Nthnthj | 10:a15e07c7ad61 | 84 | //timer.start(); |
Nthnthj | 9:3d83d0b410b8 | 85 | } |
Nthnthj | 9:3d83d0b410b8 | 86 | |
Nthnthj | 9:3d83d0b410b8 | 87 | |
jimbaud | 6:1670244c4eb4 | 88 | |
jimbaud | 6:1670244c4eb4 | 89 | |
jimbaud | 6:1670244c4eb4 | 90 | // When characteristic LED RGB changing |
jimbaud | 6:1670244c4eb4 | 91 | |
jimbaud | 6:1670244c4eb4 | 92 | void LEDupdate(uint32_t newColor) |
Nthnthj | 9:3d83d0b410b8 | 93 | {/* |
jimbaud | 6:1670244c4eb4 | 94 | // read individual bytes |
jimbaud | 6:1670244c4eb4 | 95 | uint8_t* channels = (uint8_t*)&newColor; |
janjongboom | 0:ba1c49874d3c | 96 | |
jimbaud | 6:1670244c4eb4 | 97 | // cast to float, as PwmOut expects a value between 0.0f and 1.0f |
jimbaud | 6:1670244c4eb4 | 98 | Red = static_cast<float>(channels[0]) / 255.0f; |
jimbaud | 6:1670244c4eb4 | 99 | Green = static_cast<float>(channels[1]) / 255.0f; |
Nthnthj | 9:3d83d0b410b8 | 100 | Blue = static_cast<float>(channels[2]) / 255.0f; */ |
jimbaud | 6:1670244c4eb4 | 101 | } |
janjongboom | 0:ba1c49874d3c | 102 | |
jimbaud | 6:1670244c4eb4 | 103 | // When characteristic PWM output changing |
jimbaud | 6:1670244c4eb4 | 104 | |
jimbaud | 6:1670244c4eb4 | 105 | void PWMupdate(uint8_t pwmvalue) |
jimbaud | 6:1670244c4eb4 | 106 | { |
jimbaud | 6:1670244c4eb4 | 107 | |
jimbaud | 6:1670244c4eb4 | 108 | // cast to float, as PwmOut expects a value between 0.0f and 1.0f |
Nthnthj | 9:3d83d0b410b8 | 109 | // PWMoutput = static_cast<float>(pwmvalue) / 255.0f; |
jimbaud | 6:1670244c4eb4 | 110 | } |
jimbaud | 6:1670244c4eb4 | 111 | |
jimbaud | 6:1670244c4eb4 | 112 | // When characteristic input changing |
jimbaud | 6:1670244c4eb4 | 113 | void Accupdate() |
jimbaud | 6:1670244c4eb4 | 114 | { |
janjongboom | 0:ba1c49874d3c | 115 | |
Nthnthj | 9:3d83d0b410b8 | 116 | //accX = float(short((acc.read_reg(LIS3DH_OUT_X_H) << 8) | acc.read_reg(LIS3DH_OUT_X_L))) * 0.001F / 15; |
Nthnthj | 9:3d83d0b410b8 | 117 | //accY = float(short((acc.read_reg(LIS3DH_OUT_Y_H) << 8) | acc.read_reg(LIS3DH_OUT_Y_L))) * 0.001F / 15; |
Nthnthj | 9:3d83d0b410b8 | 118 | //accZ = float(short((acc.read_reg(LIS3DH_OUT_Z_H) << 8) | acc.read_reg(LIS3DH_OUT_Z_L))) * 0.001F / 15; |
Nthnthj | 9:3d83d0b410b8 | 119 | //Temps=15.68; |
jimbaud | 6:1670244c4eb4 | 120 | |
jimbaud | 6:1670244c4eb4 | 121 | } |
jimbaud | 6:1670244c4eb4 | 122 | |
jimbaud | 6:1670244c4eb4 | 123 | // Characteritic PWM LED RGB |
Nthnthj | 9:3d83d0b410b8 | 124 | //SimpleChar<uint32_t> color = ble.writeOnly_u32(0x6200, 0x6201, &LEDupdate); |
jimbaud | 6:1670244c4eb4 | 125 | |
jimbaud | 6:1670244c4eb4 | 126 | // Characteristic PWM output |
Nthnthj | 9:3d83d0b410b8 | 127 | //SimpleChar<uint8_t> pwmout = ble.writeOnly_u8(0xA000, 0xA001, &PWMupdate); |
jimbaud | 6:1670244c4eb4 | 128 | |
Nthnthj | 10:a15e07c7ad61 | 129 | |
Nthnthj | 10:a15e07c7ad61 | 130 | |
Nthnthj | 9:3d83d0b410b8 | 131 | void skater_d() |
Nthnthj | 9:3d83d0b410b8 | 132 | { |
Nthnthj | 9:3d83d0b410b8 | 133 | if(flag==false) { |
Nthnthj | 10:a15e07c7ad61 | 134 | // pc.printf("Ligne de depart coupee solo \n"); |
Nthnthj | 9:3d83d0b410b8 | 135 | if( flag == false) { |
Nthnthj | 9:3d83d0b410b8 | 136 | //printf("Depart skate \n"); |
Nthnthj | 9:3d83d0b410b8 | 137 | begin = timer.read_ms(); |
Nthnthj | 9:3d83d0b410b8 | 138 | compteur=100; |
Nthnthj | 9:3d83d0b410b8 | 139 | //pc.printf(" skater lance %.0f \n", begin); |
Nthnthj | 9:3d83d0b410b8 | 140 | flag = true; |
Nthnthj | 9:3d83d0b410b8 | 141 | } else if(flag == true) { |
Nthnthj | 9:3d83d0b410b8 | 142 | //printf("erreur \n"); |
Nthnthj | 9:3d83d0b410b8 | 143 | //pc.printf(" Temps du skater : %.0f \n", end-begin); |
Nthnthj | 9:3d83d0b410b8 | 144 | flag = false; |
Nthnthj | 9:3d83d0b410b8 | 145 | } |
Nthnthj | 9:3d83d0b410b8 | 146 | } |
Nthnthj | 9:3d83d0b410b8 | 147 | else if(flag==true) { |
Nthnthj | 9:3d83d0b410b8 | 148 | //printf("Ligne d'arrivee coupee \n"); |
Nthnthj | 9:3d83d0b410b8 | 149 | if( flag == false ) { |
Nthnthj | 9:3d83d0b410b8 | 150 | //printf("arrivee coupe sans depart\n"); |
Nthnthj | 9:3d83d0b410b8 | 151 | flag = true; |
Nthnthj | 9:3d83d0b410b8 | 152 | } else if(flag == true ) { |
Nthnthj | 9:3d83d0b410b8 | 153 | //printf("Arrivee skate \n"); |
Nthnthj | 9:3d83d0b410b8 | 154 | end = timer.read_ms(); |
Nthnthj | 9:3d83d0b410b8 | 155 | //Temps = end-begin; |
Nthnthj | 9:3d83d0b410b8 | 156 | compteur=200; |
Nthnthj | 9:3d83d0b410b8 | 157 | //wait(1); |
Nthnthj | 9:3d83d0b410b8 | 158 | //pc.printf(" Temps du skater : %.0f \n", end-begin); |
Nthnthj | 9:3d83d0b410b8 | 159 | flag = false; |
Nthnthj | 9:3d83d0b410b8 | 160 | } |
Nthnthj | 9:3d83d0b410b8 | 161 | } |
Nthnthj | 9:3d83d0b410b8 | 162 | } |
jimbaud | 6:1670244c4eb4 | 163 | |
Nthnthj | 10:a15e07c7ad61 | 164 | void test_mode(char Buffer[10]){ |
Nthnthj | 10:a15e07c7ad61 | 165 | if(Buffer[0] == 'S'){ |
Nthnthj | 10:a15e07c7ad61 | 166 | // pc.printf("mode solo \n"); |
Nthnthj | 10:a15e07c7ad61 | 167 | timer.reset(); |
Nthnthj | 10:a15e07c7ad61 | 168 | flag = false; |
Nthnthj | 10:a15e07c7ad61 | 169 | }else if(Buffer[0]=='D'){ |
Nthnthj | 10:a15e07c7ad61 | 170 | // pc.printf("mode duo \n"); |
Nthnthj | 10:a15e07c7ad61 | 171 | flag=true; |
Nthnthj | 10:a15e07c7ad61 | 172 | timer.reset(); |
Nthnthj | 10:a15e07c7ad61 | 173 | } |
Nthnthj | 10:a15e07c7ad61 | 174 | else if (Buffer[0] == 'R'){ |
Nthnthj | 10:a15e07c7ad61 | 175 | // pc.printf("Reset timer \n "); |
Nthnthj | 10:a15e07c7ad61 | 176 | timer.reset(); |
Nthnthj | 10:a15e07c7ad61 | 177 | //wait(1); |
Nthnthj | 10:a15e07c7ad61 | 178 | //timer.start(); |
Nthnthj | 10:a15e07c7ad61 | 179 | } |
Nthnthj | 10:a15e07c7ad61 | 180 | // pc.printf(" Test \n"); |
Nthnthj | 10:a15e07c7ad61 | 181 | } |
Nthnthj | 10:a15e07c7ad61 | 182 | |
Nthnthj | 10:a15e07c7ad61 | 183 | |
Nthnthj | 10:a15e07c7ad61 | 184 | void RXevent (){ |
Nthnthj | 10:a15e07c7ad61 | 185 | //c=BT.getc(); |
Nthnthj | 10:a15e07c7ad61 | 186 | if(BT.readable()){ |
Nthnthj | 10:a15e07c7ad61 | 187 | BT.scanf("%s", &Buffer); |
Nthnthj | 10:a15e07c7ad61 | 188 | wait(1); |
Nthnthj | 10:a15e07c7ad61 | 189 | } |
Nthnthj | 10:a15e07c7ad61 | 190 | |
Nthnthj | 10:a15e07c7ad61 | 191 | //pc.printf(" Message recu :%s \n",Buffer); |
Nthnthj | 10:a15e07c7ad61 | 192 | //timer.start(); |
Nthnthj | 10:a15e07c7ad61 | 193 | |
Nthnthj | 10:a15e07c7ad61 | 194 | //test_mode(Buffer); |
Nthnthj | 10:a15e07c7ad61 | 195 | |
Nthnthj | 10:a15e07c7ad61 | 196 | if (Buffer[0] == 'R'){ |
Nthnthj | 10:a15e07c7ad61 | 197 | // pc.printf("Reset timer \r\n "); |
Nthnthj | 10:a15e07c7ad61 | 198 | timer.reset(); |
Nthnthj | 10:a15e07c7ad61 | 199 | //wait(1); |
Nthnthj | 10:a15e07c7ad61 | 200 | //timer.start(); |
Nthnthj | 10:a15e07c7ad61 | 201 | //temps1=timer.read_ms(); |
Nthnthj | 10:a15e07c7ad61 | 202 | //envoi(temps1); |
Nthnthj | 10:a15e07c7ad61 | 203 | } |
Nthnthj | 10:a15e07c7ad61 | 204 | // pc.printf(" Message recu :%s \n", Buffer); |
Nthnthj | 10:a15e07c7ad61 | 205 | return; |
Nthnthj | 10:a15e07c7ad61 | 206 | } |
Nthnthj | 10:a15e07c7ad61 | 207 | |
Nthnthj | 10:a15e07c7ad61 | 208 | |
Nthnthj | 10:a15e07c7ad61 | 209 | |
jimbaud | 6:1670244c4eb4 | 210 | //Main program |
jimbaud | 6:1670244c4eb4 | 211 | |
jimbaud | 6:1670244c4eb4 | 212 | int main(int, char**) |
jimbaud | 6:1670244c4eb4 | 213 | { |
Nthnthj | 9:3d83d0b410b8 | 214 | transistor=1; |
Nthnthj | 9:3d83d0b410b8 | 215 | //ble.start(); |
Nthnthj | 10:a15e07c7ad61 | 216 | //Ticker t; |
Nthnthj | 9:3d83d0b410b8 | 217 | //t.attach(&Accupdate, 15.0f); |
Nthnthj | 9:3d83d0b410b8 | 218 | timer.start(); |
Nthnthj | 10:a15e07c7ad61 | 219 | BT.attach(&RXevent); |
Nthnthj | 10:a15e07c7ad61 | 220 | //BT.attach(&RXevent); |
Nthnthj | 9:3d83d0b410b8 | 221 | user1.fall(&pressed); |
Nthnthj | 10:a15e07c7ad61 | 222 | //boutton1.fall(&pressed); |
Nthnthj | 10:a15e07c7ad61 | 223 | //boutton2.fall(&pressed); |
Nthnthj | 10:a15e07c7ad61 | 224 | event.fall(&pressed); |
Nthnthj | 10:a15e07c7ad61 | 225 | //BT.attach(&RXevent); |
Nthnthj | 10:a15e07c7ad61 | 226 | |
Nthnthj | 9:3d83d0b410b8 | 227 | |
jimbaud | 6:1670244c4eb4 | 228 | while (1) { |
Nthnthj | 9:3d83d0b410b8 | 229 | |
Nthnthj | 10:a15e07c7ad61 | 230 | |
Nthnthj | 10:a15e07c7ad61 | 231 | //begin2 = timer.read_ms(); |
Nthnthj | 10:a15e07c7ad61 | 232 | Green = 0.001; |
Nthnthj | 10:a15e07c7ad61 | 233 | wait(1); |
Nthnthj | 10:a15e07c7ad61 | 234 | //BT.puts("Test"); |
Nthnthj | 10:a15e07c7ad61 | 235 | Green = 0; |
Nthnthj | 10:a15e07c7ad61 | 236 | wait(1); |
Nthnthj | 9:3d83d0b410b8 | 237 | //} |
jimbaud | 6:1670244c4eb4 | 238 | |
janjongboom | 0:ba1c49874d3c | 239 | } |
janjongboom | 0:ba1c49874d3c | 240 | } |
Nthnthj | 9:3d83d0b410b8 | 241 | |
Nthnthj | 9:3d83d0b410b8 | 242 | //blablabla |