Robot fou

Dependencies:   SRF05 mbed

Embed: (wiki syntax)

« Back to documentation index

Show/hide line numbers func.cpp Source File

func.cpp

00001 #include "mbed.h"
00002 #include "func.h"
00003 #include "time.h"
00004 
00005 int etat=0;
00006 
00007 float distance=32;
00008 int vitrand1=(rand()%60)+20;
00009 int vitrand2=(rand()%60)+20;
00010 int cligne=rand()%15;
00011 int td12=0;
00012 
00013 
00014 void vite(void){
00015     MotD.pulsewidth_us(vitrand1);
00016     MotG.pulsewidth_us(vitrand2);
00017     vitrand1=(rand()%50)+30;
00018     vitrand2=(rand()%50)+30;
00019 }
00020 
00021 void attend(void){
00022     if(vitrand1>vitrand2){
00023         wait(40*1/vitrand1);
00024     }
00025     else wait(40*1/vitrand2);
00026 }
00027 
00028 void clignote(void){
00029     cligne=rand()%15;
00030     leds.write(cligne);
00031 }
00032 
00033 void fou(void){
00034     distance=srf.read();
00035     switch(etat){
00036             case 0 : if(distance > 45){ etat = 1; }; break;
00037             case 1 : if(distance < 45){ etat = 0; }; break;
00038         }
00039         
00040     switch(etat){
00041             case 0 : t2.detach();
00042                      td12=0;
00043                      SensG.write(1);
00044                      SensD.write(0);
00045                      MotD.pulsewidth_us(50);
00046                      MotG.pulsewidth_us(50);
00047                      attend();
00048                      break;
00049             case 1 : if(td12==0){SensD.write(0); SensG.write(0); t2.attach(&vite,0.5); td12=1;} break;
00050         }
00051        /* printf("sensrand = %d\n\r",sensrand);
00052         printf("vitrand = %d\n\r",vitrand);
00053         */
00054         
00055         printf("Tension Batterie:%g\n\r",(Vbat.read()*13300*3.3)/3300);
00056         //wait(1);
00057         wait_ms(30);
00058 }