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
- Committer:
- MaxenceGalopin
- Date:
- 2020-01-26
- Revision:
- 12:797136ee9f42
- Parent:
- 11:72c976e0d889
File content as of revision 12:797136ee9f42:
/* Programme pour l'ObCP connecté uniquement à l'autre ObCP. C'est la cellule qui fait la porte de départ en mode solo La sortie de la photodiode est reliée à la broche A0 Le laser est alimenté en 3V3 (suffisant) ou en 5V. Les pattes RX et TX dumodule HC-06 sont reliées aux broches D0 et D1 (Attention à relier RX à TX et Tx à RX) Le shield est fonctionnel (sauf BLE) mais il faut inverser TX et RX pour le HC-05/HC06 Il comporte aussi 2 leds, 2 boutons, et un transistor pour controler le laser. */ /* Penser à mettre à jour les librairies */ //Includes #include "mbed.h" #include "SimpleBLE.h" #include "LIS3DH.h" #include "stdlib.h" //Bluetooth hc05-6 #define TX D0 //On utilise USBTX et USBRX #define RX D1 // GPIO set //Interrupt input InterruptIn user1(PC_13); //User1 InterruptIn boutton1(D3); InterruptIn boutton2(D4); InterruptIn event(A0); //creation timer Timer timer; //Sorties numériques DigitalOut led1(D14); DigitalOut transistor(D6); //PWM output PwmOut PWMoutput(PB_1); //Main PWM output PwmOut Green(PC_8); //PWM Red LED PwmOut Red(PC_6); //PWM Green LED PwmOut Blue(PC_9); //PWM Blue LED //Création de la liaison série(BT HC-05) Serial BT(USBTX,USBRX); //Serial pc(USBTX, USBRX); int compteur; bool flag = false; float end,begin; int message = 0; int temps1 = 0; string course; char Buffer[10]; int i = 0; int begin2 = 0; //envoi d'un message à l'autre cellule void envoi(int message){ BT.printf("%i\n", message); } // fonction appelée lors du déclanchement de la diode void pressed(){ led1 = !led1; temps1 = timer.read_ms(); message = temps1; envoi(message); } /* void skater_d() { if(flag==false) { // pc.printf("Ligne de depart coupee solo \n"); if( flag == false) { //printf("Depart skate \n"); begin = timer.read_ms(); compteur=100; //pc.printf(" skater lance %.0f \n", begin); flag = true; } else if(flag == true) { //printf("erreur \n"); //pc.printf(" Temps du skater : %.0f \n", end-begin); flag = false; } } else if(flag==true) { //printf("Ligne d'arrivee coupee \n"); if( flag == false ) { //printf("arrivee coupe sans depart\n"); flag = true; } else if(flag == true ) { //printf("Arrivee skate \n"); end = timer.read_ms(); //Temps = end-begin; compteur=200; //wait(1); //pc.printf(" Temps du skater : %.0f \n", end-begin); flag = false; } } } */ //fonction non utilisée void test_mode(char Buffer[10]){ if(Buffer[0] == 'S'){ // pc.printf("mode solo \n"); timer.reset(); flag = false; }else if(Buffer[0]=='D'){ // pc.printf("mode duo \n"); flag=true; timer.reset(); } else if (Buffer[0] == 'R'){ // pc.printf("Reset timer \n "); timer.reset(); //wait(1); //timer.start(); } // pc.printf(" Test \n"); } // reception d'un message void RXevent (){ if(BT.readable()){ BT.scanf("%s", &Buffer); wait(1); } if (Buffer[0] == 'R'){ timer.reset(); } return; } //Main program int main(int, char**) { transistor=1; timer.start(); BT.attach(&RXevent); user1.fall(&pressed); event.fall(&pressed); while (1) { Green = 0.001; wait(1); Green = 0; wait(1); //} } }