aa

Dependencies:   HCSR04 mbed

Fork of Nucleo_radar by Contest IOT GSE5

Revision:
1:8558d2451e3e
Parent:
0:d93aff6b153f
diff -r d93aff6b153f -r 8558d2451e3e main.cpp
--- 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