html

Dependencies:   mbed bloc_io mbed-rtos html EthernetInterface

Committer:
RomainCorradi
Date:
Mon Oct 28 10:09:20 2019 +0000
Revision:
1:687bcd4b1c6c
Parent:
0:e30c9ba95bd4
Child:
2:172619ae2eb7
Pour toi Jerem

Who changed what in which revision?

UserRevisionLine numberNew contents of line
superphil06 0:e30c9ba95bd4 1
superphil06 0:e30c9ba95bd4 2
superphil06 0:e30c9ba95bd4 3 //#include "EthernetInterface.h"
superphil06 0:e30c9ba95bd4 4 #include <stdlib.h>
RomainCorradi 1:687bcd4b1c6c 5 #include <stdio.h>
superphil06 0:e30c9ba95bd4 6 #include <string.h>
superphil06 0:e30c9ba95bd4 7 #include "mbed.h"
superphil06 0:e30c9ba95bd4 8 #include "rtos.h" // need for main thread sleep
superphil06 0:e30c9ba95bd4 9 #include "html.h" // need for html patch working with web server
superphil06 0:e30c9ba95bd4 10 #include "bloc_io.h"
superphil06 0:e30c9ba95bd4 11 #define RADIUS 0.2F // wheel size
superphil06 0:e30c9ba95bd4 12 #define NBPOLES 8 // magnetic pole number
superphil06 0:e30c9ba95bd4 13 #define DELTA_T 0.1F // speed measurement counting period
superphil06 0:e30c9ba95bd4 14
RomainCorradi 1:687bcd4b1c6c 15 DigitalOut PWM_VALID (p21); // valid pmw mbed pin
RomainCorradi 1:687bcd4b1c6c 16 AnalogIn POIGNEE (p17); // analog input connected to mbed
superphil06 0:e30c9ba95bd4 17 Bloc_IO MyPLD(p25,p26,p5,p6,p7,p8,p9,p10,p23,p24);// instantiate object needed to communicate with PLD
RomainCorradi 1:687bcd4b1c6c 18 Serial pc(USBTX, USBRX); // tx, rx
RomainCorradi 1:687bcd4b1c6c 19 void PWM ();
RomainCorradi 1:687bcd4b1c6c 20 Ticker AUTO;
RomainCorradi 1:687bcd4b1c6c 21 float GazMax,GazMin;
RomainCorradi 1:687bcd4b1c6c 22 int val,x,Overcurrent,Brake,FLTA,Direction,HALLC,HALLB,HALLA;
RomainCorradi 1:687bcd4b1c6c 23 char cChoix=0;
RomainCorradi 1:687bcd4b1c6c 24
RomainCorradi 1:687bcd4b1c6c 25
RomainCorradi 1:687bcd4b1c6c 26 float valpwm;
RomainCorradi 1:687bcd4b1c6c 27 // Top_Hall Pin
RomainCorradi 1:687bcd4b1c6c 28
RomainCorradi 1:687bcd4b1c6c 29
RomainCorradi 1:687bcd4b1c6c 30
RomainCorradi 1:687bcd4b1c6c 31
superphil06 0:e30c9ba95bd4 32 /************ persistent file parameters section *****************/
RomainCorradi 1:687bcd4b1c6c 33 LocalFileSystem local("local");// Create the local filesystem under the name "local"
RomainCorradi 1:687bcd4b1c6c 34
RomainCorradi 1:687bcd4b1c6c 35
superphil06 0:e30c9ba95bd4 36
RomainCorradi 1:687bcd4b1c6c 37
RomainCorradi 1:687bcd4b1c6c 38
RomainCorradi 1:687bcd4b1c6c 39
RomainCorradi 1:687bcd4b1c6c 40
superphil06 0:e30c9ba95bd4 41 /********************* web server section **********************************/
superphil06 0:e30c9ba95bd4 42
superphil06 0:e30c9ba95bd4 43 var_field_t tab_balise[10]; //une balise est présente dans le squelette
superphil06 0:e30c9ba95bd4 44 int giCounter=0;// acces counting
superphil06 0:e30c9ba95bd4 45
superphil06 0:e30c9ba95bd4 46
superphil06 0:e30c9ba95bd4 47 /*********************** can bus section ************/
RomainCorradi 1:687bcd4b1c6c 48 // determine message ID used to send Gaz ref over can bus
superphil06 0:e30c9ba95bd4 49 #define _CAN_DEBUG // used to debug can bus activity
superphil06 0:e30c9ba95bd4 50 //#define USE_CAN_REF // uncomment to receive gaz ref over can_bus
superphil06 0:e30c9ba95bd4 51 CAN can_port (p30, p29); // initialisation du Bus CAN sur les broches 30 (rd) et 29(td) for lpc1768 + mbed shield
superphil06 0:e30c9ba95bd4 52 bool bCan_Active=false;
superphil06 0:e30c9ba95bd4 53
superphil06 0:e30c9ba95bd4 54
superphil06 0:e30c9ba95bd4 55
superphil06 0:e30c9ba95bd4 56 DigitalOut led1(LED1); //initialisation des Leds présentes sur le micro-controleur Mbed*/
superphil06 0:e30c9ba95bd4 57 DigitalOut led2(LED2);
superphil06 0:e30c9ba95bd4 58 DigitalOut led3(LED3); // blink when can message is sent
RomainCorradi 1:687bcd4b1c6c 59 DigitalOut led4(LED4); // blink when can message is received
superphil06 0:e30c9ba95bd4 60
superphil06 0:e30c9ba95bd4 61
RomainCorradi 1:687bcd4b1c6c 62
superphil06 0:e30c9ba95bd4 63
RomainCorradi 1:687bcd4b1c6c 64
superphil06 0:e30c9ba95bd4 65 //************ local function prototypes *******************
superphil06 0:e30c9ba95bd4 66
superphil06 0:e30c9ba95bd4 67
superphil06 0:e30c9ba95bd4 68
superphil06 0:e30c9ba95bd4 69
superphil06 0:e30c9ba95bd4 70
superphil06 0:e30c9ba95bd4 71
RomainCorradi 1:687bcd4b1c6c 72
superphil06 0:e30c9ba95bd4 73 /**************** Read persistent data from text file located on local file system ****************/
superphil06 0:e30c9ba95bd4 74
superphil06 0:e30c9ba95bd4 75
superphil06 0:e30c9ba95bd4 76
superphil06 0:e30c9ba95bd4 77 /**************** write persitant data to text file located on local file system ****************/
superphil06 0:e30c9ba95bd4 78
superphil06 0:e30c9ba95bd4 79
superphil06 0:e30c9ba95bd4 80
superphil06 0:e30c9ba95bd4 81
superphil06 0:e30c9ba95bd4 82
superphil06 0:e30c9ba95bd4 83
superphil06 0:e30c9ba95bd4 84 //************** calibation gaz function needed to record min_gaz and max_gaz value to persistent text file ******************
superphil06 0:e30c9ba95bd4 85
superphil06 0:e30c9ba95bd4 86
superphil06 0:e30c9ba95bd4 87 // ************top hall counting interrupt needed for speed measurement
superphil06 0:e30c9ba95bd4 88
superphil06 0:e30c9ba95bd4 89
superphil06 0:e30c9ba95bd4 90 //********************** timer interrupt for speed measurement each 100ms *************************
superphil06 0:e30c9ba95bd4 91
RomainCorradi 1:687bcd4b1c6c 92
RomainCorradi 1:687bcd4b1c6c 93
RomainCorradi 1:687bcd4b1c6c 94
superphil06 0:e30c9ba95bd4 95
superphil06 0:e30c9ba95bd4 96
superphil06 0:e30c9ba95bd4 97 //********************* Timer Interrupt for gaz ref management each 10ms ********************
superphil06 0:e30c9ba95bd4 98
superphil06 0:e30c9ba95bd4 99
superphil06 0:e30c9ba95bd4 100
superphil06 0:e30c9ba95bd4 101 /********* main cgi function used to patch data to the web server thread **********************************/
superphil06 0:e30c9ba95bd4 102 void CGI_Function(void) // cgi function that patch web data to empty web page
RomainCorradi 1:687bcd4b1c6c 103 {
RomainCorradi 1:687bcd4b1c6c 104 char ma_chaine4[20]= {}; // needed to form html response
superphil06 0:e30c9ba95bd4 105
superphil06 0:e30c9ba95bd4 106 }
RomainCorradi 1:687bcd4b1c6c 107
RomainCorradi 1:687bcd4b1c6c 108
RomainCorradi 1:687bcd4b1c6c 109 /*********************** CAN BUS SECTION **********************/
RomainCorradi 1:687bcd4b1c6c 110
superphil06 0:e30c9ba95bd4 111
superphil06 0:e30c9ba95bd4 112
superphil06 0:e30c9ba95bd4 113 void CAN_REC_THREAD(void const *args)
RomainCorradi 1:687bcd4b1c6c 114 {
RomainCorradi 1:687bcd4b1c6c 115 int iCount,iError;
superphil06 0:e30c9ba95bd4 116
RomainCorradi 1:687bcd4b1c6c 117 while (bCan_Active) {
RomainCorradi 1:687bcd4b1c6c 118 Thread::wait(100);// wait 100ms
RomainCorradi 1:687bcd4b1c6c 119 // code todo
RomainCorradi 1:687bcd4b1c6c 120
superphil06 0:e30c9ba95bd4 121 }
RomainCorradi 1:687bcd4b1c6c 122
superphil06 0:e30c9ba95bd4 123 }
RomainCorradi 1:687bcd4b1c6c 124
RomainCorradi 1:687bcd4b1c6c 125
RomainCorradi 1:687bcd4b1c6c 126
superphil06 0:e30c9ba95bd4 127 //*************************** main function *****************************************
RomainCorradi 1:687bcd4b1c6c 128 int main()
RomainCorradi 1:687bcd4b1c6c 129 {
RomainCorradi 1:687bcd4b1c6c 130 MyPLD.write(0);
RomainCorradi 1:687bcd4b1c6c 131 char carac;
RomainCorradi 1:687bcd4b1c6c 132 FILE *fp = fopen("/local/gr1.txt", "r");
RomainCorradi 1:687bcd4b1c6c 133 if(fp != NULL) {
RomainCorradi 1:687bcd4b1c6c 134 fscanf(fp,"valeur max : %g, valeur min: %g",&GazMin,&GazMax);
RomainCorradi 1:687bcd4b1c6c 135 printf("Valeur min:%g , Valeur max:%g\n\r",GazMin,GazMax);
RomainCorradi 1:687bcd4b1c6c 136 } else
RomainCorradi 1:687bcd4b1c6c 137 printf("ERREUR FICHIER NON VALIDE");
RomainCorradi 1:687bcd4b1c6c 138 fclose(fp);
superphil06 0:e30c9ba95bd4 139
RomainCorradi 1:687bcd4b1c6c 140 // int write,read;
RomainCorradi 1:687bcd4b1c6c 141 // f_poignee = fopen("nom-de-fichier","r");
RomainCorradi 1:687bcd4b1c6c 142 // read=fgetc(f_poignee);
RomainCorradi 1:687bcd4b1c6c 143 // fclose(f_poignee);
RomainCorradi 1:687bcd4b1c6c 144 // printf("&d",read);
superphil06 0:e30c9ba95bd4 145
superphil06 0:e30c9ba95bd4 146
superphil06 0:e30c9ba95bd4 147
superphil06 0:e30c9ba95bd4 148
superphil06 0:e30c9ba95bd4 149 //***************************************** web section ********************************************/
superphil06 0:e30c9ba95bd4 150 //Init_Web_Server(&CGI_Function); // create and initialize tcp server socket and pass function pointer to local CGI function
superphil06 0:e30c9ba95bd4 151 //Thread WebThread(Web_Server_Thread);// create and launch web server thread
RomainCorradi 1:687bcd4b1c6c 152 /********* main cgi function used to patch data to the web server thread **********************************/
superphil06 0:e30c9ba95bd4 153
RomainCorradi 1:687bcd4b1c6c 154 //******************************************* end web section ************************************* /
superphil06 0:e30c9ba95bd4 155
superphil06 0:e30c9ba95bd4 156
superphil06 0:e30c9ba95bd4 157 //********************* can bus section initialisation *******************************************
superphil06 0:e30c9ba95bd4 158 //bCan_Active=true;// needed to lauchn CAN thread
superphil06 0:e30c9ba95bd4 159 //Thread CanThread(CAN_REC_THREAD);// create and launch can receiver thread
superphil06 0:e30c9ba95bd4 160 //********************* end can bus section *****************************************************
RomainCorradi 1:687bcd4b1c6c 161 AUTO.attach(&PWM,0.1);
RomainCorradi 1:687bcd4b1c6c 162 pc.printf("programme scooter mbed \n\r");
RomainCorradi 1:687bcd4b1c6c 163 while(cChoix!='q' and cChoix!='Q') {
RomainCorradi 1:687bcd4b1c6c 164 pc.printf("Veuillez saisir un choix parmi la liste proposee:\n\r");
RomainCorradi 1:687bcd4b1c6c 165 pc.printf("a:saisie consigne pwm\n\r");
RomainCorradi 1:687bcd4b1c6c 166 pc.printf("b:Calibration poignee\n\r");
RomainCorradi 1:687bcd4b1c6c 167 pc.printf("d:Mode automatique\n\r");
RomainCorradi 1:687bcd4b1c6c 168 pc.printf("e:Lecture du registre interne\n\r");
RomainCorradi 1:687bcd4b1c6c 169 pc.printf("q:quitter\n\r");
RomainCorradi 1:687bcd4b1c6c 170
RomainCorradi 1:687bcd4b1c6c 171 //************* multithreading : main thread need to sleep in order to allow web response */
RomainCorradi 1:687bcd4b1c6c 172 while (pc.readable()==0) { // determine if char availabler
RomainCorradi 1:687bcd4b1c6c 173 Thread::wait(10); // wait 10 until char available on serial input
RomainCorradi 1:687bcd4b1c6c 174 }
RomainCorradi 1:687bcd4b1c6c 175 /************* end of main thread sleep ****************/
RomainCorradi 1:687bcd4b1c6c 176 pc.scanf("%c",&cChoix);
RomainCorradi 1:687bcd4b1c6c 177 switch (cChoix) {
RomainCorradi 1:687bcd4b1c6c 178 case 'a':
RomainCorradi 1:687bcd4b1c6c 179 printf("veuillez entrer une valeur de PWM entre 0 et 255\n\r");
RomainCorradi 1:687bcd4b1c6c 180 scanf("%d",&val);
RomainCorradi 1:687bcd4b1c6c 181 /* if (val < 0 && val > 255) {
RomainCorradi 1:687bcd4b1c6c 182 PWM_VALID.write(0);
RomainCorradi 1:687bcd4b1c6c 183 MyPLD.write(0);
RomainCorradi 1:687bcd4b1c6c 184 printf("Erreur\n\r ");
RomainCorradi 1:687bcd4b1c6c 185 printf("veuillez entrer une valeur de PWM entre 0 et 255 \n\r");
RomainCorradi 1:687bcd4b1c6c 186 scanf("%d",&val);
RomainCorradi 1:687bcd4b1c6c 187 }*/
RomainCorradi 1:687bcd4b1c6c 188
RomainCorradi 1:687bcd4b1c6c 189 /* PWM_VALID.write(1);
RomainCorradi 1:687bcd4b1c6c 190 MyPLD.write(val);*/
RomainCorradi 1:687bcd4b1c6c 191 break;
RomainCorradi 1:687bcd4b1c6c 192 case 'q':
RomainCorradi 1:687bcd4b1c6c 193 AUTO.detach();
RomainCorradi 1:687bcd4b1c6c 194 PWM_VALID.write(0);
RomainCorradi 1:687bcd4b1c6c 195 if (PWM_VALID.read()==0) MyPLD.write(0);
RomainCorradi 1:687bcd4b1c6c 196 printf("BYE");
RomainCorradi 1:687bcd4b1c6c 197 break;
RomainCorradi 1:687bcd4b1c6c 198 case 'b':
RomainCorradi 1:687bcd4b1c6c 199 AUTO.detach();
RomainCorradi 1:687bcd4b1c6c 200 PWM_VALID.write(0);
RomainCorradi 1:687bcd4b1c6c 201 if (PWM_VALID.read()==0) MyPLD.write(0);
RomainCorradi 1:687bcd4b1c6c 202 printf("Veuillez entrer n'importe quel caractere si vous etes OK pour la valeur min\n\r");
RomainCorradi 1:687bcd4b1c6c 203 scanf("%c ",&carac);
RomainCorradi 1:687bcd4b1c6c 204 GazMin=POIGNEE.read();
RomainCorradi 1:687bcd4b1c6c 205 printf("\n\r");
RomainCorradi 1:687bcd4b1c6c 206 printf("Veuillez entrer n'importe quel caractere si vous etes OK pour la valeur max\n\r");
RomainCorradi 1:687bcd4b1c6c 207 scanf("%c ",&carac);
RomainCorradi 1:687bcd4b1c6c 208 GazMax=POIGNEE.read();
RomainCorradi 1:687bcd4b1c6c 209 printf("\n\r");
RomainCorradi 1:687bcd4b1c6c 210 printf("Valeur de la poignee min:%g\n\r",GazMin);
RomainCorradi 1:687bcd4b1c6c 211 printf("Valeur de la poignee max:%g\n\r",GazMax);
RomainCorradi 1:687bcd4b1c6c 212 FILE *fp = fopen("/local/gr1.txt", "w");
RomainCorradi 1:687bcd4b1c6c 213 if(fp != NULL) fprintf(fp,"valeur max : %f, valeur min: %f",GazMin,GazMax);
RomainCorradi 1:687bcd4b1c6c 214 else printf("ERREUR FICHIER NON VALIDE");
RomainCorradi 1:687bcd4b1c6c 215 fclose(fp);
RomainCorradi 1:687bcd4b1c6c 216 break;
RomainCorradi 1:687bcd4b1c6c 217 case 'd':
RomainCorradi 1:687bcd4b1c6c 218 PWM_VALID.write(1);
RomainCorradi 1:687bcd4b1c6c 219 AUTO.attach(&PWM,0.1);
RomainCorradi 1:687bcd4b1c6c 220 printf("Veuillez entrer n'importe quel caractere si vous voulez sortir du mode automatique\n\r");
RomainCorradi 1:687bcd4b1c6c 221 scanf("%c ",&carac);
RomainCorradi 1:687bcd4b1c6c 222 AUTO.detach();
RomainCorradi 1:687bcd4b1c6c 223 MyPLD.write(0);
RomainCorradi 1:687bcd4b1c6c 224 break;
RomainCorradi 1:687bcd4b1c6c 225
RomainCorradi 1:687bcd4b1c6c 226 case 'e':
RomainCorradi 1:687bcd4b1c6c 227 x=MyPLD.read();
RomainCorradi 1:687bcd4b1c6c 228 Overcurrent= (x & 64)/64 ; //Technique pour avoir la valeur en binaire
RomainCorradi 1:687bcd4b1c6c 229 Brake= (x & 32)/32;
RomainCorradi 1:687bcd4b1c6c 230 FLTA=(x & 16)/16;
RomainCorradi 1:687bcd4b1c6c 231 Direction=(x & 8)/8;
RomainCorradi 1:687bcd4b1c6c 232 HALLC=(x & 4)/4;
RomainCorradi 1:687bcd4b1c6c 233 HALLB=(x & 2)/2;
RomainCorradi 1:687bcd4b1c6c 234 HALLA= x & 1;
RomainCorradi 1:687bcd4b1c6c 235 int hall=0;
RomainCorradi 1:687bcd4b1c6c 236 if (HALLA == 1){
RomainCorradi 1:687bcd4b1c6c 237 hall++;
RomainCorradi 1:687bcd4b1c6c 238 }
RomainCorradi 1:687bcd4b1c6c 239 if (HALLB == 1){
RomainCorradi 1:687bcd4b1c6c 240 hall+=2;
RomainCorradi 1:687bcd4b1c6c 241 }
RomainCorradi 1:687bcd4b1c6c 242 if (HALLC == 1){
RomainCorradi 1:687bcd4b1c6c 243 hall+=4;
RomainCorradi 1:687bcd4b1c6c 244 }
RomainCorradi 1:687bcd4b1c6c 245 pc.printf("hall=%d\r\n", hall);
RomainCorradi 1:687bcd4b1c6c 246 if (Overcurrent == 1) {
RomainCorradi 1:687bcd4b1c6c 247 printf("Surintensité ");
RomainCorradi 1:687bcd4b1c6c 248 } else {
RomainCorradi 1:687bcd4b1c6c 249 printf( " desactive");
RomainCorradi 1:687bcd4b1c6c 250 }
RomainCorradi 1:687bcd4b1c6c 251
RomainCorradi 1:687bcd4b1c6c 252 if (Brake == 1) {
RomainCorradi 1:687bcd4b1c6c 253 printf(" desactive");
RomainCorradi 1:687bcd4b1c6c 254 } else {
RomainCorradi 1:687bcd4b1c6c 255 printf( " active");
RomainCorradi 1:687bcd4b1c6c 256 }
RomainCorradi 1:687bcd4b1c6c 257
RomainCorradi 1:687bcd4b1c6c 258 if (FLTA == 1) {
RomainCorradi 1:687bcd4b1c6c 259 printf("Overcurrent active");
RomainCorradi 1:687bcd4b1c6c 260 } else {
RomainCorradi 1:687bcd4b1c6c 261 printf( " desactive");
RomainCorradi 1:687bcd4b1c6c 262 }
RomainCorradi 1:687bcd4b1c6c 263
RomainCorradi 1:687bcd4b1c6c 264 if (Direction == 1) {
RomainCorradi 1:687bcd4b1c6c 265 printf("marche avant active");
RomainCorradi 1:687bcd4b1c6c 266 } else {
RomainCorradi 1:687bcd4b1c6c 267 printf( "mzrche avant desactive");
RomainCorradi 1:687bcd4b1c6c 268 }
RomainCorradi 1:687bcd4b1c6c 269 // printf("%d\n\r",x);
RomainCorradi 1:687bcd4b1c6c 270 //printf("Overcurrent:%d, Brake:%d,FLTA:%d,Direction:%d,HALLC:%d,HALLB:%d,HALLA:%d\n\r",Overcurrent,Brake,FLTA,Direction,HALLC,HALLB,HALLA);
RomainCorradi 1:687bcd4b1c6c 271 // break;
superphil06 0:e30c9ba95bd4 272
superphil06 0:e30c9ba95bd4 273
RomainCorradi 1:687bcd4b1c6c 274
RomainCorradi 1:687bcd4b1c6c 275 //f_poignee = fopen("nom-de-fichier","w");
RomainCorradi 1:687bcd4b1c6c 276 // while(read=fgetc(f_poignee)!= E0F) {
RomainCorradi 1:687bcd4b1c6c 277 // write= GazMin;
RomainCorradi 1:687bcd4b1c6c 278 // fputc('Valeur min:',f_poignee);
RomainCorradi 1:687bcd4b1c6c 279 // fputc(write,f_poignee);
RomainCorradi 1:687bcd4b1c6c 280 //write= GazMax;
RomainCorradi 1:687bcd4b1c6c 281 // fputc('Valeur max':,f_poignee);
RomainCorradi 1:687bcd4b1c6c 282 //fputc(write,f_poignee);
RomainCorradi 1:687bcd4b1c6c 283 // fclose(f_poignee);
RomainCorradi 1:687bcd4b1c6c 284 }
RomainCorradi 1:687bcd4b1c6c 285 }
RomainCorradi 1:687bcd4b1c6c 286 pc.printf("fin programme scooter mbed\n\r");
superphil06 0:e30c9ba95bd4 287 } // end while
RomainCorradi 1:687bcd4b1c6c 288
RomainCorradi 1:687bcd4b1c6c 289 //************** thread deinit *********************
RomainCorradi 1:687bcd4b1c6c 290 //DeInit_Web_Server();
RomainCorradi 1:687bcd4b1c6c 291 //bCan_Active=false;
RomainCorradi 1:687bcd4b1c6c 292 //CanThread=false;// close can received thread
RomainCorradi 1:687bcd4b1c6c 293
RomainCorradi 1:687bcd4b1c6c 294 // end main
RomainCorradi 1:687bcd4b1c6c 295 void PWM()
RomainCorradi 1:687bcd4b1c6c 296 {
RomainCorradi 1:687bcd4b1c6c 297 x=MyPLD.read();
RomainCorradi 1:687bcd4b1c6c 298 Overcurrent= (x & 64)/64;
RomainCorradi 1:687bcd4b1c6c 299 Brake= (x & 32)/32;
RomainCorradi 1:687bcd4b1c6c 300 FLTA=(x & 16)/16;
RomainCorradi 1:687bcd4b1c6c 301 Direction=(x & 8)/8;
RomainCorradi 1:687bcd4b1c6c 302 HALLC=(x & 4)/4;
RomainCorradi 1:687bcd4b1c6c 303 HALLB=(x & 2)/2;
RomainCorradi 1:687bcd4b1c6c 304 HALLA= x & 1;
RomainCorradi 1:687bcd4b1c6c 305 if (cChoix =='a') {
RomainCorradi 1:687bcd4b1c6c 306 MyPLD.write(0);
RomainCorradi 1:687bcd4b1c6c 307 if (val > 0 && val <=255) {
RomainCorradi 1:687bcd4b1c6c 308
RomainCorradi 1:687bcd4b1c6c 309 PWM_VALID.write(1);
RomainCorradi 1:687bcd4b1c6c 310 MyPLD.write(val);
RomainCorradi 1:687bcd4b1c6c 311 }
RomainCorradi 1:687bcd4b1c6c 312 } else {
RomainCorradi 1:687bcd4b1c6c 313 if ( Brake == 0 ) {
RomainCorradi 1:687bcd4b1c6c 314 PWM_VALID.write(0);
RomainCorradi 1:687bcd4b1c6c 315 MyPLD.write(0);
RomainCorradi 1:687bcd4b1c6c 316 } else if ( Brake == 1 ) {
RomainCorradi 1:687bcd4b1c6c 317 PWM_VALID.write(1);
RomainCorradi 1:687bcd4b1c6c 318 valpwm =(int)(255/(GazMax-GazMin))*POIGNEE.read()-(255/(GazMax-GazMin))*GazMin;
RomainCorradi 1:687bcd4b1c6c 319 MyPLD.write(valpwm);
RomainCorradi 1:687bcd4b1c6c 320 }
RomainCorradi 1:687bcd4b1c6c 321 }
RomainCorradi 1:687bcd4b1c6c 322
RomainCorradi 1:687bcd4b1c6c 323 }