Adrien Audouard / Mbed 2 deprecated JeSuisUnGrandHomme

Dependencies:   TSI SliderPartition mbed

Fork of TP7_IUT_NICE by Guillaume Alli

Embed: (wiki syntax)

« Back to documentation index

Show/hide line numbers Exo5.cpp Source File

Exo5.cpp

00001 #define Exo2
00002 #ifdef  Exo2
00003 
00004 #include "mbed.h"
00005 #include "info1.h"
00006 #include "TSISensor.h"
00007 
00008 #define LOW 0
00009 #define HIGH 1
00010 
00011 //pour le debug (printf & scanf)
00012 Serial pc(USBTX, USBRX);
00013 
00014 int main(void)
00015 {
00016     //Declaration des variables :
00017     int etat;
00018     int bp,bp1,bp2,bp3,bp4;
00019     PwmOut led_BLUE(LED_BLUE);
00020     PwmOut led_GREEN(LED_GREEN);
00021     PwmOut led_RED(LED_RED);
00022     TSISensor tsi2;
00023     //Initialisation
00024     etat=0;
00025     led_RED.period_us(100);
00026     led_BLUE.period_us(100);
00027     led_GREEN.period_us(100);
00028 
00029     //Boucle infinie
00030     while (1) {
00031         //Lecture du slider (bp=1 si doigt sur slider, 0 sinon)
00032         appui_num(&bp);
00033         appui_ana_2(&bp1,&bp2,&bp3,&bp4); 
00034         /*
00035         Quatre zones sont définies :
00036         0 à 0.15 : Simulation du retrait du jack
00037         0.15 à 0.5 : Virage à gauche
00038         0.5 à 0.95 : Virage à droite
00039         0.95 à 1 : Fin de course
00040         */
00041         
00042         
00043         //Determination de l'etat en fonction de BP
00044         switch(etat) {
00045             case 0 :
00046                 if (bp1 == 1)
00047                     etat = 1;
00048                 break;
00049             case 1 :
00050                 if (bp4 == 1)
00051                     etat = 0;
00052                 else 
00053                     etat = 2;
00054                 break;
00055             case 2 :
00056                 if (bp4 == 1)
00057                     etat = 0;
00058                 else if (bp2 == 0 && bp3 == 0)
00059                     etat = 2;
00060                 else if (bp2 == 1 && bp3 == 0)
00061                     etat = 3;
00062                 else if (bp2 == 0 && bp3 == 1)
00063                     etat = 4;
00064                 
00065                 break;
00066         }
00067         printf("Etat = %d ; bp1 = %d ; bp2 = %d\n",etat,bp1,bp2);
00068 
00069         //Ecriture sur les sorties en fct de l'etat
00070         switch(etat) {
00071             case 0 :
00072                 led_RED = 1;
00073                 led_BLUE = 1;
00074                 led_GREEN = 1;
00075                 break;
00076             case 1 :
00077                 led_RED = 1;
00078                 led_BLUE = 1;
00079                 led_GREEN = 0;
00080                 break;
00081             case 2 :
00082                 led_RED = 1;
00083                 led_BLUE = 1;
00084                 led_GREEN = 0;
00085                 break;
00086             case 3 :
00087                 led_RED = 0 + (tsi2.readPercentage()-0.15)*2.8; 
00088                 /*
00089                 A 15% du slider la LED rouge est à 100% de son intensité;
00090                 On soustrait 0.15 car on veut une intensité de 100% a 15% du slider;
00091                 L'intensité diminue progréssivement avec un rapport de 2.8;
00092                 A 50% du slider l'intensité de la LED est à 0;
00093                 */
00094                 led_BLUE = 1;
00095                 led_GREEN = 1 - (tsi2.readPercentage()-0.15)*2.8;//Idem que la LED rouge sauf que l'intensité augmente;
00096                 etat = 2;
00097                 break;
00098             case 4 :
00099                 /*
00100                 Même principe sauf que le repport est de 2.2;
00101                 */
00102                 led_RED = 1;
00103                 led_BLUE = 1 - (tsi2.readPercentage()-0.5)*2.2;
00104                 led_GREEN = (tsi2.readPercentage()-0.5)*2.2;
00105                 etat = 2;
00106                 break;
00107             
00108 
00109         }
00110 
00111         wait_ms(10);
00112     }
00113 }
00114 #endif