Code final

Dependencies:   mbed SimpleBLE X_NUCLEO_IDB0XA1 LIS3DH_spi

Committer:
Nthnthj
Date:
Wed Jan 22 09:33:01 2020 +0000
Revision:
10:a15e07c7ad61
Parent:
9:3d83d0b410b8
Code final

Who changed what in which revision?

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