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);
        //}

    }
}