Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Fork of Nucleo_radar by
Revision 1:8558d2451e3e, committed 2015-12-02
- Comitter:
- Alex_Hochart
- Date:
- Wed Dec 02 12:43:30 2015 +0000
- Parent:
- 0:d93aff6b153f
- Commit message:
- aaa
Changed in this revision
| main.cpp | Show annotated file Show diff for this revision Revisions of this file |
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
