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.
Revision 0:afd478f066b0, committed 2017-07-03
- Comitter:
- yannickrda
- Date:
- Mon Jul 03 10:13:36 2017 +0000
- Commit message:
- Final!!!
Changed in this revision
diff -r 000000000000 -r afd478f066b0 SRF08.lib --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/SRF08.lib Mon Jul 03 10:13:36 2017 +0000 @@ -0,0 +1,1 @@ +http://developer.mbed.org/users/chris/code/SRF08/#ba04e9cd48fc
diff -r 000000000000 -r afd478f066b0 commande.cpp
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/commande.cpp Mon Jul 03 10:13:36 2017 +0000
@@ -0,0 +1,114 @@
+#include "mbed.h"
+#include "commande.h"
+
+#define adr 128
+using namespace std;
+
+
+DigitalOut S2(p11);
+Serial com_mot(p9,p10);
+
+void avancerG(char speed)
+{
+ com_mot.putc(adr);
+ com_mot.putc(1);
+ com_mot.putc(speed);
+ com_mot.putc((adr + 1 + speed) & 127); //checksum trame envoyée / reçue
+}
+void avancerD(char speed)
+{
+ com_mot.putc(adr);
+ com_mot.putc(4);
+ com_mot.putc(speed);
+ com_mot.putc((adr + 4 + speed) & 127); //checksum trame envoyée / reçue
+}
+void reculerG(char speed)
+{
+ com_mot.putc(adr);
+ com_mot.putc(0);
+ com_mot.putc(speed);
+ com_mot.putc((adr + 0 + speed) & 127); //checksum trame envoyée / reçue
+}
+void reculerD(char speed)
+{
+ com_mot.putc(adr);
+ com_mot.putc(5);
+ com_mot.putc(speed);
+ com_mot.putc((adr + 5 + speed) & 127); //checksum trame envoyée / reçue
+}
+//////////////Fonction Finale///////////////
+
+///////Marche avant////////
+void dem(char speed)
+{
+ int i;speed=speed*0.1;
+ for(i=0;i<100;i++)
+ {
+ avancerG(speed);wait(0.001);
+ avancerD(speed);speed++;
+ wait(0.01);
+ }
+ avancerG(speed);wait(0.001);
+ avancerD(speed);
+}
+void commande::avance(char speed)
+{
+ avancerG(speed);wait(0.001);
+ avancerD(speed);
+}
+
+//////Fonction avancer//////
+void commande::avancer(char speed)
+{
+ dem(speed);avance(speed);
+}
+//////////Marche arriere//////////
+void demar(char speed)
+{
+ int i;
+ speed=speed*0.1;
+ for(i=0;i<100;i++)
+ {
+ reculerG(speed);wait(0.001);
+ reculerD(speed);speed=speed++;
+ wait(0.01);
+ }
+}
+void commande::recu(char speed)
+{
+ reculerG(speed);wait(0.001);
+ reculerD(speed);
+}
+//////Fonction reculer//////
+void commande::reculer(char speed)
+{
+ demar(speed);recu(speed);
+}
+//////virage/////////////////
+void commande::tourner_droite(char speed)
+{
+ avancerG(speed);wait(0.001);
+ reculerD(speed);
+}
+void commande::tourner_gauche(char speed)
+{
+ avancerD(speed);wait(0.001);
+ reculerG(speed);
+}
+
+void commande::demi_tour(void)
+{
+ avancerD(50);wait(0.001);
+ reculerG(50);
+ wait(1.3);
+ avancerD(0);wait(0.001);
+ reculerG(0);
+}
+
+void commande::stop(void)
+{
+ avancerD(0);wait(0.001);
+ reculerG(0);
+}
+//////Fonction arret//////
+//void arreter(void)
diff -r 000000000000 -r afd478f066b0 commande.h
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/commande.h Mon Jul 03 10:13:36 2017 +0000
@@ -0,0 +1,25 @@
+#ifndef DEF_COMMANDE
+#define DEF_COMMANDE
+
+#include <string>
+
+
+class commande
+{
+ public:
+ //commande();
+ void avancer(char speed);
+ void avance(char speed);
+ void reculer(char speed);
+ void recu(char speed);
+ void tourner_droite(char speed);
+ void tourner_gauche(char speed);
+ void demi_tour(void);
+ void stop(void);
+
+ private:
+ char speed;
+
+};
+
+#endif
\ No newline at end of file
diff -r 000000000000 -r afd478f066b0 main.cpp
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/main.cpp Mon Jul 03 10:13:36 2017 +0000
@@ -0,0 +1,136 @@
+#include "mbed.h"
+#include "commande.h"
+#include <SRF08.h>
+#define adr 128
+
+//***************************************************
+//************** Déclaration des objets *************
+//***************************************************
+
+Serial bt(p13, p14);
+PwmOut pwm(p26); //objet
+Serial pc(USBTX,USBRX);
+SRF08 capt(p28,p27,0xE0);
+AnalogIn optique(p15);
+
+commande robot;
+
+//***************************************************
+//************** Prototypes fonctions ***************
+//***************************************************
+
+void PWM(void); // prototype fonction (cfr bas)
+void acqui(void);
+void autonomie(void);
+
+
+//***************************************************
+//**************** Variables Gobales ****************
+//***************************************************
+
+float pulse;
+int distance;
+unsigned c;
+float droite, gauche,devant,capteur;
+int right,left,straight,vu;
+
+//***************************************************
+//********************** MAIN ***********************
+//***************************************************
+
+int main()
+{
+ bt.baud(57600);
+ while(1)
+ {
+ autonomie();
+ /*while(1){
+ char choix = bt.getc();
+
+ if(choix=='0'){
+ robot.avancer(50);bt.printf("avance\n");}
+ else if(choix=='1'){
+ robot.reculer(50);bt.printf("recule\n");}
+ else if(choix=='2'){
+ robot.tourner_gauche(60);bt.printf("gauche\n");}
+ else if(choix=='3'){
+ robot.tourner_droite(60);bt.printf("droite\n");}
+ else if(choix=='4'){
+ robot.stop();bt.printf("stop\n\r");}
+ else if(choix=='5')
+ break;
+ }*/
+ }
+}
+
+//****************************************************
+//******************** Fonctions *********************
+//****************************************************
+
+
+/*void direction ( int x) //objectif faire le CHOIX de la meilleure direction
+{
+ if((straight < (left + 10)) && (straight < (right + 10))
+ {robot.avancer(50);bt.printf("avance\n");}
+ if((left > (right + 15)) && (left >= (straight + 15))){ // pourquoi le + XX ? parce que le capteur est trop sensible pour varier suivant l'unité choisie
+ robot.tourner_droite(60);bt.printf("droite\n"); // comparaison capteur relevé devant, à gauche et à droite, => la valeur la plus faible (= obstacle le + loin) l'emporte
+ robot.avancer(50);bt.printf("avance\n");}
+ if((right > (left + 15)) && (right >= (straight + 15))){
+ robot.tourner_gauche(60);bt.printf("gauche\n");
+ robot.avancer(50);bt.printf("avance\n");}
+}*/
+void autonomie()
+{
+ pwm.period_ms(20); //définition da la largeur de l'impulsion: 20 ms
+ pulse=0.0715;
+
+ while(1)
+ {
+
+ pulse=0.0715;pwm.write(pulse);acqui(); //capteur centre
+ devant=vu; straight=capteur;
+ if(straight>50)
+ robot.avance(50);
+ while(devant<60 && straight<50)
+ {
+ robot.stop();
+ pulse=0.095;wait(0.03);pwm.write(pulse);acqui(); //capteur gauche
+ gauche=vu; left=capteur;
+
+ pulse=0.048;wait(0.03);pwm.write(pulse);acqui(); //dcapteur roite
+ droite=vu; right=capteur;
+
+ if(gauche<droite)
+ {
+ robot.tourner_gauche(40);
+ wait(0.6);
+ robot.stop();
+ }
+ else if(gauche>droite)
+ {
+ robot.tourner_droite(40);
+ wait(0.6);
+ robot.stop();
+ }
+ pulse=0.0715;wait(0.03);pwm.write(pulse);acqui(); //capteur centre
+ devant=vu; straight=capteur;
+ }
+ }
+}
+/*
+ pulse=0.095;pwm.write(pulse);acqui(); //gauche
+ gauche=vu; left=capteur;
+ pulse=0.0715;pwm.write(pulse);acqui(); //centre
+ devant=vu; straight=capteur;
+ pulse=0.048;pwm.write(pulse);acqui(); //droite
+ droite=vu; right=capteur;*/
+
+void acqui()
+{
+ vu = optique.read_u16();
+ vu = 422006/(vu-3475);
+ capteur = capt.read();
+ bt.printf("Sonar : %f.2\n",capt.read());
+ bt.printf("Optique : %d\n",vu);
+ wait(0.1);
+}
diff -r 000000000000 -r afd478f066b0 mbed.bld --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/mbed.bld Mon Jul 03 10:13:36 2017 +0000 @@ -0,0 +1,1 @@ +https://mbed.org/users/mbed_official/code/mbed/builds/4eea097334d6 \ No newline at end of file