Contest IOT GSE5
/
Nucleo_radar_buz
aa
Fork of Nucleo_radar by
Diff: main.cpp
- Revision:
- 1:8558d2451e3e
- Parent:
- 0:d93aff6b153f
--- a/main.cpp Wed Nov 25 14:08:15 2015 +0000 +++ b/main.cpp Wed Dec 02 12:43:30 2015 +0000 @@ -1,7 +1,6 @@ #include "mbed.h" #include <string.h> #include "HCSR04.h" -//#include "rtos.h" #define TRIG_1 PA_8 #define ECHO_1 PC_7 @@ -10,7 +9,7 @@ Serial carte(PA_9, PA_10); //emission --- tx, rx HCSR04 sensor1(TRIG_1, ECHO_1); -DigitalOut led1(LED1); +DigitalOut buzz(PB_8); int max (int a, int b) { return (a<b)?b:a; @@ -58,15 +57,6 @@ } } -/* -void format(char *msg, char *msg_formated){ - char *STX = 2; - char *ETX = 3; - strcat(msg_formated, STX); - strcat(msg_formated, msg); - strcat(msg_formated, ETX); -} -*/ void send(char *data){ char trame[52]=""; @@ -74,32 +64,7 @@ USART1_puts(trame); } -/* -void receive(char *frame){ - char trame[50]={0}; - int etat = 0; - while(etat != 2){ - char r; - if(carte.readable()){ - r = carte.getc(); - switch(etat){ - case 0 : if(r == 'S'){etat = 1;} - break; - case 1 : if(r != 'E'){strcat(trame,&r);} - else { etat = 2; } - break; - default : break; - } - } - } - for(int i=0;i<50;i++){ - frame[i]=trame[i]; - } -} -*/ - int receive(char *frame){ - int end = 0; int I; unsigned int sommeBuffer; char r; @@ -133,7 +98,6 @@ frame[0]=0; return 1; } - break; default : frame[I]=r; @@ -143,117 +107,79 @@ } } } - return 1; } int controle(char *frame){ - if (*frame!=6) - return 0; - return 1; - + if (*frame!=6) return 0; + else return 1; } -void tictac(){ - led1 = !led1; +void buzz_pulse(){ + } -void bipContinu(){ - led1 = 1; -} -void bipOff(){ - led1 = 0; + +void startEmision(){ + } //Emission d'une trame, reception d'acquittement et vérification int main() { - Ticker tic; - tic.attach(&bipOff, 0.1); - char trame[50]; int essai, error; - int i=0; int value; - //int value[10] = {255, 200, 150, 100, 50, 40, 30, 20, 10, 5}; char message[4]; + int i=0; + Timer time; - int mem[2] = {-1, -1}; - int memFreq = 0; - Timer timeout; + //int mem[2] = {-1, -1}; while(1){ - value=min(sensor1.distance(1),230); - value=max(value,0); + time.reset(); + time.start(); + value=min(sensor1.distance(1),230); + value=max(value,0); - if(mem[0]<0){ + /*if(mem[0]<0){ + mem[0]=value; + }else{ + if(abs(mem[0]-value)<40){ + mem[1]=mem[0]; mem[0]=value; }else{ - if(abs(mem[0]-value)<40){ - mem[1]=mem[0]; - mem[0]=value; - }else{ - value=mem[0]; - } + value=mem[0]; } + }*/ - int freq; - - if(value<=17){ //0 - freq=0; - }else if(value>17 && value<=30){ //1 - freq=1; - }else if(value>30 && value<=70){ //2 - freq=2; - }else if(value>70 && value<=130){ //3 - freq=3; - }else if(value>130 && value<=200){ //4 - freq=4; - }else{ //5 - freq=5; - } + message[0]=48+(value/100)%10; + message[1]=48+(value/10)%10; + message[2]=48+value%10; + message[3]=0; - if(memFreq != freq){ - memFreq = freq; - tic.detach(); - - if(value<=17){ //0 - tic.attach(&bipContinu, 1); - }else if(value>17 && value<=30){ //1 - tic.attach(&tictac, 0.05); - }else if(value>30 && value<=70){ //2 - tic.attach(&tictac, 0.1); - }else if(value>70 && value<=130){ //3 - tic.attach(&tictac, 0.2); - }else if(value>130 && value<=200){ //4 - tic.attach(&tictac, 0.3); - }else{ //5 - led1=0; + essai=0; + printf("%s\n\r",message); + send(message); + + error=receive(trame); + + while((controle(trame)==0 || error==1) && essai<3){ + send(message); + error=receive(trame); + essai++; + } + + if(essai<=3) { + while(time.read() <= 1){ + for(i =0; i<=50;i++) { + buzz = 1; + wait_us(400); + buzz = 0; + wait_us(400); } - + wait_ms(value*5); } - - message[0]=48+(value/100)%10; - message[1]=48+(value/10)%10; - message[2]=48+value%10; - message[3]=0; - - essai=0; - printf("%s\n\r",message); - send(message); - - error=receive(trame); - - - while((controle(trame)==0 || error==1) && essai<3){ - send(message); - error=receive(trame); - essai++; - } - - if(essai==3) return 0; - - i=(i+1)%10; - wait(1); - + time.stop(); + } } } \ No newline at end of file