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.
Dependencies: TSI SliderPartition mbed
Fork of TP7_IUT_NICE by
Diff: Exo5.cpp
- Revision:
- 6:1e3f8f15978b
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Exo5.cpp Wed Jan 21 09:35:57 2015 +0000 @@ -0,0 +1,114 @@ +#define Exo2 +#ifdef Exo2 + +#include "mbed.h" +#include "info1.h" +#include "TSISensor.h" + +#define LOW 0 +#define HIGH 1 + +//pour le debug (printf & scanf) +Serial pc(USBTX, USBRX); + +int main(void) +{ + //Declaration des variables : + int etat; + int bp,bp1,bp2,bp3,bp4; + PwmOut led_BLUE(LED_BLUE); + PwmOut led_GREEN(LED_GREEN); + PwmOut led_RED(LED_RED); + TSISensor tsi2; + //Initialisation + etat=0; + led_RED.period_us(100); + led_BLUE.period_us(100); + led_GREEN.period_us(100); + + //Boucle infinie + while (1) { + //Lecture du slider (bp=1 si doigt sur slider, 0 sinon) + appui_num(&bp); + appui_ana_2(&bp1,&bp2,&bp3,&bp4); + /* + Quatre zones sont définies : + 0 à 0.15 : Simulation du retrait du jack + 0.15 à 0.5 : Virage à gauche + 0.5 à 0.95 : Virage à droite + 0.95 à 1 : Fin de course + */ + + + //Determination de l'etat en fonction de BP + switch(etat) { + case 0 : + if (bp1 == 1) + etat = 1; + break; + case 1 : + if (bp4 == 1) + etat = 0; + else + etat = 2; + break; + case 2 : + if (bp4 == 1) + etat = 0; + else if (bp2 == 0 && bp3 == 0) + etat = 2; + else if (bp2 == 1 && bp3 == 0) + etat = 3; + else if (bp2 == 0 && bp3 == 1) + etat = 4; + + break; + } + printf("Etat = %d ; bp1 = %d ; bp2 = %d\n",etat,bp1,bp2); + + //Ecriture sur les sorties en fct de l'etat + switch(etat) { + case 0 : + led_RED = 1; + led_BLUE = 1; + led_GREEN = 1; + break; + case 1 : + led_RED = 1; + led_BLUE = 1; + led_GREEN = 0; + break; + case 2 : + led_RED = 1; + led_BLUE = 1; + led_GREEN = 0; + break; + case 3 : + led_RED = 0 + (tsi2.readPercentage()-0.15)*2.8; + /* + A 15% du slider la LED rouge est à 100% de son intensité; + On soustrait 0.15 car on veut une intensité de 100% a 15% du slider; + L'intensité diminue progréssivement avec un rapport de 2.8; + A 50% du slider l'intensité de la LED est à 0; + */ + led_BLUE = 1; + led_GREEN = 1 - (tsi2.readPercentage()-0.15)*2.8;//Idem que la LED rouge sauf que l'intensité augmente; + etat = 2; + break; + case 4 : + /* + Même principe sauf que le repport est de 2.2; + */ + led_RED = 1; + led_BLUE = 1 - (tsi2.readPercentage()-0.5)*2.2; + led_GREEN = (tsi2.readPercentage()-0.5)*2.2; + etat = 2; + break; + + + } + + wait_ms(10); + } +} +#endif