V1

Dependencies:   mbed tsi_sensor

Files at this revision

API Documentation at this revision

Comitter:
benbrou06
Date:
Thu Dec 05 12:19:55 2019 +0000
Commit message:
V1

Changed in this revision

lib.h Show annotated file Show diff for this revision Revisions of this file
main.cpp Show annotated file Show diff for this revision Revisions of this file
mbed.bld Show annotated file Show diff for this revision Revisions of this file
tsi_sensor.lib Show annotated file Show diff for this revision Revisions of this file
--- /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
--- /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
--- /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
--- /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