Adrien Audouard / Mbed 2 deprecated JeSuisUnGrandHomme

Dependencies:   TSI SliderPartition mbed

Fork of TP7_IUT_NICE by Guillaume Alli

Committer:
Ridaz
Date:
Wed Jan 21 09:35:57 2015 +0000
Revision:
6:1e3f8f15978b

        

Who changed what in which revision?

UserRevisionLine numberNew contents of line
Ridaz 6:1e3f8f15978b 1 #define Exo2
Ridaz 6:1e3f8f15978b 2 #ifdef Exo2
Ridaz 6:1e3f8f15978b 3
Ridaz 6:1e3f8f15978b 4 #include "mbed.h"
Ridaz 6:1e3f8f15978b 5 #include "info1.h"
Ridaz 6:1e3f8f15978b 6 #include "TSISensor.h"
Ridaz 6:1e3f8f15978b 7
Ridaz 6:1e3f8f15978b 8 #define LOW 0
Ridaz 6:1e3f8f15978b 9 #define HIGH 1
Ridaz 6:1e3f8f15978b 10
Ridaz 6:1e3f8f15978b 11 //pour le debug (printf & scanf)
Ridaz 6:1e3f8f15978b 12 Serial pc(USBTX, USBRX);
Ridaz 6:1e3f8f15978b 13
Ridaz 6:1e3f8f15978b 14 int main(void)
Ridaz 6:1e3f8f15978b 15 {
Ridaz 6:1e3f8f15978b 16 //Declaration des variables :
Ridaz 6:1e3f8f15978b 17 int etat;
Ridaz 6:1e3f8f15978b 18 int bp,bp1,bp2,bp3,bp4;
Ridaz 6:1e3f8f15978b 19 PwmOut led_BLUE(LED_BLUE);
Ridaz 6:1e3f8f15978b 20 PwmOut led_GREEN(LED_GREEN);
Ridaz 6:1e3f8f15978b 21 PwmOut led_RED(LED_RED);
Ridaz 6:1e3f8f15978b 22 TSISensor tsi2;
Ridaz 6:1e3f8f15978b 23 //Initialisation
Ridaz 6:1e3f8f15978b 24 etat=0;
Ridaz 6:1e3f8f15978b 25 led_RED.period_us(100);
Ridaz 6:1e3f8f15978b 26 led_BLUE.period_us(100);
Ridaz 6:1e3f8f15978b 27 led_GREEN.period_us(100);
Ridaz 6:1e3f8f15978b 28
Ridaz 6:1e3f8f15978b 29 //Boucle infinie
Ridaz 6:1e3f8f15978b 30 while (1) {
Ridaz 6:1e3f8f15978b 31 //Lecture du slider (bp=1 si doigt sur slider, 0 sinon)
Ridaz 6:1e3f8f15978b 32 appui_num(&bp);
Ridaz 6:1e3f8f15978b 33 appui_ana_2(&bp1,&bp2,&bp3,&bp4);
Ridaz 6:1e3f8f15978b 34 /*
Ridaz 6:1e3f8f15978b 35 Quatre zones sont définies :
Ridaz 6:1e3f8f15978b 36 0 à 0.15 : Simulation du retrait du jack
Ridaz 6:1e3f8f15978b 37 0.15 à 0.5 : Virage à gauche
Ridaz 6:1e3f8f15978b 38 0.5 à 0.95 : Virage à droite
Ridaz 6:1e3f8f15978b 39 0.95 à 1 : Fin de course
Ridaz 6:1e3f8f15978b 40 */
Ridaz 6:1e3f8f15978b 41
Ridaz 6:1e3f8f15978b 42
Ridaz 6:1e3f8f15978b 43 //Determination de l'etat en fonction de BP
Ridaz 6:1e3f8f15978b 44 switch(etat) {
Ridaz 6:1e3f8f15978b 45 case 0 :
Ridaz 6:1e3f8f15978b 46 if (bp1 == 1)
Ridaz 6:1e3f8f15978b 47 etat = 1;
Ridaz 6:1e3f8f15978b 48 break;
Ridaz 6:1e3f8f15978b 49 case 1 :
Ridaz 6:1e3f8f15978b 50 if (bp4 == 1)
Ridaz 6:1e3f8f15978b 51 etat = 0;
Ridaz 6:1e3f8f15978b 52 else
Ridaz 6:1e3f8f15978b 53 etat = 2;
Ridaz 6:1e3f8f15978b 54 break;
Ridaz 6:1e3f8f15978b 55 case 2 :
Ridaz 6:1e3f8f15978b 56 if (bp4 == 1)
Ridaz 6:1e3f8f15978b 57 etat = 0;
Ridaz 6:1e3f8f15978b 58 else if (bp2 == 0 && bp3 == 0)
Ridaz 6:1e3f8f15978b 59 etat = 2;
Ridaz 6:1e3f8f15978b 60 else if (bp2 == 1 && bp3 == 0)
Ridaz 6:1e3f8f15978b 61 etat = 3;
Ridaz 6:1e3f8f15978b 62 else if (bp2 == 0 && bp3 == 1)
Ridaz 6:1e3f8f15978b 63 etat = 4;
Ridaz 6:1e3f8f15978b 64
Ridaz 6:1e3f8f15978b 65 break;
Ridaz 6:1e3f8f15978b 66 }
Ridaz 6:1e3f8f15978b 67 printf("Etat = %d ; bp1 = %d ; bp2 = %d\n",etat,bp1,bp2);
Ridaz 6:1e3f8f15978b 68
Ridaz 6:1e3f8f15978b 69 //Ecriture sur les sorties en fct de l'etat
Ridaz 6:1e3f8f15978b 70 switch(etat) {
Ridaz 6:1e3f8f15978b 71 case 0 :
Ridaz 6:1e3f8f15978b 72 led_RED = 1;
Ridaz 6:1e3f8f15978b 73 led_BLUE = 1;
Ridaz 6:1e3f8f15978b 74 led_GREEN = 1;
Ridaz 6:1e3f8f15978b 75 break;
Ridaz 6:1e3f8f15978b 76 case 1 :
Ridaz 6:1e3f8f15978b 77 led_RED = 1;
Ridaz 6:1e3f8f15978b 78 led_BLUE = 1;
Ridaz 6:1e3f8f15978b 79 led_GREEN = 0;
Ridaz 6:1e3f8f15978b 80 break;
Ridaz 6:1e3f8f15978b 81 case 2 :
Ridaz 6:1e3f8f15978b 82 led_RED = 1;
Ridaz 6:1e3f8f15978b 83 led_BLUE = 1;
Ridaz 6:1e3f8f15978b 84 led_GREEN = 0;
Ridaz 6:1e3f8f15978b 85 break;
Ridaz 6:1e3f8f15978b 86 case 3 :
Ridaz 6:1e3f8f15978b 87 led_RED = 0 + (tsi2.readPercentage()-0.15)*2.8;
Ridaz 6:1e3f8f15978b 88 /*
Ridaz 6:1e3f8f15978b 89 A 15% du slider la LED rouge est à 100% de son intensité;
Ridaz 6:1e3f8f15978b 90 On soustrait 0.15 car on veut une intensité de 100% a 15% du slider;
Ridaz 6:1e3f8f15978b 91 L'intensité diminue progréssivement avec un rapport de 2.8;
Ridaz 6:1e3f8f15978b 92 A 50% du slider l'intensité de la LED est à 0;
Ridaz 6:1e3f8f15978b 93 */
Ridaz 6:1e3f8f15978b 94 led_BLUE = 1;
Ridaz 6:1e3f8f15978b 95 led_GREEN = 1 - (tsi2.readPercentage()-0.15)*2.8;//Idem que la LED rouge sauf que l'intensité augmente;
Ridaz 6:1e3f8f15978b 96 etat = 2;
Ridaz 6:1e3f8f15978b 97 break;
Ridaz 6:1e3f8f15978b 98 case 4 :
Ridaz 6:1e3f8f15978b 99 /*
Ridaz 6:1e3f8f15978b 100 Même principe sauf que le repport est de 2.2;
Ridaz 6:1e3f8f15978b 101 */
Ridaz 6:1e3f8f15978b 102 led_RED = 1;
Ridaz 6:1e3f8f15978b 103 led_BLUE = 1 - (tsi2.readPercentage()-0.5)*2.2;
Ridaz 6:1e3f8f15978b 104 led_GREEN = (tsi2.readPercentage()-0.5)*2.2;
Ridaz 6:1e3f8f15978b 105 etat = 2;
Ridaz 6:1e3f8f15978b 106 break;
Ridaz 6:1e3f8f15978b 107
Ridaz 6:1e3f8f15978b 108
Ridaz 6:1e3f8f15978b 109 }
Ridaz 6:1e3f8f15978b 110
Ridaz 6:1e3f8f15978b 111 wait_ms(10);
Ridaz 6:1e3f8f15978b 112 }
Ridaz 6:1e3f8f15978b 113 }
Ridaz 6:1e3f8f15978b 114 #endif