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 1:3396edc39360, committed 2021-06-02
- Comitter:
- dorian06
- Date:
- Wed Jun 02 07:18:21 2021 +0000
- Parent:
- 0:517981cf0540
- Commit message:
- bluetooth
Changed in this revision
| main.cpp | Show annotated file Show diff for this revision Revisions of this file |
diff -r 517981cf0540 -r 3396edc39360 main.cpp
--- a/main.cpp Mon May 17 09:12:35 2021 +0000
+++ b/main.cpp Wed Jun 02 07:18:21 2021 +0000
@@ -1,21 +1,129 @@
-#include "mbed.h"
-
+// pour faire 1 tour on fait 34(nombre de crans pour 1 tour)*Mcran*vitesse
+// sa represente le temp pour faire un tour
+#include "mbed.h"
+#define Mcran 0.01099 //distance par cran en metre
+#define vitesse 0.7 //vitesse en m/s (a remesurer avec le robot sur piste)
+#define vmot1TOUR 50 // rapport cyclique 50%
+#define vmot2TOUR -50 //rappot cyclique de -50%
+#define vmot_avance 50
+#define vmot_recule -50
+#define vmot_stop 0
Serial DebugUART(USBTX, USBRX);
-Serial BTH(p13,p14);
-
+Serial BTH(p13,p14); //module bleutooth tx,rx
+Timer T1; //utiliser pour faire un tour
+Timer T2; //utiliser pour faire un demi tour
+PwmOut mot1(p23); // mot droit
+PwmOut mot2(p22); //mot gauche
+DigitalOut sens_droit(p11); // definir le sens du moteur droit
+DigitalOut sens_gauche(p12);// definir le sens du moteur gauche
+void sens_vitesse(int,int); // gestin du sens et de la vitesse et du moteur 1 periode entre [-100;100] puis le moteur 1=droit 2=gauche
int main(void)
{
- DebugUART.baud(9600);
- BTH.baud(9600);
-
- char le_caractere_lu;
-
+ float Ttour=1.40;//34*0.01099*0.7;// calcul du temps mis pour faire un tour
+ float Tdemi=0.70;//17*0.01099*0.7;//calcul du temps mis pour faire un demi tour
+ //printf("Ttour=%g",Ttour);
+ //printf("Tdemi=%g",Tdemi);
+ DebugUART.baud(9600); //vitesse de comunication
+ BTH.baud(9600); // vitesse de comunication
+ char CAR,CH; // caracter envoyé
+ mot1.period_us(100); //periode des moteurs
+ mot2.period_us(100);
while(1) {
if (BTH.readable()) {
- le_caractere_lu=BTH.getc();
- printf("\n\r caractere lu = %c",le_caractere_lu);
+ CH=CAR;
+ CAR=BTH.getc();
+ //printf("\n\r caractere lu = %c %c",CAR,CH);//affiche le caractere
+ }
+
+ if(CAR=='A') { //A tour sur lui meme POSSIBLE AVEC LES CRANS 34
+ if(CH!=CAR) {
+ T1.start();
+ //printf("start");
+ sens_vitesse(vmot1TOUR,1); //moteur droit rapport cyclique 50 sens avancer
+ sens_vitesse(vmot2TOUR,2); //moteur gauche rapport cyclique 50 sens reculer
+ }
+
+ if (T1.read()>=Ttour) {
+ printf("t1");
+ T1.stop();
+ T1.reset();
+ sens_vitesse(vmot_stop,1);
+ sens_vitesse(vmot_stop,2);
+ }
+ }
+ if(CAR=='B') { //B robot avance
+ sens_vitesse(vmot_avance,1);
+ sens_vitesse(vmot_avance,2);
+ }
+
+
+ if(CAR=='C') { //C demi tour sur lui meme POSSIBLE AVEC LES CRANS 17
+ if(CH!=CAR) {
+ T2.start();
+ sens_vitesse(vmot1TOUR,1); //moteur droit rapport cyclique 50 sens avancer
+ sens_vitesse(vmot2TOUR,2); //moteur gauche rapport cyclique 50 sens reculer
+ }
+
+ if (T2.read()>=Tdemi) {
+ T2.stop();
+ T2.reset();
+ sens_vitesse(vmot_stop,1);
+ sens_vitesse(vmot_stop,2);
+ }
+ }
+ if(CAR=='F') { //F droit
+ sens_vitesse(vmot_avance,1); //moteur gauche rapport cyclique 50 sens avancer
+ sens_vitesse(vmot_stop,2); //moteur droit stop
+
+
+ }
+ if(CAR=='E') { //E stop
+ sens_vitesse(vmot_stop,1); //moteur droit stop
+ sens_vitesse(vmot_stop,2); //moteur gauche stop
+
+ }
+
+ if(CAR=='D') { //D gauche
+ sens_vitesse(vmot_avance,2); //moteur droit rapport cyclique 50 sens avancer
+ sens_vitesse(vmot_stop,1); //moteur gauche stop
+
+ }
+ // G epreuve de la bute
+
+ if(CAR=='H') { //H robot recule
+ sens_vitesse(vmot_recule,1);
+ sens_vitesse(vmot_recule,2);
}
}
+
+}
+
+
+void sens_vitesse(int Periode,int mot)
+{
+ int sens;
+ if (Periode<=0) { // determination du sens 1 si peride inf a 0
+ sens=1;
+ Periode=abs(Periode); // valeurs abs de la periode donc en positif
+ } else {
+ sens=0;
+ }
+ if((mot==1)&&(sens==1)) {
+ sens_gauche.write(1);
+ mot1.pulsewidth_us(100-Periode); // 100-periode car sinon vitesse est de la difference entre 100 et la periode
+
+ } else if((mot==1)&& (sens==0)) {
+ sens_gauche.write(0);
+ mot1.pulsewidth_us(Periode);
+ }
+
+ if((mot==2)&&(sens==1)) {
+ sens_droit.write(1);
+ mot2.pulsewidth_us(100-Periode); // 100-periode car sinon vitesse est de la difference entre 100 et la periode
+ } else if((mot==2)&& (sens==0)) {
+ sens_droit.write(0);
+ mot2.pulsewidth_us(Periode);
+ }
}
\ No newline at end of file