Benjamin Brou
/
RobotSuiveurDeLigneV1
V1
Revision 0:1a9a549c4630, committed 2019-12-05
- Comitter:
- benbrou06
- Date:
- Thu Dec 05 12:19:55 2019 +0000
- Commit message:
- V1
Changed in this revision
diff -r 000000000000 -r 1a9a549c4630 lib.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/lib.h Thu Dec 05 12:19:55 2019 +0000 @@ -0,0 +1,16 @@ +/* This defines will be replaced by PinNames soon */ +#if defined (TARGET_KL25Z) || defined (TARGET_KL46Z) +#define ELEC0 9 +#define ELEC1 10 +#elif defined (TARGET_KL05Z) +#define ELEC0 9 +#define ELEC1 8 +#else +#error TARGET NOT DEFINED +#endif + +TSIAnalogSlider tsi(ELEC0, ELEC1, 40); +float lire_slider() +{ + return (1-tsi.readPercentage()); +} \ No newline at end of file
diff -r 000000000000 -r 1a9a549c4630 main.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/main.cpp Thu Dec 05 12:19:55 2019 +0000 @@ -0,0 +1,173 @@ +/////////////////////////////////////////////////////////////////// +/////////////////////////////////////////////////////////////////// +/* +Programme Robot Sans_Titre.jpg : + +Si il y a des erreurs c'est parceque on est pas sur le site mbed donc y'a pas la biblio +mbed.h si vous avez des idées on en parle sur discord ou snap ne changez pas des trucs +sans le dire () +*/ +////////////////////////////////////////////////////////////////// +////////////////////////////////////////////////////////////////// + + +#define RobotSuiveurDeLigneV1 +#ifdef RobotSuiveurDeLigneV1 + +#include <stdio.h> +#include "mbed.h" + +//Décla globale des entrées et sorties +DigitalIn Jack(D3); //C'est le jack qu'il faudra retirer pour lancer le robot + +PwmOut Motg(PTC8); //Déclaration PWM des moteurs +PwmOut Motd(PTA13); + +//Entrées analogiques des capteurs +AnalogIn Captg1(PTB1); //capteur gauche n°1 +AnalogIn Captd1(PTB2); //capteur droit n°1 + +DigitalIn FDC(PTD4); //Contact Fin de course + + +DigitalOut ledR(LED_RED); //Déclaration Pwm des 3 leds de couleur Rouge, Verte et Bleu (dans l'ordre) +DigitalOut ledV(LED_GREEN); +DigitalOut ledB(LED_BLUE); + + +int main() +{ + int Depart=0,etat=0,Limite=70; //Valeur pour tester la marche/arret du robot + Motg.period_us(100); + Motd.period_us(100); //Decla des variables du main + float Vmg=100,Vmd=100; //Les 2 moteurs + Motg.pulsewidth_us(Vmg);//Vitesses des 2 moteurs + Motd.pulsewidth_us(Vmd); + int BL=0; //BL (Boucle Ligne) variable de la boucle infinie + int FinDeCourse=0,Dimin=0; + + + + printf("debut pgrm !\n\r"); //Test teraterm pour le début du prgm +///////////////////////////////////////////////////////////////// +/////Demarage du robot ///// +/////Debut suivi de ligne ///// +///////////////////////////////////////////////////////////////// + + + while (BL==0) { + + + + Depart = Jack.read(); //Si le Jack est enlevé, alors Depart = 1, donc le robot démarre. Sinon il reste à l'arrët + FinDeCourse = FDC.read(); //Si FDC activé, alors FinDeCourse = 1, donc le robot s'arrete + + switch ( etat ) { // gestion des états + case 0 : + if (Depart==1) { + etat=1; + } + break ; + case 1 : + if (Depart ==0){ + etat=100; + } else if (FinDeCourse==1) { + etat=0; BL=1; + } else if (Captg1<0.4) { + etat=2; + } else if (Captd1<0.4) { + etat=3; + } + break ; + case 2 : + if (Depart ==0){ + etat=100; + } else if (FinDeCourse==1) { + etat=0; BL=1; + } else if ((Captg1>0.6)&&(Captd1>0.6)) { + etat=1; + } + break ; + case 3 : + if (Depart ==0){ + etat=100; + } else if (FinDeCourse==1) { + etat=0; BL=1; + } else if ((Captg1>0.6)&&(Captd1>0.6)) { + etat=1; + } + break ; + case 100 : + etat = 0; + break ; + + } + + switch ( etat ) { // gestion des sorties + case 0 : + Vmg=100; + Vmd=100; + Motg.pulsewidth_us(Vmg);//Vitesses des 2 moteurs (arreté) + Motd.pulsewidth_us(Vmd); + ledR.write(0); + ledV.write(1); + ledB.write(1); + wait_ms(300); //Led = clignote Rouge ! + ledR.write(1); + ledV.write(1); + ledB.write(1); + wait_ms(400); + break ; + case 1 : + Vmg=70; + Vmd=70; + Motg.pulsewidth_us(Vmg);//Vitesses des 2 moteurs (roule à 30%) + Motd.pulsewidth_us(Vmd); + ledR.write(1); + ledV.write(0); //Led = verte! + ledB.write(1); + break ; + + case 2 : + printf("Tourne a gauche\n\r"); + while(Captg1<0.4) { //tant que CG1 est sur du blanc, la roue droite doit tourner plus rapidement que la roue gauche + while(Vmd>=Limite) { + Vmg=80; + Vmd=80-Dimin; + Motg.pulsewidth_us(Vmg); + Motd.pulsewidth_us(Vmd); + printf("Vmd = %g\n\r",Vmd); + printf("Dimin = %d\n\r",Dimin); + Dimin++; + } + Dimin=0; + break ; + + + case 3 : + printf("Tourne a droite\n\r"); + while(Captd1<0.4) { //tant que CD1 est sur du blanc, la roue gauche doit tourner plus rapidement que la roue droite + while(Vmg>=Limite) { + Vmg=80-Dimin; + Vmd=80; + Motg.pulsewidth_us(Vmg); + Motd.pulsewidth_us(Vmd); + printf("Vmg = %g\n\r",Vmg); + printf("Dimin = %d\n\r",Dimin); + Dimin++; + } + Dimin=0; + break ; + + case 100 : + ledR.write(1); + ledV.write(1); + ledB.write(1); + break ; + + } + } + } + } +} +#endif \ No newline at end of file
diff -r 000000000000 -r 1a9a549c4630 mbed.bld --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/mbed.bld Thu Dec 05 12:19:55 2019 +0000 @@ -0,0 +1,1 @@ +https://os.mbed.com/users/mbed_official/code/mbed/builds/65be27845400 \ No newline at end of file
diff -r 000000000000 -r 1a9a549c4630 tsi_sensor.lib --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/tsi_sensor.lib Thu Dec 05 12:19:55 2019 +0000 @@ -0,0 +1,1 @@ +http://mbed.org/users/Kojto/code/tsi_sensor/#976904559b5c