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
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
Generated on Mon Jul 18 2022 23:54:10 by
1.7.2
