motor dc driver with lcd nextion nx8048t050_011
Dependencies: mbed QEI_hw NVIC_set_all_priorities SoftPWM
main.cpp@0:ea04a1655f3b, 2019-09-27 (annotated)
- Committer:
- exarkun
- Date:
- Fri Sep 27 12:46:15 2019 +0000
- Revision:
- 0:ea04a1655f3b
- Child:
- 1:2fe82be93e80
example project how to use motor enslavement position with lcd nextion nx8048t050_011
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
exarkun | 0:ea04a1655f3b | 1 | //////////////////////////////////////////////////////////////////////////// |
exarkun | 0:ea04a1655f3b | 2 | //rajout du spi1(p5, p6, p7, p8)--------( 14 / 11 / 2017 ) task5 |
exarkun | 0:ea04a1655f3b | 3 | //rajout de la conversion AD p20--------( 15 / 11 / 2017 ) task6 |
exarkun | 0:ea04a1655f3b | 4 | //rajout fonction generation trajectoire a tester "il y as un probleme de position final lorsque on change "slope_time" |
exarkun | 0:ea04a1655f3b | 5 | //rajout en task2 visualisation des pulses avec "telemetry viewer v0.4" |
exarkun | 0:ea04a1655f3b | 6 | |
exarkun | 0:ea04a1655f3b | 7 | #include "mbed.h" |
exarkun | 0:ea04a1655f3b | 8 | #include "qeihw.h" |
exarkun | 0:ea04a1655f3b | 9 | #include "NVIC_set_all_priorities.h" |
exarkun | 0:ea04a1655f3b | 10 | |
exarkun | 0:ea04a1655f3b | 11 | // déclaration du hardware |
exarkun | 0:ea04a1655f3b | 12 | Serial pc(USBTX, USBRX);//utilisation de la liaison usb |
exarkun | 0:ea04a1655f3b | 13 | |
exarkun | 0:ea04a1655f3b | 14 | QEIHW qei(QEI_DIRINV_NONE, QEI_SIGNALMODE_QUAD, QEI_CAPMODE_4X, QEI_INVINX_NONE ); |
exarkun | 0:ea04a1655f3b | 15 | |
exarkun | 0:ea04a1655f3b | 16 | Serial device(p9, p10);// tx, rx.//definition de la liaison rs232 |
exarkun | 0:ea04a1655f3b | 17 | |
exarkun | 0:ea04a1655f3b | 18 | DigitalOut frein_moteur1(p15); //changement momentané pour le projet r2d de p5 a p15 |
exarkun | 0:ea04a1655f3b | 19 | |
exarkun | 0:ea04a1655f3b | 20 | DigitalOut sens_rotation_moteur1(p13); |
exarkun | 0:ea04a1655f3b | 21 | |
exarkun | 0:ea04a1655f3b | 22 | PwmOut PWM1(p21); |
exarkun | 0:ea04a1655f3b | 23 | |
exarkun | 0:ea04a1655f3b | 24 | SPISlave spi1(p5, p6, p7, p8); // mosi, miso, sclk, ssel |
exarkun | 0:ea04a1655f3b | 25 | |
exarkun | 0:ea04a1655f3b | 26 | AnalogIn Ain(p20); |
exarkun | 0:ea04a1655f3b | 27 | |
exarkun | 0:ea04a1655f3b | 28 | // définition des timers. |
exarkun | 0:ea04a1655f3b | 29 | Timer timer1; |
exarkun | 0:ea04a1655f3b | 30 | Timer timer2; |
exarkun | 0:ea04a1655f3b | 31 | |
exarkun | 0:ea04a1655f3b | 32 | //definition spi1 |
exarkun | 0:ea04a1655f3b | 33 | int reply = 0xAAAA;// en bin "1010101010101010" |
exarkun | 0:ea04a1655f3b | 34 | int valueFromMaster; |
exarkun | 0:ea04a1655f3b | 35 | |
exarkun | 0:ea04a1655f3b | 36 | int Spi_val_RX[10]={0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000};//buffer reception données SPI |
exarkun | 0:ea04a1655f3b | 37 | int Spi_val_TX[10]={0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000};//buffer transmission données SPI |
exarkun | 0:ea04a1655f3b | 38 | |
exarkun | 0:ea04a1655f3b | 39 | // définition des sorties leds |
exarkun | 0:ea04a1655f3b | 40 | DigitalOut led1(LED1); |
exarkun | 0:ea04a1655f3b | 41 | DigitalOut led3(LED3); |
exarkun | 0:ea04a1655f3b | 42 | |
exarkun | 0:ea04a1655f3b | 43 | char c ; |
exarkun | 0:ea04a1655f3b | 44 | int t ; |
exarkun | 0:ea04a1655f3b | 45 | int x=0 ; |
exarkun | 0:ea04a1655f3b | 46 | |
exarkun | 0:ea04a1655f3b | 47 | float PI=3.141592653589793; |
exarkun | 0:ea04a1655f3b | 48 | |
exarkun | 0:ea04a1655f3b | 49 | //vitesse moteur |
exarkun | 0:ea04a1655f3b | 50 | int vitesse_actuelle; |
exarkun | 0:ea04a1655f3b | 51 | |
exarkun | 0:ea04a1655f3b | 52 | //position codeur en pulses 2000pulses/rotation |
exarkun | 0:ea04a1655f3b | 53 | int position_actuelle;//position du codeur |
exarkun | 0:ea04a1655f3b | 54 | int position_actuelle_n1;//position du codeur a n-1 |
exarkun | 0:ea04a1655f3b | 55 | |
exarkun | 0:ea04a1655f3b | 56 | //données mecanique & moteur |
exarkun | 0:ea04a1655f3b | 57 | float J=3.375*1e-5;//0.005;//inertie en kg.m² |
exarkun | 0:ea04a1655f3b | 58 | float K=0.05;//2;//constante de couple N.m/v |
exarkun | 0:ea04a1655f3b | 59 | float R=5;//K;//resistance du moteur en Ohms |
exarkun | 0:ea04a1655f3b | 60 | float Umax=24;//24vdc tension max en volts |
exarkun | 0:ea04a1655f3b | 61 | |
exarkun | 0:ea04a1655f3b | 62 | //parametres reglage |
exarkun | 0:ea04a1655f3b | 63 | float dt_vit(5*1e-4); |
exarkun | 0:ea04a1655f3b | 64 | float Ki=12;//default value=10; |
exarkun | 0:ea04a1655f3b | 65 | float Kp; |
exarkun | 0:ea04a1655f3b | 66 | float Kv; |
exarkun | 0:ea04a1655f3b | 67 | float K_sw(K); |
exarkun | 0:ea04a1655f3b | 68 | float tau; |
exarkun | 0:ea04a1655f3b | 69 | float taud=(10*dt_vit); |
exarkun | 0:ea04a1655f3b | 70 | float r1=3;//default value=2.5;derniere valeur =3 |
exarkun | 0:ea04a1655f3b | 71 | float r2=r1;//default value=2.5; |
exarkun | 0:ea04a1655f3b | 72 | |
exarkun | 0:ea04a1655f3b | 73 | //variables generateur de consigne/////////////////////////////////////////////////////////////////////////////////////////// |
exarkun | 0:ea04a1655f3b | 74 | float Teta_debut, Teta_fin, Teta_diff; |
exarkun | 0:ea04a1655f3b | 75 | float delta_Teta; |
exarkun | 0:ea04a1655f3b | 76 | float consigne;//en pulse |
exarkun | 0:ea04a1655f3b | 77 | float slope_time(1.);//en seconde |
exarkun | 0:ea04a1655f3b | 78 | bool start_slope(false);//flag debut de montee |
exarkun | 0:ea04a1655f3b | 79 | int ticks_total; |
exarkun | 0:ea04a1655f3b | 80 | int count_ticks; |
exarkun | 0:ea04a1655f3b | 81 | int count_slope(0); |
exarkun | 0:ea04a1655f3b | 82 | int count_max(0); |
exarkun | 0:ea04a1655f3b | 83 | |
exarkun | 0:ea04a1655f3b | 84 | //variables calcul de l'asservissement en vitesse et position |
exarkun | 0:ea04a1655f3b | 85 | float Tetaco; //valeur de la consigne position en radians |
exarkun | 0:ea04a1655f3b | 86 | float Tetam;//valeur mesuree de la position en radians |
exarkun | 0:ea04a1655f3b | 87 | |
exarkun | 0:ea04a1655f3b | 88 | float dTetam; |
exarkun | 0:ea04a1655f3b | 89 | float integ; |
exarkun | 0:ea04a1655f3b | 90 | float A; |
exarkun | 0:ea04a1655f3b | 91 | |
exarkun | 0:ea04a1655f3b | 92 | float dTetam_n1; |
exarkun | 0:ea04a1655f3b | 93 | float Tetaco_n1; |
exarkun | 0:ea04a1655f3b | 94 | float Tetam_n1; |
exarkun | 0:ea04a1655f3b | 95 | float integ_n1; |
exarkun | 0:ea04a1655f3b | 96 | float cyclic; |
exarkun | 0:ea04a1655f3b | 97 | int signe_rot; |
exarkun | 0:ea04a1655f3b | 98 | |
exarkun | 0:ea04a1655f3b | 99 | //variable ADC |
exarkun | 0:ea04a1655f3b | 100 | float ADCdata; |
exarkun | 0:ea04a1655f3b | 101 | float imax=1.8; |
exarkun | 0:ea04a1655f3b | 102 | |
exarkun | 0:ea04a1655f3b | 103 | //declaration des differantes taches |
exarkun | 0:ea04a1655f3b | 104 | void task1_switch(void); |
exarkun | 0:ea04a1655f3b | 105 | void task2_switch(void); |
exarkun | 0:ea04a1655f3b | 106 | void task3_switch(void); |
exarkun | 0:ea04a1655f3b | 107 | void task4_switch(void); |
exarkun | 0:ea04a1655f3b | 108 | void task5_switch(void); |
exarkun | 0:ea04a1655f3b | 109 | void task6_switch(void); |
exarkun | 0:ea04a1655f3b | 110 | void task7_switch(void); |
exarkun | 0:ea04a1655f3b | 111 | void task8_switch(void); |
exarkun | 0:ea04a1655f3b | 112 | |
exarkun | 0:ea04a1655f3b | 113 | //declaration des differantes interuption timer |
exarkun | 0:ea04a1655f3b | 114 | Ticker time_up1; //definition du Ticker, avec le nom “time_up1” |
exarkun | 0:ea04a1655f3b | 115 | Ticker time_up2; //definition du Ticker, avec le nom “time_up2” |
exarkun | 0:ea04a1655f3b | 116 | Ticker time_up3; //definition du Ticker, avec le nom “time_up3” |
exarkun | 0:ea04a1655f3b | 117 | Ticker time_up4; //definition du Ticker, avec le nom “time_up4” |
exarkun | 0:ea04a1655f3b | 118 | Ticker time_up5; //definition du Ticker, avec le nom_up5” |
exarkun | 0:ea04a1655f3b | 119 | Ticker time_up6; //definition du Ticker, avec le nom_up6” |
exarkun | 0:ea04a1655f3b | 120 | Ticker time_up7; //definition du Ticker, avec le nom “time_up7” |
exarkun | 0:ea04a1655f3b | 121 | Ticker time_up8; //definition du Ticker, avec le nom “time_up8” |
exarkun | 0:ea04a1655f3b | 122 | |
exarkun | 0:ea04a1655f3b | 123 | //declaration des leds visuelle utiliser pour mesurer le temps des taches |
exarkun | 0:ea04a1655f3b | 124 | DigitalOut myled1(LED1); |
exarkun | 0:ea04a1655f3b | 125 | DigitalOut myled3(LED3); |
exarkun | 0:ea04a1655f3b | 126 | |
exarkun | 0:ea04a1655f3b | 127 | //declaration des variables afficheur |
exarkun | 0:ea04a1655f3b | 128 | char mRxMsg[40]; |
exarkun | 0:ea04a1655f3b | 129 | int mRxIdx; |
exarkun | 0:ea04a1655f3b | 130 | char charac; |
exarkun | 0:ea04a1655f3b | 131 | bool mTouch; |
exarkun | 0:ea04a1655f3b | 132 | int mTouchX, mTouchY; |
exarkun | 0:ea04a1655f3b | 133 | |
exarkun | 0:ea04a1655f3b | 134 | int val_temp;//valleur temporaire |
exarkun | 0:ea04a1655f3b | 135 | int val_temp1;//valleur temporaire |
exarkun | 0:ea04a1655f3b | 136 | |
exarkun | 0:ea04a1655f3b | 137 | //////////////////////////////////////////////////////////// |
exarkun | 0:ea04a1655f3b | 138 | // fonction affichage sur nextion // |
exarkun | 0:ea04a1655f3b | 139 | //////////////////////////////////////////////////////////// |
exarkun | 0:ea04a1655f3b | 140 | |
exarkun | 0:ea04a1655f3b | 141 | bool Touch(void) { |
exarkun | 0:ea04a1655f3b | 142 | return mTouch; |
exarkun | 0:ea04a1655f3b | 143 | } |
exarkun | 0:ea04a1655f3b | 144 | |
exarkun | 0:ea04a1655f3b | 145 | int TouchX(void) { |
exarkun | 0:ea04a1655f3b | 146 | return mTouchX; |
exarkun | 0:ea04a1655f3b | 147 | } |
exarkun | 0:ea04a1655f3b | 148 | |
exarkun | 0:ea04a1655f3b | 149 | int TouchY(void) { |
exarkun | 0:ea04a1655f3b | 150 | return mTouchY; |
exarkun | 0:ea04a1655f3b | 151 | } |
exarkun | 0:ea04a1655f3b | 152 | |
exarkun | 0:ea04a1655f3b | 153 | bool lectureRSlcd(void) |
exarkun | 0:ea04a1655f3b | 154 | { |
exarkun | 0:ea04a1655f3b | 155 | if(device.readable()) |
exarkun | 0:ea04a1655f3b | 156 | { |
exarkun | 0:ea04a1655f3b | 157 | charac = device.getc(); |
exarkun | 0:ea04a1655f3b | 158 | mRxMsg[mRxIdx] = charac; |
exarkun | 0:ea04a1655f3b | 159 | mRxIdx++; |
exarkun | 0:ea04a1655f3b | 160 | if ((mRxIdx >= 3) && (mRxMsg[mRxIdx-1] == 0xff) && (mRxMsg[mRxIdx-2] == 0xff) && (mRxMsg[mRxIdx-3] == 0xff)) //valid rx message |
exarkun | 0:ea04a1655f3b | 161 | { |
exarkun | 0:ea04a1655f3b | 162 | mRxIdx=0; |
exarkun | 0:ea04a1655f3b | 163 | |
exarkun | 0:ea04a1655f3b | 164 | if(mRxMsg[0] == 0x67) //Touch coordinate data return |
exarkun | 0:ea04a1655f3b | 165 | { mTouchX = (mRxMsg[1]*256) + mRxMsg[2]; |
exarkun | 0:ea04a1655f3b | 166 | mTouchY = (mRxMsg[3]*256) + mRxMsg[4]; |
exarkun | 0:ea04a1655f3b | 167 | if(mRxMsg[5] == 0x01) |
exarkun | 0:ea04a1655f3b | 168 | mTouch = true; |
exarkun | 0:ea04a1655f3b | 169 | else |
exarkun | 0:ea04a1655f3b | 170 | mTouch = false; |
exarkun | 0:ea04a1655f3b | 171 | } |
exarkun | 0:ea04a1655f3b | 172 | } |
exarkun | 0:ea04a1655f3b | 173 | } |
exarkun | 0:ea04a1655f3b | 174 | return mTouch; |
exarkun | 0:ea04a1655f3b | 175 | } |
exarkun | 0:ea04a1655f3b | 176 | |
exarkun | 0:ea04a1655f3b | 177 | //lecture de la donnée val d une reponse de sliders |
exarkun | 0:ea04a1655f3b | 178 | int lecture_slider_RS_lcd(void) |
exarkun | 0:ea04a1655f3b | 179 | { |
exarkun | 0:ea04a1655f3b | 180 | if(device.readable()) |
exarkun | 0:ea04a1655f3b | 181 | { |
exarkun | 0:ea04a1655f3b | 182 | charac = device.getc(); |
exarkun | 0:ea04a1655f3b | 183 | mRxMsg[mRxIdx] = charac; |
exarkun | 0:ea04a1655f3b | 184 | mRxIdx++; |
exarkun | 0:ea04a1655f3b | 185 | if ((mRxIdx >= 3) && (mRxMsg[mRxIdx-1] == 0xff) && (mRxMsg[mRxIdx-2] == 0xff) && (mRxMsg[mRxIdx-3] == 0xff)) //valid rx message |
exarkun | 0:ea04a1655f3b | 186 | { |
exarkun | 0:ea04a1655f3b | 187 | mRxIdx=0; |
exarkun | 0:ea04a1655f3b | 188 | |
exarkun | 0:ea04a1655f3b | 189 | if(mRxMsg[0] == 0x71) //sliders data return |
exarkun | 0:ea04a1655f3b | 190 | { |
exarkun | 0:ea04a1655f3b | 191 | val_temp=mRxMsg[1]; |
exarkun | 0:ea04a1655f3b | 192 | |
exarkun | 0:ea04a1655f3b | 193 | } |
exarkun | 0:ea04a1655f3b | 194 | } |
exarkun | 0:ea04a1655f3b | 195 | } |
exarkun | 0:ea04a1655f3b | 196 | return val_temp; |
exarkun | 0:ea04a1655f3b | 197 | } |
exarkun | 0:ea04a1655f3b | 198 | |
exarkun | 0:ea04a1655f3b | 199 | //recuperation de la valeur val du sliders h0 |
exarkun | 0:ea04a1655f3b | 200 | // example : get_val(0); |
exarkun | 0:ea04a1655f3b | 201 | void get_val(int n) |
exarkun | 0:ea04a1655f3b | 202 | { |
exarkun | 0:ea04a1655f3b | 203 | device.printf("get h%d.val %c%c%c",n, 0xff, 0xff, 0xff);//recuperation de la valeur val du sliders h0 |
exarkun | 0:ea04a1655f3b | 204 | } |
exarkun | 0:ea04a1655f3b | 205 | //fonction general recuperation de la valeur val de h0 |
exarkun | 0:ea04a1655f3b | 206 | void get_val_h0() |
exarkun | 0:ea04a1655f3b | 207 | { |
exarkun | 0:ea04a1655f3b | 208 | device.printf("get h0.val %c%c%c", 0xff, 0xff, 0xff);//recuperation de la valeur val du sliders h0 |
exarkun | 0:ea04a1655f3b | 209 | } |
exarkun | 0:ea04a1655f3b | 210 | |
exarkun | 0:ea04a1655f3b | 211 | //////////////////////////////////////// |
exarkun | 0:ea04a1655f3b | 212 | // Convertion pulses to radians // |
exarkun | 0:ea04a1655f3b | 213 | //////////////////////////////////////// |
exarkun | 0:ea04a1655f3b | 214 | |
exarkun | 0:ea04a1655f3b | 215 | //PI =3.141592653589793 =1000 pulses codeurs |
exarkun | 0:ea04a1655f3b | 216 | float pulsesToRadians(int pulses) |
exarkun | 0:ea04a1655f3b | 217 | { |
exarkun | 0:ea04a1655f3b | 218 | float radians_VAL; |
exarkun | 0:ea04a1655f3b | 219 | radians_VAL=(pulses*PI)/1000.; |
exarkun | 0:ea04a1655f3b | 220 | return radians_VAL; |
exarkun | 0:ea04a1655f3b | 221 | }; |
exarkun | 0:ea04a1655f3b | 222 | |
exarkun | 0:ea04a1655f3b | 223 | //////////////////////////////////////// |
exarkun | 0:ea04a1655f3b | 224 | // calcule de la vitesse angulaire // |
exarkun | 0:ea04a1655f3b | 225 | //////////////////////////////////////// |
exarkun | 0:ea04a1655f3b | 226 | |
exarkun | 0:ea04a1655f3b | 227 | // ici le code du calcule pas encore fait !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! |
exarkun | 0:ea04a1655f3b | 228 | |
exarkun | 0:ea04a1655f3b | 229 | // Convert ASCII string to unsigned 32-bit decimal "string is null-terminated" |
exarkun | 0:ea04a1655f3b | 230 | unsigned long Str2UDec(unsigned char string[]){ |
exarkun | 0:ea04a1655f3b | 231 | unsigned long i = 0; // index |
exarkun | 0:ea04a1655f3b | 232 | unsigned long n = 0; // number |
exarkun | 0:ea04a1655f3b | 233 | while(string[i] != 0){ |
exarkun | 0:ea04a1655f3b | 234 | n = 10*n +(string[i]-0x30); |
exarkun | 0:ea04a1655f3b | 235 | i++; |
exarkun | 0:ea04a1655f3b | 236 | } |
exarkun | 0:ea04a1655f3b | 237 | return n; |
exarkun | 0:ea04a1655f3b | 238 | } |
exarkun | 0:ea04a1655f3b | 239 | |
exarkun | 0:ea04a1655f3b | 240 | |
exarkun | 0:ea04a1655f3b | 241 | ///////////////////////////////////////////////////////////////////////////// |
exarkun | 0:ea04a1655f3b | 242 | // declaration de la fonction moteur1 // |
exarkun | 0:ea04a1655f3b | 243 | ///////////////////////////////////////////////////////////////////////////// |
exarkun | 0:ea04a1655f3b | 244 | |
exarkun | 0:ea04a1655f3b | 245 | void motor1_mouve(int position1,int T1,int position2,int T2,int position3,int T3) |
exarkun | 0:ea04a1655f3b | 246 | { |
exarkun | 0:ea04a1655f3b | 247 | |
exarkun | 0:ea04a1655f3b | 248 | ///////////////////////////////////////////////////////////////////// |
exarkun | 0:ea04a1655f3b | 249 | // mouvement trapezoide non tésté // |
exarkun | 0:ea04a1655f3b | 250 | ///////////////////////////////////////////////////////////////////// |
exarkun | 0:ea04a1655f3b | 251 | |
exarkun | 0:ea04a1655f3b | 252 | timer1.start(); // déclenchement du timer1 |
exarkun | 0:ea04a1655f3b | 253 | timer2.start(); // déclenchement du timer2 |
exarkun | 0:ea04a1655f3b | 254 | //ACC |
exarkun | 0:ea04a1655f3b | 255 | consigne=position1 ; |
exarkun | 0:ea04a1655f3b | 256 | slope_time=T1; |
exarkun | 0:ea04a1655f3b | 257 | start_slope=true; |
exarkun | 0:ea04a1655f3b | 258 | //do{} while (timer1.read_ms()!=T1); |
exarkun | 0:ea04a1655f3b | 259 | do{} while (timer1.read_ms()<T1); |
exarkun | 0:ea04a1655f3b | 260 | if (timer1.read_ms()>T1) // lecture du temps du timer1 en ms |
exarkun | 0:ea04a1655f3b | 261 | { |
exarkun | 0:ea04a1655f3b | 262 | //device.printf("TIME out T1 ms \r\n"); |
exarkun | 0:ea04a1655f3b | 263 | device.printf("t0.txt=\"time1out\"%c%c%c", 0xff, 0xff, 0xff); |
exarkun | 0:ea04a1655f3b | 264 | } |
exarkun | 0:ea04a1655f3b | 265 | |
exarkun | 0:ea04a1655f3b | 266 | timer1.reset(); // remise à zéro du timer1 |
exarkun | 0:ea04a1655f3b | 267 | //vmax |
exarkun | 0:ea04a1655f3b | 268 | timer1.start(); // déclenchement du timer1 |
exarkun | 0:ea04a1655f3b | 269 | consigne=position2 ; |
exarkun | 0:ea04a1655f3b | 270 | slope_time=T2; |
exarkun | 0:ea04a1655f3b | 271 | start_slope=true; |
exarkun | 0:ea04a1655f3b | 272 | //do{} while (timer1.read_ms()!=T2); |
exarkun | 0:ea04a1655f3b | 273 | do{} while (timer1.read_ms()<T2); |
exarkun | 0:ea04a1655f3b | 274 | if (timer1.read_ms()>T2) // lecture du temps du timer1 en ms |
exarkun | 0:ea04a1655f3b | 275 | { |
exarkun | 0:ea04a1655f3b | 276 | //device.printf("TIME out T2 ms \r\n"); |
exarkun | 0:ea04a1655f3b | 277 | device.printf("t0.txt=\"time2out\"%c%c%c", 0xff, 0xff, 0xff); |
exarkun | 0:ea04a1655f3b | 278 | } |
exarkun | 0:ea04a1655f3b | 279 | timer1.reset(); // remise à zéro du timer1 |
exarkun | 0:ea04a1655f3b | 280 | //DCC |
exarkun | 0:ea04a1655f3b | 281 | timer1.start(); // déclenchement du timer1 |
exarkun | 0:ea04a1655f3b | 282 | consigne=position3 ; |
exarkun | 0:ea04a1655f3b | 283 | slope_time=T3; |
exarkun | 0:ea04a1655f3b | 284 | start_slope=true; |
exarkun | 0:ea04a1655f3b | 285 | //do{} while (timer1.read_ms()!=T3); |
exarkun | 0:ea04a1655f3b | 286 | do{} while (timer1.read_ms()<T3); |
exarkun | 0:ea04a1655f3b | 287 | if (timer1.read_ms()>T3) // lecture du temps du timer1 en ms |
exarkun | 0:ea04a1655f3b | 288 | { |
exarkun | 0:ea04a1655f3b | 289 | //device.printf("TIME out T3 ms \r\n"); |
exarkun | 0:ea04a1655f3b | 290 | device.printf("t0.txt=\"time3out\"%c%c%c", 0xff, 0xff, 0xff); |
exarkun | 0:ea04a1655f3b | 291 | } |
exarkun | 0:ea04a1655f3b | 292 | timer1.reset(); // remise à zéro du timer1 |
exarkun | 0:ea04a1655f3b | 293 | |
exarkun | 0:ea04a1655f3b | 294 | if (timer2.read_ms()>(T1+T2+T3)) // lecture du temps du timer1 en ms |
exarkun | 0:ea04a1655f3b | 295 | { |
exarkun | 0:ea04a1655f3b | 296 | //device.printf("TIME out motor \r\n"); |
exarkun | 0:ea04a1655f3b | 297 | device.printf("t0.txt=\"timeMout\"%c%c%c", 0xff, 0xff, 0xff); |
exarkun | 0:ea04a1655f3b | 298 | } |
exarkun | 0:ea04a1655f3b | 299 | |
exarkun | 0:ea04a1655f3b | 300 | timer2.reset(); // remise à zéro du timer2 |
exarkun | 0:ea04a1655f3b | 301 | }; |
exarkun | 0:ea04a1655f3b | 302 | |
exarkun | 0:ea04a1655f3b | 303 | |
exarkun | 0:ea04a1655f3b | 304 | |
exarkun | 0:ea04a1655f3b | 305 | |
exarkun | 0:ea04a1655f3b | 306 | ////////////////////////////////////////////////////////////////////////////////////////// |
exarkun | 0:ea04a1655f3b | 307 | // declaration des differantes pages // |
exarkun | 0:ea04a1655f3b | 308 | ////////////////////////////////////////////////////////////////////////////////////////// |
exarkun | 0:ea04a1655f3b | 309 | |
exarkun | 0:ea04a1655f3b | 310 | void page0()//code de la page : 6600ffffff |
exarkun | 0:ea04a1655f3b | 311 | { |
exarkun | 0:ea04a1655f3b | 312 | |
exarkun | 0:ea04a1655f3b | 313 | //device.printf("cls RED %c%c%c", 0xff, 0xff, 0xff); //clear screen color red fonnctionne pas ?? |
exarkun | 0:ea04a1655f3b | 314 | //device.printf("rest%c%c%c", 0xff, 0xff, 0xff);//y as un bug toute les commande prochine fonctionne plus ??? |
exarkun | 0:ea04a1655f3b | 315 | //wait_ms(10); |
exarkun | 0:ea04a1655f3b | 316 | |
exarkun | 0:ea04a1655f3b | 317 | //device.printf("page %d%c%c%c",0x0, 0xff, 0xff, 0xff);// saut a la page0------sy |
exarkun | 0:ea04a1655f3b | 318 | //wait_ms(10); |
exarkun | 0:ea04a1655f3b | 319 | device.printf("t6.txt=\"soft V0.01\"%c%c%c", 0xff, 0xff, 0xff);//affiche la version soft -------sy |
exarkun | 0:ea04a1655f3b | 320 | wait_ms(5); |
exarkun | 0:ea04a1655f3b | 321 | device.printf("b13.txt=\"flyready\"%c%c%c", 0xff, 0xff, 0xff);//affiche la version soft -------sy |
exarkun | 0:ea04a1655f3b | 322 | wait_ms(5); |
exarkun | 0:ea04a1655f3b | 323 | device.printf("b12.txt=\"BREAK\"%c%c%c", 0xff, 0xff, 0xff);//affiche la version soft -------sy |
exarkun | 0:ea04a1655f3b | 324 | wait_ms(5); |
exarkun | 0:ea04a1655f3b | 325 | device.printf("b11.txt=\"LANDING\"%c%c%c", 0xff, 0xff, 0xff);//affiche la version soft -------sy |
exarkun | 0:ea04a1655f3b | 326 | wait_ms(5); |
exarkun | 0:ea04a1655f3b | 327 | device.printf("b21.txt=\"Quantum\"%c%c%c", 0xff, 0xff, 0xff);//affiche la version soft -------sy |
exarkun | 0:ea04a1655f3b | 328 | wait_ms(5); |
exarkun | 0:ea04a1655f3b | 329 | |
exarkun | 0:ea04a1655f3b | 330 | device.printf("b18.txt=\"Speed M\"%c%c%c", 0xff, 0xff, 0xff);//affiche la version soft -------sy |
exarkun | 0:ea04a1655f3b | 331 | wait_ms(5); |
exarkun | 0:ea04a1655f3b | 332 | device.printf("b19.txt=\"couple M\"%c%c%c", 0xff, 0xff, 0xff);//affiche la version soft -------sy |
exarkun | 0:ea04a1655f3b | 333 | wait_ms(5); |
exarkun | 0:ea04a1655f3b | 334 | device.printf("b20.txt=\"Afterburner\"%c%c%c", 0xff, 0xff, 0xff);//affiche la version soft -------sy |
exarkun | 0:ea04a1655f3b | 335 | wait_ms(5); |
exarkun | 0:ea04a1655f3b | 336 | |
exarkun | 0:ea04a1655f3b | 337 | //device.printf("b0.pic=17%c%c%c", 0xff, 0xff, 0xff);//chager l image du bouton b0 par l image n°17------sy |
exarkun | 0:ea04a1655f3b | 338 | //wait_ms(10); |
exarkun | 0:ea04a1655f3b | 339 | //device.printf("ref b0%c%c%c", 0xff, 0xff, 0xff);//rafrechir b0--------------sy |
exarkun | 0:ea04a1655f3b | 340 | |
exarkun | 0:ea04a1655f3b | 341 | //wait_ms(10); |
exarkun | 0:ea04a1655f3b | 342 | |
exarkun | 0:ea04a1655f3b | 343 | ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// |
exarkun | 0:ea04a1655f3b | 344 | //FLY READY switch |
exarkun | 0:ea04a1655f3b | 345 | if((mRxMsg[0] == 0x65)&&(mRxMsg[1] == 0x00)&&(mRxMsg[2] == 0x19)&&(mRxMsg[3] == 0x01)) |
exarkun | 0:ea04a1655f3b | 346 | { |
exarkun | 0:ea04a1655f3b | 347 | //keyboard.printf("r");//flight ready |
exarkun | 0:ea04a1655f3b | 348 | }//uniquement le bouton allumeras la led 1 en release ---------------SY |
exarkun | 0:ea04a1655f3b | 349 | ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// |
exarkun | 0:ea04a1655f3b | 350 | //space break switch |
exarkun | 0:ea04a1655f3b | 351 | if((mRxMsg[0] == 0x65)&&(mRxMsg[1] == 0x00)&&(mRxMsg[2] == 0x18)&&(mRxMsg[3] == 0x01))//press |
exarkun | 0:ea04a1655f3b | 352 | {myled3=1; |
exarkun | 0:ea04a1655f3b | 353 | //keyboard.printf("x");//spacebreak |
exarkun | 0:ea04a1655f3b | 354 | //wait(0.5); |
exarkun | 0:ea04a1655f3b | 355 | while (mRxMsg[3]!=0x00) |
exarkun | 0:ea04a1655f3b | 356 | { |
exarkun | 0:ea04a1655f3b | 357 | //lectureRSlcd(); |
exarkun | 0:ea04a1655f3b | 358 | //keyboard.printf("x");//spacebreak |
exarkun | 0:ea04a1655f3b | 359 | //wait(0.035); |
exarkun | 0:ea04a1655f3b | 360 | } |
exarkun | 0:ea04a1655f3b | 361 | }//uniquement le bouton allumeras la led 2 en press event ---------------SY |
exarkun | 0:ea04a1655f3b | 362 | ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// |
exarkun | 0:ea04a1655f3b | 363 | //LANDING switch |
exarkun | 0:ea04a1655f3b | 364 | if((mRxMsg[0] == 0x65)&&(mRxMsg[1] == 0x00)&&(mRxMsg[2] == 0x17)&&(mRxMsg[3] == 0x01)) |
exarkun | 0:ea04a1655f3b | 365 | { |
exarkun | 0:ea04a1655f3b | 366 | //keyboard.printf("n");//landing mode |
exarkun | 0:ea04a1655f3b | 367 | }//uniquement le bouton home allumeras la led 3 en release ---------------SY |
exarkun | 0:ea04a1655f3b | 368 | |
exarkun | 0:ea04a1655f3b | 369 | ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// |
exarkun | 0:ea04a1655f3b | 370 | //strafe up switch |
exarkun | 0:ea04a1655f3b | 371 | if((mRxMsg[0] == 0x65)&&(mRxMsg[1] == 0x00)&&(mRxMsg[2] == 0x13)&&(mRxMsg[3] == 0x01))//press |
exarkun | 0:ea04a1655f3b | 372 | {myled3=1; |
exarkun | 0:ea04a1655f3b | 373 | //keyboard.printf(" ");//strafe up |
exarkun | 0:ea04a1655f3b | 374 | //wait(0.5); |
exarkun | 0:ea04a1655f3b | 375 | while (mRxMsg[3]!=0x00) |
exarkun | 0:ea04a1655f3b | 376 | { |
exarkun | 0:ea04a1655f3b | 377 | //lectureRSlcd(); |
exarkun | 0:ea04a1655f3b | 378 | //keyboard.printf(" ");//strafe up |
exarkun | 0:ea04a1655f3b | 379 | //wait(0.035); |
exarkun | 0:ea04a1655f3b | 380 | } |
exarkun | 0:ea04a1655f3b | 381 | |
exarkun | 0:ea04a1655f3b | 382 | }//uniquement le bouton allumeras la led 4 en release ---------------SY |
exarkun | 0:ea04a1655f3b | 383 | |
exarkun | 0:ea04a1655f3b | 384 | ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// |
exarkun | 0:ea04a1655f3b | 385 | //strafe down switch |
exarkun | 0:ea04a1655f3b | 386 | if((mRxMsg[0] == 0x65)&&(mRxMsg[1] == 0x00)&&(mRxMsg[2] == 0x14)&&(mRxMsg[3] == 0x01))//press |
exarkun | 0:ea04a1655f3b | 387 | {myled3=1; |
exarkun | 0:ea04a1655f3b | 388 | //keyboard.keyCode(KEY_CTRL);//strafe down |
exarkun | 0:ea04a1655f3b | 389 | //wait(0.5); |
exarkun | 0:ea04a1655f3b | 390 | while (mRxMsg[3]!=0x00) |
exarkun | 0:ea04a1655f3b | 391 | { |
exarkun | 0:ea04a1655f3b | 392 | //lectureRSlcd(); |
exarkun | 0:ea04a1655f3b | 393 | //keyboard.keyCode(KEY_CTRL);//strafe down |
exarkun | 0:ea04a1655f3b | 394 | //wait(0.035); |
exarkun | 0:ea04a1655f3b | 395 | } |
exarkun | 0:ea04a1655f3b | 396 | |
exarkun | 0:ea04a1655f3b | 397 | }//uniquement le bouton allumeras la led 4 en release ---------------SY |
exarkun | 0:ea04a1655f3b | 398 | |
exarkun | 0:ea04a1655f3b | 399 | ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// |
exarkun | 0:ea04a1655f3b | 400 | //forward switch |
exarkun | 0:ea04a1655f3b | 401 | if((mRxMsg[0] == 0x65)&&(mRxMsg[1] == 0x00)&&(mRxMsg[2] == 0x02)&&(mRxMsg[3] == 0x01))//press |
exarkun | 0:ea04a1655f3b | 402 | {myled3=1; |
exarkun | 0:ea04a1655f3b | 403 | //keyboard.printf("w");//vers l'avant |
exarkun | 0:ea04a1655f3b | 404 | //wait(0.5); |
exarkun | 0:ea04a1655f3b | 405 | |
exarkun | 0:ea04a1655f3b | 406 | while (mRxMsg[3]!=0x00) |
exarkun | 0:ea04a1655f3b | 407 | { |
exarkun | 0:ea04a1655f3b | 408 | //lectureRSlcd(); |
exarkun | 0:ea04a1655f3b | 409 | //keyboard.printf("w");//vers l'avant |
exarkun | 0:ea04a1655f3b | 410 | //wait(0.035); |
exarkun | 0:ea04a1655f3b | 411 | } |
exarkun | 0:ea04a1655f3b | 412 | |
exarkun | 0:ea04a1655f3b | 413 | }//uniquement le bouton allumeras la led 4 en release ---------------SY |
exarkun | 0:ea04a1655f3b | 414 | |
exarkun | 0:ea04a1655f3b | 415 | ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// |
exarkun | 0:ea04a1655f3b | 416 | //rearward switch |
exarkun | 0:ea04a1655f3b | 417 | if((mRxMsg[0] == 0x65)&&(mRxMsg[1] == 0x00)&&(mRxMsg[2] == 0x01)&&(mRxMsg[3] == 0x01))//press |
exarkun | 0:ea04a1655f3b | 418 | {myled3=1; |
exarkun | 0:ea04a1655f3b | 419 | //keyboard.printf("s");//vers l arriere |
exarkun | 0:ea04a1655f3b | 420 | //wait(0.5); |
exarkun | 0:ea04a1655f3b | 421 | |
exarkun | 0:ea04a1655f3b | 422 | while (mRxMsg[3]!=0x00) |
exarkun | 0:ea04a1655f3b | 423 | { |
exarkun | 0:ea04a1655f3b | 424 | //lectureRSlcd(); |
exarkun | 0:ea04a1655f3b | 425 | //keyboard.printf("s");//vers l arriere |
exarkun | 0:ea04a1655f3b | 426 | //wait(0.035); |
exarkun | 0:ea04a1655f3b | 427 | } |
exarkun | 0:ea04a1655f3b | 428 | |
exarkun | 0:ea04a1655f3b | 429 | }//uniquement le bouton allumeras la led 4 en release ---------------SY |
exarkun | 0:ea04a1655f3b | 430 | |
exarkun | 0:ea04a1655f3b | 431 | ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// |
exarkun | 0:ea04a1655f3b | 432 | //Right switch |
exarkun | 0:ea04a1655f3b | 433 | if((mRxMsg[0] == 0x65)&&(mRxMsg[1] == 0x00)&&(mRxMsg[2] == 0x03)&&(mRxMsg[3] == 0x01))//press |
exarkun | 0:ea04a1655f3b | 434 | {myled3=1; |
exarkun | 0:ea04a1655f3b | 435 | //keyboard.printf("d");//vers la droite |
exarkun | 0:ea04a1655f3b | 436 | //wait(0.5); |
exarkun | 0:ea04a1655f3b | 437 | |
exarkun | 0:ea04a1655f3b | 438 | while (mRxMsg[3]!=0x00) |
exarkun | 0:ea04a1655f3b | 439 | { |
exarkun | 0:ea04a1655f3b | 440 | //lectureRSlcd(); |
exarkun | 0:ea04a1655f3b | 441 | //keyboard.printf("d");//vers la droite |
exarkun | 0:ea04a1655f3b | 442 | //wait(0.035); |
exarkun | 0:ea04a1655f3b | 443 | } |
exarkun | 0:ea04a1655f3b | 444 | |
exarkun | 0:ea04a1655f3b | 445 | }//uniquement le bouton allumeras la led 4 en release ---------------SY |
exarkun | 0:ea04a1655f3b | 446 | |
exarkun | 0:ea04a1655f3b | 447 | ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// |
exarkun | 0:ea04a1655f3b | 448 | //Left switch |
exarkun | 0:ea04a1655f3b | 449 | if((mRxMsg[0] == 0x65)&&(mRxMsg[1] == 0x00)&&(mRxMsg[2] == 0x04)&&(mRxMsg[3] == 0x01))//press |
exarkun | 0:ea04a1655f3b | 450 | {myled3=1; |
exarkun | 0:ea04a1655f3b | 451 | |
exarkun | 0:ea04a1655f3b | 452 | //keyboard.printf("a");//vers la gauche |
exarkun | 0:ea04a1655f3b | 453 | //wait(0.5); |
exarkun | 0:ea04a1655f3b | 454 | |
exarkun | 0:ea04a1655f3b | 455 | while (mRxMsg[3]!=0x00) |
exarkun | 0:ea04a1655f3b | 456 | { |
exarkun | 0:ea04a1655f3b | 457 | //lectureRSlcd(); |
exarkun | 0:ea04a1655f3b | 458 | //keyboard.printf("a");//vers la gauche |
exarkun | 0:ea04a1655f3b | 459 | //wait(0.035); |
exarkun | 0:ea04a1655f3b | 460 | } |
exarkun | 0:ea04a1655f3b | 461 | |
exarkun | 0:ea04a1655f3b | 462 | }//uniquement le bouton allumeras la led 4 en release ---------------SY |
exarkun | 0:ea04a1655f3b | 463 | |
exarkun | 0:ea04a1655f3b | 464 | ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// |
exarkun | 0:ea04a1655f3b | 465 | //roll left switch |
exarkun | 0:ea04a1655f3b | 466 | if((mRxMsg[0] == 0x65)&&(mRxMsg[1] == 0x00)&&(mRxMsg[2] == 0x1a)&&(mRxMsg[3] == 0x01))//press |
exarkun | 0:ea04a1655f3b | 467 | {myled3=1; |
exarkun | 0:ea04a1655f3b | 468 | //keyboard.printf("e");//rouli gauche |
exarkun | 0:ea04a1655f3b | 469 | //wait(0.5); |
exarkun | 0:ea04a1655f3b | 470 | |
exarkun | 0:ea04a1655f3b | 471 | while (mRxMsg[3]!=0x00) |
exarkun | 0:ea04a1655f3b | 472 | { |
exarkun | 0:ea04a1655f3b | 473 | //lectureRSlcd(); |
exarkun | 0:ea04a1655f3b | 474 | //keyboard.printf("e");//rouli gauche |
exarkun | 0:ea04a1655f3b | 475 | //wait(0.035); |
exarkun | 0:ea04a1655f3b | 476 | } |
exarkun | 0:ea04a1655f3b | 477 | |
exarkun | 0:ea04a1655f3b | 478 | }//uniquement le bouton allumeras la led 4 en release ---------------SY |
exarkun | 0:ea04a1655f3b | 479 | |
exarkun | 0:ea04a1655f3b | 480 | ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// |
exarkun | 0:ea04a1655f3b | 481 | //roll Right switch |
exarkun | 0:ea04a1655f3b | 482 | if((mRxMsg[0] == 0x65)&&(mRxMsg[1] == 0x00)&&(mRxMsg[2] == 0x05)&&(mRxMsg[3] == 0x01))//press |
exarkun | 0:ea04a1655f3b | 483 | {myled3=1; |
exarkun | 0:ea04a1655f3b | 484 | |
exarkun | 0:ea04a1655f3b | 485 | //keyboard.printf("q");//rouli droit |
exarkun | 0:ea04a1655f3b | 486 | //wait(0.5); |
exarkun | 0:ea04a1655f3b | 487 | |
exarkun | 0:ea04a1655f3b | 488 | while (mRxMsg[3]!=0x00) |
exarkun | 0:ea04a1655f3b | 489 | { |
exarkun | 0:ea04a1655f3b | 490 | //lectureRSlcd(); |
exarkun | 0:ea04a1655f3b | 491 | //keyboard.printf("q");//rouli droit |
exarkun | 0:ea04a1655f3b | 492 | //wait(0.035); |
exarkun | 0:ea04a1655f3b | 493 | } |
exarkun | 0:ea04a1655f3b | 494 | |
exarkun | 0:ea04a1655f3b | 495 | }//uniquement le bouton allumeras la led 4 en release ---------------SY |
exarkun | 0:ea04a1655f3b | 496 | |
exarkun | 0:ea04a1655f3b | 497 | ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// |
exarkun | 0:ea04a1655f3b | 498 | //tangage vers le bas switch |
exarkun | 0:ea04a1655f3b | 499 | if((mRxMsg[0] == 0x65)&&(mRxMsg[1] == 0x00)&&(mRxMsg[2] == 0x1b)&&(mRxMsg[3] == 0x01))//press |
exarkun | 0:ea04a1655f3b | 500 | {myled3=1; |
exarkun | 0:ea04a1655f3b | 501 | |
exarkun | 0:ea04a1655f3b | 502 | //keyboard.printf("");//touche non affecté |
exarkun | 0:ea04a1655f3b | 503 | //wait(0.5); |
exarkun | 0:ea04a1655f3b | 504 | |
exarkun | 0:ea04a1655f3b | 505 | while (mRxMsg[3]!=0x00) |
exarkun | 0:ea04a1655f3b | 506 | { |
exarkun | 0:ea04a1655f3b | 507 | //lectureRSlcd(); |
exarkun | 0:ea04a1655f3b | 508 | //keyboard.printf("");//touche non affecté la touche non connue |
exarkun | 0:ea04a1655f3b | 509 | //wait(0.035); |
exarkun | 0:ea04a1655f3b | 510 | } |
exarkun | 0:ea04a1655f3b | 511 | |
exarkun | 0:ea04a1655f3b | 512 | }//uniquement le bouton allumeras la led 4 en release ---------------SY |
exarkun | 0:ea04a1655f3b | 513 | |
exarkun | 0:ea04a1655f3b | 514 | ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// |
exarkun | 0:ea04a1655f3b | 515 | //tangage vers le haut switch |
exarkun | 0:ea04a1655f3b | 516 | if((mRxMsg[0] == 0x65)&&(mRxMsg[1] == 0x00)&&(mRxMsg[2] == 0x1b)&&(mRxMsg[3] == 0x01))//press |
exarkun | 0:ea04a1655f3b | 517 | {myled3=1; |
exarkun | 0:ea04a1655f3b | 518 | |
exarkun | 0:ea04a1655f3b | 519 | //keyboard.printf("");//touche non affecté la touche non connue |
exarkun | 0:ea04a1655f3b | 520 | //wait(0.5); |
exarkun | 0:ea04a1655f3b | 521 | |
exarkun | 0:ea04a1655f3b | 522 | while (mRxMsg[3]!=0x00) |
exarkun | 0:ea04a1655f3b | 523 | { |
exarkun | 0:ea04a1655f3b | 524 | //lectureRSlcd(); |
exarkun | 0:ea04a1655f3b | 525 | //keyboard.printf("");//touche non affecté |
exarkun | 0:ea04a1655f3b | 526 | //wait(0.035); |
exarkun | 0:ea04a1655f3b | 527 | } |
exarkun | 0:ea04a1655f3b | 528 | |
exarkun | 0:ea04a1655f3b | 529 | }//uniquement le bouton allumeras la led 4 en release ---------------SY |
exarkun | 0:ea04a1655f3b | 530 | |
exarkun | 0:ea04a1655f3b | 531 | |
exarkun | 0:ea04a1655f3b | 532 | |
exarkun | 0:ea04a1655f3b | 533 | ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// |
exarkun | 0:ea04a1655f3b | 534 | //quantum drive |
exarkun | 0:ea04a1655f3b | 535 | if((mRxMsg[0] == 0x65)&&(mRxMsg[1] == 0x00)&&(mRxMsg[2] == 0x1f)&&(mRxMsg[3] == 0x01))//press |
exarkun | 0:ea04a1655f3b | 536 | {myled3=1; |
exarkun | 0:ea04a1655f3b | 537 | |
exarkun | 0:ea04a1655f3b | 538 | //keyboard.printf("b");//touche non affecté la touche non connue |
exarkun | 0:ea04a1655f3b | 539 | //wait(0.5); |
exarkun | 0:ea04a1655f3b | 540 | |
exarkun | 0:ea04a1655f3b | 541 | while (mRxMsg[3]!=0x00) |
exarkun | 0:ea04a1655f3b | 542 | { |
exarkun | 0:ea04a1655f3b | 543 | //lectureRSlcd(); |
exarkun | 0:ea04a1655f3b | 544 | //keyboard.printf("b");//touche non affecté |
exarkun | 0:ea04a1655f3b | 545 | //wait(0.035); |
exarkun | 0:ea04a1655f3b | 546 | } |
exarkun | 0:ea04a1655f3b | 547 | |
exarkun | 0:ea04a1655f3b | 548 | }//uniquement le bouton allumeras la led 4 en release ---------------SY |
exarkun | 0:ea04a1655f3b | 549 | |
exarkun | 0:ea04a1655f3b | 550 | ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// |
exarkun | 0:ea04a1655f3b | 551 | //Speed M |
exarkun | 0:ea04a1655f3b | 552 | if((mRxMsg[0] == 0x65)&&(mRxMsg[1] == 0x00)&&(mRxMsg[2] == 0x1c)&&(mRxMsg[3] == 0x01))//press |
exarkun | 0:ea04a1655f3b | 553 | {myled3=1; |
exarkun | 0:ea04a1655f3b | 554 | |
exarkun | 0:ea04a1655f3b | 555 | //keyboard.printf("c");//touche non affecté la touche non connue |
exarkun | 0:ea04a1655f3b | 556 | //wait(0.5); |
exarkun | 0:ea04a1655f3b | 557 | |
exarkun | 0:ea04a1655f3b | 558 | while (mRxMsg[3]!=0x00) |
exarkun | 0:ea04a1655f3b | 559 | { |
exarkun | 0:ea04a1655f3b | 560 | //lectureRSlcd(); |
exarkun | 0:ea04a1655f3b | 561 | //keyboard.printf("c");//touche non affecté |
exarkun | 0:ea04a1655f3b | 562 | //wait(0.035); |
exarkun | 0:ea04a1655f3b | 563 | } |
exarkun | 0:ea04a1655f3b | 564 | |
exarkun | 0:ea04a1655f3b | 565 | }//uniquement le bouton allumeras la led 4 en release ---------------SY |
exarkun | 0:ea04a1655f3b | 566 | |
exarkun | 0:ea04a1655f3b | 567 | ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// |
exarkun | 0:ea04a1655f3b | 568 | //Speed M |
exarkun | 0:ea04a1655f3b | 569 | if((mRxMsg[0] == 0x65)&&(mRxMsg[1] == 0x00)&&(mRxMsg[2] == 0x1c)&&(mRxMsg[3] == 0x01))//press |
exarkun | 0:ea04a1655f3b | 570 | {myled3=1; |
exarkun | 0:ea04a1655f3b | 571 | |
exarkun | 0:ea04a1655f3b | 572 | //keyboard.printf("b");//touche non affecté la touche non connue |
exarkun | 0:ea04a1655f3b | 573 | //wait(0.5); |
exarkun | 0:ea04a1655f3b | 574 | |
exarkun | 0:ea04a1655f3b | 575 | while (mRxMsg[3]!=0x00) |
exarkun | 0:ea04a1655f3b | 576 | { |
exarkun | 0:ea04a1655f3b | 577 | //lectureRSlcd(); |
exarkun | 0:ea04a1655f3b | 578 | //keyboard.printf("c");//touche non affecté |
exarkun | 0:ea04a1655f3b | 579 | //wait(0.035); |
exarkun | 0:ea04a1655f3b | 580 | } |
exarkun | 0:ea04a1655f3b | 581 | |
exarkun | 0:ea04a1655f3b | 582 | }//uniquement le bouton allumeras la led 4 en release ---------------SY |
exarkun | 0:ea04a1655f3b | 583 | |
exarkun | 0:ea04a1655f3b | 584 | ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// |
exarkun | 0:ea04a1655f3b | 585 | //Afterburner |
exarkun | 0:ea04a1655f3b | 586 | if((mRxMsg[0] == 0x65)&&(mRxMsg[1] == 0x00)&&(mRxMsg[2] == 0x1c)&&(mRxMsg[3] == 0x01))//press |
exarkun | 0:ea04a1655f3b | 587 | {myled3=1; |
exarkun | 0:ea04a1655f3b | 588 | |
exarkun | 0:ea04a1655f3b | 589 | //keyboard.keyCode(KEY_SHIFT); |
exarkun | 0:ea04a1655f3b | 590 | //wait(0.5); |
exarkun | 0:ea04a1655f3b | 591 | |
exarkun | 0:ea04a1655f3b | 592 | while (mRxMsg[3]!=0x00) |
exarkun | 0:ea04a1655f3b | 593 | { |
exarkun | 0:ea04a1655f3b | 594 | //lectureRSlcd(); |
exarkun | 0:ea04a1655f3b | 595 | //keyboard.keyCode(KEY_SHIFT); |
exarkun | 0:ea04a1655f3b | 596 | //wait(0.035); |
exarkun | 0:ea04a1655f3b | 597 | } |
exarkun | 0:ea04a1655f3b | 598 | |
exarkun | 0:ea04a1655f3b | 599 | }//uniquement le bouton allumeras la led 4 en release ---------------SY |
exarkun | 0:ea04a1655f3b | 600 | |
exarkun | 0:ea04a1655f3b | 601 | |
exarkun | 0:ea04a1655f3b | 602 | ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// |
exarkun | 0:ea04a1655f3b | 603 | |
exarkun | 0:ea04a1655f3b | 604 | //ici il faut completer le code pour pouvoir detecter le bon bouton en press event et release event |
exarkun | 0:ea04a1655f3b | 605 | //example le bouton start press event 65 01 01 01 ff ff ff et en release event 65 01 01 00 ff ff ff . rem:code touche repris par simulation avec le soft nextion |
exarkun | 0:ea04a1655f3b | 606 | |
exarkun | 0:ea04a1655f3b | 607 | } |
exarkun | 0:ea04a1655f3b | 608 | |
exarkun | 0:ea04a1655f3b | 609 | ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// |
exarkun | 0:ea04a1655f3b | 610 | //******************************************************************page1******************************************************************// |
exarkun | 0:ea04a1655f3b | 611 | ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// |
exarkun | 0:ea04a1655f3b | 612 | void page1()//code de la page : 6601ffffff |
exarkun | 0:ea04a1655f3b | 613 | { |
exarkun | 0:ea04a1655f3b | 614 | device.printf("bt0.txt=\"BREAK1\"%c%c%c", 0xff, 0xff, 0xff);//affiche break sur bouton bt0 -------sy |
exarkun | 0:ea04a1655f3b | 615 | } |
exarkun | 0:ea04a1655f3b | 616 | |
exarkun | 0:ea04a1655f3b | 617 | ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// |
exarkun | 0:ea04a1655f3b | 618 | //******************************************************************page2******************************************************************// |
exarkun | 0:ea04a1655f3b | 619 | ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// |
exarkun | 0:ea04a1655f3b | 620 | void page2()//code de la page : 6602ffffff |
exarkun | 0:ea04a1655f3b | 621 | { |
exarkun | 0:ea04a1655f3b | 622 | device.printf("b0.txt=\"BREAK2\"%c%c%c", 0xff, 0xff, 0xff);//affiche break sur bouton b0 -------sy |
exarkun | 0:ea04a1655f3b | 623 | get_val(3);//donner l'ordre d envoyer la valeur val de h3 |
exarkun | 0:ea04a1655f3b | 624 | int valeur_val=lecture_slider_RS_lcd();//recuperation de la valeur val de h3 |
exarkun | 0:ea04a1655f3b | 625 | device.printf("n3.val=%d %c%c%c", valeur_val, 0xff, 0xff, 0xff);//affiche le nombre sur n1 -------sy |
exarkun | 0:ea04a1655f3b | 626 | device.printf("z0.val=%d %c%c%c", valeur_val, 0xff, 0xff, 0xff);//affiche le nombre sur z0 gauge -------sy |
exarkun | 0:ea04a1655f3b | 627 | } |
exarkun | 0:ea04a1655f3b | 628 | |
exarkun | 0:ea04a1655f3b | 629 | ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// |
exarkun | 0:ea04a1655f3b | 630 | //******************************************************************page3******************************************************************// |
exarkun | 0:ea04a1655f3b | 631 | ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// |
exarkun | 0:ea04a1655f3b | 632 | void page3()//code de la page : 6603ffffff |
exarkun | 0:ea04a1655f3b | 633 | { |
exarkun | 0:ea04a1655f3b | 634 | device.printf("b19.txt=\"BREAK3\"%c%c%c", 0xff, 0xff, 0xff);//affiche break sur bouton b19 -------sy |
exarkun | 0:ea04a1655f3b | 635 | } |
exarkun | 0:ea04a1655f3b | 636 | |
exarkun | 0:ea04a1655f3b | 637 | ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// |
exarkun | 0:ea04a1655f3b | 638 | //******************************************************************page4******************************************************************// |
exarkun | 0:ea04a1655f3b | 639 | ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// |
exarkun | 0:ea04a1655f3b | 640 | void page4()//code de la page : 6604ffffff |
exarkun | 0:ea04a1655f3b | 641 | { |
exarkun | 0:ea04a1655f3b | 642 | device.printf("t0.txt=\"BREAK4\"%c%c%c", 0xff, 0xff, 0xff);//affiche break sur bouton bt0 -------sy |
exarkun | 0:ea04a1655f3b | 643 | |
exarkun | 0:ea04a1655f3b | 644 | get_val_h0(); |
exarkun | 0:ea04a1655f3b | 645 | val_temp1=lecture_slider_RS_lcd();//recuperation de la valeur du sliders h0 dans val_temp |
exarkun | 0:ea04a1655f3b | 646 | device.printf("n1.val=%d %c%c%c", val_temp1, 0xff, 0xff, 0xff);//affiche le nombre sur n1 -------sy |
exarkun | 0:ea04a1655f3b | 647 | |
exarkun | 0:ea04a1655f3b | 648 | } |
exarkun | 0:ea04a1655f3b | 649 | |
exarkun | 0:ea04a1655f3b | 650 | ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// |
exarkun | 0:ea04a1655f3b | 651 | //******************************************************************page5******************************************************************// |
exarkun | 0:ea04a1655f3b | 652 | ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// |
exarkun | 0:ea04a1655f3b | 653 | void page5()//code de la page : 6605ffffff |
exarkun | 0:ea04a1655f3b | 654 | { |
exarkun | 0:ea04a1655f3b | 655 | device.printf("t0.txt=\"BREAK5\"%c%c%c", 0xff, 0xff, 0xff);//affiche break sur bouton bt0 -------sy |
exarkun | 0:ea04a1655f3b | 656 | device.printf("t1.txt=\"500ms/div\"%c%c%c", 0xff, 0xff, 0xff);//affiche break sur bouton bt0 -------sy |
exarkun | 0:ea04a1655f3b | 657 | |
exarkun | 0:ea04a1655f3b | 658 | device.printf("g0.txt=\"position M\"%c%c%c", 0xff, 0xff, 0xff);//affiche break sur bouton bt0 -------sy |
exarkun | 0:ea04a1655f3b | 659 | device.printf("add 1,0,%d%c%c%c", (position_actuelle/500), 0xff, 0xff, 0xff);// pour la fonction waveform add id1,chanel0,position actu |
exarkun | 0:ea04a1655f3b | 660 | |
exarkun | 0:ea04a1655f3b | 661 | } |
exarkun | 0:ea04a1655f3b | 662 | |
exarkun | 0:ea04a1655f3b | 663 | ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// |
exarkun | 0:ea04a1655f3b | 664 | //******************************************************************page6******************************************************************// |
exarkun | 0:ea04a1655f3b | 665 | ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// |
exarkun | 0:ea04a1655f3b | 666 | |
exarkun | 0:ea04a1655f3b | 667 | void page6()//code de la page : 6606ffffff |
exarkun | 0:ea04a1655f3b | 668 | { |
exarkun | 0:ea04a1655f3b | 669 | |
exarkun | 0:ea04a1655f3b | 670 | device.printf("t1.txt=\"courant\"%c%c%c", 0xff, 0xff, 0xff);//affiche break sur bouton bt0 -------sy |
exarkun | 0:ea04a1655f3b | 671 | device.printf("t0.txt=\"position\"%c%c%c", 0xff, 0xff, 0xff);//affiche break sur bouton bt0 -------sy |
exarkun | 0:ea04a1655f3b | 672 | device.printf("add 2,0,%d%c%c%c", (position_actuelle/500), 0xff, 0xff, 0xff);// pour la fonction waveform add id1,chanel0,position actu |
exarkun | 0:ea04a1655f3b | 673 | |
exarkun | 0:ea04a1655f3b | 674 | } |
exarkun | 0:ea04a1655f3b | 675 | |
exarkun | 0:ea04a1655f3b | 676 | |
exarkun | 0:ea04a1655f3b | 677 | ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// |
exarkun | 0:ea04a1655f3b | 678 | //******************************************************************LES TASKS**************************************************************// |
exarkun | 0:ea04a1655f3b | 679 | ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// |
exarkun | 0:ea04a1655f3b | 680 | |
exarkun | 0:ea04a1655f3b | 681 | //////////////////////////////////////// |
exarkun | 0:ea04a1655f3b | 682 | // TASKS1 // |
exarkun | 0:ea04a1655f3b | 683 | //////////////////////////////////////// |
exarkun | 0:ea04a1655f3b | 684 | void task1_switch() |
exarkun | 0:ea04a1655f3b | 685 | { |
exarkun | 0:ea04a1655f3b | 686 | |
exarkun | 0:ea04a1655f3b | 687 | //lecture valeur codeur et conversion en radians |
exarkun | 0:ea04a1655f3b | 688 | position_actuelle=qei.GetPosition();//lecture valeur codeur et affectation a la variable globale |
exarkun | 0:ea04a1655f3b | 689 | Tetam=pulsesToRadians(position_actuelle);//conversion valeur impulsionel en radians |
exarkun | 0:ea04a1655f3b | 690 | |
exarkun | 0:ea04a1655f3b | 691 | //Calcul de la nouvelle consigne: |
exarkun | 0:ea04a1655f3b | 692 | |
exarkun | 0:ea04a1655f3b | 693 | //Etape1:derivee filtree |
exarkun | 0:ea04a1655f3b | 694 | dTetam=1./(1.+taud*2./dt_vit)*(-dTetam_n1*(1.-taud*2./dt_vit)+2./dt_vit*(Tetam-Tetam_n1)); |
exarkun | 0:ea04a1655f3b | 695 | |
exarkun | 0:ea04a1655f3b | 696 | //Etape2:calcul de integ non saturee |
exarkun | 0:ea04a1655f3b | 697 | integ=integ_n1+dt_vit/2.*((Tetaco-Tetam)+(Tetaco_n1-Tetam_n1)); |
exarkun | 0:ea04a1655f3b | 698 | |
exarkun | 0:ea04a1655f3b | 699 | //Etape3:Calcul de A non saturee |
exarkun | 0:ea04a1655f3b | 700 | A=Kv*K_sw/Umax*(-dTetam+Kp*Ki*integ-Kp*Tetam); |
exarkun | 0:ea04a1655f3b | 701 | |
exarkun | 0:ea04a1655f3b | 702 | //Etape 4 et 5 : calcul de integ saturee |
exarkun | 0:ea04a1655f3b | 703 | if (A>1) |
exarkun | 0:ea04a1655f3b | 704 | { |
exarkun | 0:ea04a1655f3b | 705 | integ=1./Kp/Ki*(Umax/Kv/K_sw+dTetam+Kp*Tetam); |
exarkun | 0:ea04a1655f3b | 706 | A=1; |
exarkun | 0:ea04a1655f3b | 707 | } |
exarkun | 0:ea04a1655f3b | 708 | if(A<-1) |
exarkun | 0:ea04a1655f3b | 709 | { |
exarkun | 0:ea04a1655f3b | 710 | integ=1./Kp/Ki*(-Umax/Kv/K_sw+dTetam+Kp*Tetam); |
exarkun | 0:ea04a1655f3b | 711 | A=-1; |
exarkun | 0:ea04a1655f3b | 712 | } |
exarkun | 0:ea04a1655f3b | 713 | |
exarkun | 0:ea04a1655f3b | 714 | //Etape 6:affectation du signe de rotation a l'etage de puissance |
exarkun | 0:ea04a1655f3b | 715 | if (A>0) |
exarkun | 0:ea04a1655f3b | 716 | { |
exarkun | 0:ea04a1655f3b | 717 | signe_rot=1; |
exarkun | 0:ea04a1655f3b | 718 | sens_rotation_moteur1.write(signe_rot); //affectation du sens de rotation moteur1 |
exarkun | 0:ea04a1655f3b | 719 | cyclic=A; |
exarkun | 0:ea04a1655f3b | 720 | } |
exarkun | 0:ea04a1655f3b | 721 | else |
exarkun | 0:ea04a1655f3b | 722 | { |
exarkun | 0:ea04a1655f3b | 723 | signe_rot=0; |
exarkun | 0:ea04a1655f3b | 724 | sens_rotation_moteur1.write(signe_rot); //affectation du sens de rotation moteur1 |
exarkun | 0:ea04a1655f3b | 725 | cyclic=-A;//peut etre une erreur ici sy?? |
exarkun | 0:ea04a1655f3b | 726 | } |
exarkun | 0:ea04a1655f3b | 727 | |
exarkun | 0:ea04a1655f3b | 728 | PWM1.write(cyclic);// affectation de la valeur calculé en pwm |
exarkun | 0:ea04a1655f3b | 729 | |
exarkun | 0:ea04a1655f3b | 730 | // enregistrement des valeurs N-1 |
exarkun | 0:ea04a1655f3b | 731 | position_actuelle_n1=position_actuelle; |
exarkun | 0:ea04a1655f3b | 732 | dTetam_n1=dTetam; |
exarkun | 0:ea04a1655f3b | 733 | Tetaco_n1=Tetaco; |
exarkun | 0:ea04a1655f3b | 734 | Tetam_n1=Tetam; |
exarkun | 0:ea04a1655f3b | 735 | integ_n1=integ; |
exarkun | 0:ea04a1655f3b | 736 | |
exarkun | 0:ea04a1655f3b | 737 | //myled1=!myled1;//changement etat de la led1 |
exarkun | 0:ea04a1655f3b | 738 | } |
exarkun | 0:ea04a1655f3b | 739 | |
exarkun | 0:ea04a1655f3b | 740 | //////////////////////////////////////// |
exarkun | 0:ea04a1655f3b | 741 | // TASKS2 // |
exarkun | 0:ea04a1655f3b | 742 | //////////////////////////////////////// |
exarkun | 0:ea04a1655f3b | 743 | void task2_switch() |
exarkun | 0:ea04a1655f3b | 744 | { |
exarkun | 0:ea04a1655f3b | 745 | // pc.printf("%f\r\n", Tetaco);//valeur float consigne en radians le renvoyé par usb |
exarkun | 0:ea04a1655f3b | 746 | // pc.printf("%i\r\n", position_actuelle);//valeur int du codeur renvoyé par usb |
exarkun | 0:ea04a1655f3b | 747 | // pc.printf("%f\r\n", Tetam);//valeur float du codeur en radians renvoyé par usb |
exarkun | 0:ea04a1655f3b | 748 | // pc.printf("dTetam : %f\r\n", dTetam);//valeur float dTetam |
exarkun | 0:ea04a1655f3b | 749 | // pc.printf("integ : %f\r\n", integ);//valeur float integ |
exarkun | 0:ea04a1655f3b | 750 | // pc.printf("%f\r\n", A);//valeur float du codeur en radians le renvoyé par usb |
exarkun | 0:ea04a1655f3b | 751 | // pc.printf("%e\r\n", cyclic);//valeur float du codeur en radians le renvoyé par usb |
exarkun | 0:ea04a1655f3b | 752 | // pc.printf("\r\n");//retour chario |
exarkun | 0:ea04a1655f3b | 753 | // pc.printf("$%d %d %d;", position_actuelle,position_actuelle/2,position_actuelle/10 ); //utiliser avec logicielle serial port ploter |
exarkun | 0:ea04a1655f3b | 754 | // pc.printf("$%d ;", position_actuelle); //utiliser avec logicielle serial port ploter |
exarkun | 0:ea04a1655f3b | 755 | // pc.printf("%d",position_actuelle); //utiliser avec logicielle serial port ploter |
exarkun | 0:ea04a1655f3b | 756 | |
exarkun | 0:ea04a1655f3b | 757 | // this code is a crude template |
exarkun | 0:ea04a1655f3b | 758 | // you will need to edit this |
exarkun | 0:ea04a1655f3b | 759 | |
exarkun | 0:ea04a1655f3b | 760 | |
exarkun | 0:ea04a1655f3b | 761 | // use this loop if sending integers----------------------------------------------SY |
exarkun | 0:ea04a1655f3b | 762 | |
exarkun | 0:ea04a1655f3b | 763 | // int ppp = position_actuelle; |
exarkun | 0:ea04a1655f3b | 764 | // char text[7]; |
exarkun | 0:ea04a1655f3b | 765 | // snprintf(text, 7, "%d", ppp); |
exarkun | 0:ea04a1655f3b | 766 | // pc.printf("\r"); |
exarkun | 0:ea04a1655f3b | 767 | // pc.printf(text); |
exarkun | 0:ea04a1655f3b | 768 | |
exarkun | 0:ea04a1655f3b | 769 | |
exarkun | 0:ea04a1655f3b | 770 | // or use this loop if sending floats |
exarkun | 0:ea04a1655f3b | 771 | |
exarkun | 0:ea04a1655f3b | 772 | // float ppp =position_actuelle; |
exarkun | 0:ea04a1655f3b | 773 | // char ppp_text[30]; |
exarkun | 0:ea04a1655f3b | 774 | // dtostrf(ppp, 10, 10, ppp_text); |
exarkun | 0:ea04a1655f3b | 775 | // char text[31]; |
exarkun | 0:ea04a1655f3b | 776 | // snprintf(text, 31, "%s", ppp_text); |
exarkun | 0:ea04a1655f3b | 777 | // pc.printf(text); |
exarkun | 0:ea04a1655f3b | 778 | //device.printf("n0.val=%d%c%c%c", position_actuelle, 0xff, 0xff, 0xff);// affiche la valeur de position sur l afficheur nextion |
exarkun | 0:ea04a1655f3b | 779 | |
exarkun | 0:ea04a1655f3b | 780 | }; |
exarkun | 0:ea04a1655f3b | 781 | |
exarkun | 0:ea04a1655f3b | 782 | //////////////////////////////////////// |
exarkun | 0:ea04a1655f3b | 783 | // TASKS3 // |
exarkun | 0:ea04a1655f3b | 784 | //////////////////////////////////////// |
exarkun | 0:ea04a1655f3b | 785 | void task3_switch() |
exarkun | 0:ea04a1655f3b | 786 | { |
exarkun | 0:ea04a1655f3b | 787 | |
exarkun | 0:ea04a1655f3b | 788 | //generation de la trajectoire |
exarkun | 0:ea04a1655f3b | 789 | if(start_slope) |
exarkun | 0:ea04a1655f3b | 790 | { |
exarkun | 0:ea04a1655f3b | 791 | Teta_debut=Tetam;//affectation de la mesure a la variable globale |
exarkun | 0:ea04a1655f3b | 792 | Teta_fin=pulsesToRadians(consigne);//affectation de la consigne a la variable globale |
exarkun | 0:ea04a1655f3b | 793 | Teta_diff = Teta_fin - Teta_debut;//calcule de la position a parcourir |
exarkun | 0:ea04a1655f3b | 794 | delta_Teta=(Teta_diff/slope_time)*5*1e-4;//calcule de la distance ideal parcouru en 500us "regle de trois"!!! |
exarkun | 0:ea04a1655f3b | 795 | count_slope = 0;//mise a zero du conteur de pas |
exarkun | 0:ea04a1655f3b | 796 | count_max = slope_time/(5*1e-4);//calcule du nombre max de pas |
exarkun | 0:ea04a1655f3b | 797 | start_slope=false; |
exarkun | 0:ea04a1655f3b | 798 | } |
exarkun | 0:ea04a1655f3b | 799 | count_slope++;//incrementation nombre de pas |
exarkun | 0:ea04a1655f3b | 800 | if (count_slope<=count_max){Tetaco=Tetaco+delta_Teta;} |
exarkun | 0:ea04a1655f3b | 801 | |
exarkun | 0:ea04a1655f3b | 802 | } |
exarkun | 0:ea04a1655f3b | 803 | |
exarkun | 0:ea04a1655f3b | 804 | //////////////////////////////////////// |
exarkun | 0:ea04a1655f3b | 805 | // TASKS4 // |
exarkun | 0:ea04a1655f3b | 806 | //////////////////////////////////////// |
exarkun | 0:ea04a1655f3b | 807 | void task4_switch() |
exarkun | 0:ea04a1655f3b | 808 | { |
exarkun | 0:ea04a1655f3b | 809 | //device.printf("$%d;", position_actuelle); //utiliser avec logicielle serial port ploter |
exarkun | 0:ea04a1655f3b | 810 | //pc.printf("0x%04x\n", valueFromMaster); |
exarkun | 0:ea04a1655f3b | 811 | //pc.printf("%04x", valueFromMaster); |
exarkun | 0:ea04a1655f3b | 812 | //device.printf("add 1,0,%d%c%c%c", (position_actuelle/500), 0xff, 0xff, 0xff);// pour la fonction waveform add id1,chanel0,position actu |
exarkun | 0:ea04a1655f3b | 813 | //device.printf("add 1,0,%d%c%c%c", (ADCdata)/10, 0xff, 0xff, 0xff);// pour la fonction waveform add id1,chanel0,position actu |
exarkun | 0:ea04a1655f3b | 814 | |
exarkun | 0:ea04a1655f3b | 815 | } |
exarkun | 0:ea04a1655f3b | 816 | |
exarkun | 0:ea04a1655f3b | 817 | ////////////////////////////////////////////////////////////////////////////// |
exarkun | 0:ea04a1655f3b | 818 | // TASKS5 reception et transfert données sur SPI // |
exarkun | 0:ea04a1655f3b | 819 | ////////////////////////////////////////////////////////////////////////////// |
exarkun | 0:ea04a1655f3b | 820 | void task5_switch() |
exarkun | 0:ea04a1655f3b | 821 | { |
exarkun | 0:ea04a1655f3b | 822 | //reply=0xAAAA; |
exarkun | 0:ea04a1655f3b | 823 | //spi1.reply(reply); |
exarkun | 0:ea04a1655f3b | 824 | if (spi1.receive()) |
exarkun | 0:ea04a1655f3b | 825 | { |
exarkun | 0:ea04a1655f3b | 826 | valueFromMaster = spi1.read(); |
exarkun | 0:ea04a1655f3b | 827 | |
exarkun | 0:ea04a1655f3b | 828 | Spi_val_RX[x]=valueFromMaster; |
exarkun | 0:ea04a1655f3b | 829 | if (x==9){x=0;} |
exarkun | 0:ea04a1655f3b | 830 | else {x++;} |
exarkun | 0:ea04a1655f3b | 831 | |
exarkun | 0:ea04a1655f3b | 832 | // pc.printf("%d Something rxvd, and should have replied with %d\n\r", counter++, reply); |
exarkun | 0:ea04a1655f3b | 833 | //reply=valueFromMaster; |
exarkun | 0:ea04a1655f3b | 834 | //spi1.reply(reply); // Prime SPI with next reply |
exarkun | 0:ea04a1655f3b | 835 | //reply--; |
exarkun | 0:ea04a1655f3b | 836 | |
exarkun | 0:ea04a1655f3b | 837 | // pc.printf(" Received value from Master (%d) Next reply will be %d \r\n", valueFromMaster, reply); |
exarkun | 0:ea04a1655f3b | 838 | //if (reply==0){reply=65535;}//100 |
exarkun | 0:ea04a1655f3b | 839 | } |
exarkun | 0:ea04a1655f3b | 840 | |
exarkun | 0:ea04a1655f3b | 841 | // ici code de la tache 5 |
exarkun | 0:ea04a1655f3b | 842 | } |
exarkun | 0:ea04a1655f3b | 843 | |
exarkun | 0:ea04a1655f3b | 844 | ///////////////////////////////////////////////////////////////////////// |
exarkun | 0:ea04a1655f3b | 845 | // TASKS6 lecture de l'image courant moteur // |
exarkun | 0:ea04a1655f3b | 846 | ///////////////////////////////////////////////////////////////////////// |
exarkun | 0:ea04a1655f3b | 847 | void task6_switch() |
exarkun | 0:ea04a1655f3b | 848 | { |
exarkun | 0:ea04a1655f3b | 849 | |
exarkun | 0:ea04a1655f3b | 850 | //ADCdata=Ain*3.3; //lecture de l'image du courant |
exarkun | 0:ea04a1655f3b | 851 | |
exarkun | 0:ea04a1655f3b | 852 | for (int z=0;z<=9;z++) |
exarkun | 0:ea04a1655f3b | 853 | { |
exarkun | 0:ea04a1655f3b | 854 | ADCdata=ADCdata+Ain*3.3; //sum 10 samples |
exarkun | 0:ea04a1655f3b | 855 | } |
exarkun | 0:ea04a1655f3b | 856 | ADCdata=ADCdata/10; //divide by 10 |
exarkun | 0:ea04a1655f3b | 857 | //ADCdata=Ain.read_u16(); |
exarkun | 0:ea04a1655f3b | 858 | if(ADCdata>=imax)//si l'image du courant egale a 0.5v je coupe le moteur . |
exarkun | 0:ea04a1655f3b | 859 | { |
exarkun | 0:ea04a1655f3b | 860 | while(1){ |
exarkun | 0:ea04a1655f3b | 861 | PWM1.write(0);//mise du signal pwm a zero. |
exarkun | 0:ea04a1655f3b | 862 | // pc.printf("%1.3f",ADCdata); |
exarkun | 0:ea04a1655f3b | 863 | // pc.printf("V\n\r"); |
exarkun | 0:ea04a1655f3b | 864 | // pc.printf("current overload \n\r"); |
exarkun | 0:ea04a1655f3b | 865 | |
exarkun | 0:ea04a1655f3b | 866 | //attendre que le manipulateur appuis sur le bouton restart a coder . |
exarkun | 0:ea04a1655f3b | 867 | //veriffier que les plaques sont bien en position . |
exarkun | 0:ea04a1655f3b | 868 | //faire une home ou continuer la trajectoire .a voir !!!! |
exarkun | 0:ea04a1655f3b | 869 | } |
exarkun | 0:ea04a1655f3b | 870 | } |
exarkun | 0:ea04a1655f3b | 871 | // ici code de la tache 6 |
exarkun | 0:ea04a1655f3b | 872 | |
exarkun | 0:ea04a1655f3b | 873 | } |
exarkun | 0:ea04a1655f3b | 874 | |
exarkun | 0:ea04a1655f3b | 875 | //////////////////////////////////////// |
exarkun | 0:ea04a1655f3b | 876 | // TASKS7 // |
exarkun | 0:ea04a1655f3b | 877 | //////////////////////////////////////// |
exarkun | 0:ea04a1655f3b | 878 | void task7_switch() |
exarkun | 0:ea04a1655f3b | 879 | { |
exarkun | 0:ea04a1655f3b | 880 | //lectureRSlcd(); |
exarkun | 0:ea04a1655f3b | 881 | if(device.readable()) |
exarkun | 0:ea04a1655f3b | 882 | { |
exarkun | 0:ea04a1655f3b | 883 | myled1=1; |
exarkun | 0:ea04a1655f3b | 884 | charac = device.getc(); |
exarkun | 0:ea04a1655f3b | 885 | mRxMsg[mRxIdx] = charac; |
exarkun | 0:ea04a1655f3b | 886 | mRxIdx++; |
exarkun | 0:ea04a1655f3b | 887 | if ((mRxIdx >= 3) && (mRxMsg[mRxIdx-1] == 0xff) && (mRxMsg[mRxIdx-2] == 0xff) && (mRxMsg[mRxIdx-3] == 0xff)) //valid rx message |
exarkun | 0:ea04a1655f3b | 888 | { |
exarkun | 0:ea04a1655f3b | 889 | myled3=1; |
exarkun | 0:ea04a1655f3b | 890 | mRxIdx=0; |
exarkun | 0:ea04a1655f3b | 891 | |
exarkun | 0:ea04a1655f3b | 892 | if(mRxMsg[0] == 0x67) //Touch coordinate data return |
exarkun | 0:ea04a1655f3b | 893 | { mTouchX = (mRxMsg[1]*256) + mRxMsg[2]; |
exarkun | 0:ea04a1655f3b | 894 | mTouchY = (mRxMsg[3]*256) + mRxMsg[4]; |
exarkun | 0:ea04a1655f3b | 895 | if(mRxMsg[5] == 0x01) |
exarkun | 0:ea04a1655f3b | 896 | mTouch = true; |
exarkun | 0:ea04a1655f3b | 897 | else |
exarkun | 0:ea04a1655f3b | 898 | mTouch = false; |
exarkun | 0:ea04a1655f3b | 899 | } |
exarkun | 0:ea04a1655f3b | 900 | myled3=0; |
exarkun | 0:ea04a1655f3b | 901 | } |
exarkun | 0:ea04a1655f3b | 902 | //vitesse_actuelle=qei.GetVelocity(); //fonctionne pas ... |
exarkun | 0:ea04a1655f3b | 903 | // ici code de la tache 7 |
exarkun | 0:ea04a1655f3b | 904 | myled1=0; |
exarkun | 0:ea04a1655f3b | 905 | } |
exarkun | 0:ea04a1655f3b | 906 | } |
exarkun | 0:ea04a1655f3b | 907 | |
exarkun | 0:ea04a1655f3b | 908 | //////////////////////////////////////// |
exarkun | 0:ea04a1655f3b | 909 | // TASKS8 // |
exarkun | 0:ea04a1655f3b | 910 | //////////////////////////////////////// |
exarkun | 0:ea04a1655f3b | 911 | |
exarkun | 0:ea04a1655f3b | 912 | void task8_switch() |
exarkun | 0:ea04a1655f3b | 913 | { |
exarkun | 0:ea04a1655f3b | 914 | |
exarkun | 0:ea04a1655f3b | 915 | if((mRxMsg[0] == 0x66))//detection code de la page0 |
exarkun | 0:ea04a1655f3b | 916 | { |
exarkun | 0:ea04a1655f3b | 917 | switch ( mRxMsg[1]) |
exarkun | 0:ea04a1655f3b | 918 | { |
exarkun | 0:ea04a1655f3b | 919 | case 0x00: |
exarkun | 0:ea04a1655f3b | 920 | page0();//ici la page0 es traité ----------- code de la page : 66 00 ff ff ff |
exarkun | 0:ea04a1655f3b | 921 | mRxMsg[0] = 0x00; |
exarkun | 0:ea04a1655f3b | 922 | break; |
exarkun | 0:ea04a1655f3b | 923 | |
exarkun | 0:ea04a1655f3b | 924 | case 0x01: |
exarkun | 0:ea04a1655f3b | 925 | page1();//ici la page0 es traité ----------- code de la page : 66 01 ff ff ff |
exarkun | 0:ea04a1655f3b | 926 | mRxMsg[0] = 0x00; |
exarkun | 0:ea04a1655f3b | 927 | break; |
exarkun | 0:ea04a1655f3b | 928 | |
exarkun | 0:ea04a1655f3b | 929 | case 0x02: |
exarkun | 0:ea04a1655f3b | 930 | page2();//ici la page0 es traité ----------- code de la page : 66 02 ff ff ff |
exarkun | 0:ea04a1655f3b | 931 | mRxMsg[0] = 0x00; |
exarkun | 0:ea04a1655f3b | 932 | break; |
exarkun | 0:ea04a1655f3b | 933 | |
exarkun | 0:ea04a1655f3b | 934 | case 0x03: |
exarkun | 0:ea04a1655f3b | 935 | page3();//ici la page0 es traité ----------- code de la page : 66 03 ff ff ff |
exarkun | 0:ea04a1655f3b | 936 | mRxMsg[0] = 0x00; |
exarkun | 0:ea04a1655f3b | 937 | break; |
exarkun | 0:ea04a1655f3b | 938 | |
exarkun | 0:ea04a1655f3b | 939 | case 0x04: |
exarkun | 0:ea04a1655f3b | 940 | page4();//ici la page0 es traité ----------- code de la page : 66 04 ff ff ff |
exarkun | 0:ea04a1655f3b | 941 | mRxMsg[0] = 0x00; |
exarkun | 0:ea04a1655f3b | 942 | break; |
exarkun | 0:ea04a1655f3b | 943 | |
exarkun | 0:ea04a1655f3b | 944 | case 0x05: |
exarkun | 0:ea04a1655f3b | 945 | page5();//ici la page0 es traité ----------- code de la page : 66 05 ff ff ff |
exarkun | 0:ea04a1655f3b | 946 | mRxMsg[0] = 0x00; |
exarkun | 0:ea04a1655f3b | 947 | break; |
exarkun | 0:ea04a1655f3b | 948 | |
exarkun | 0:ea04a1655f3b | 949 | case 0x06: |
exarkun | 0:ea04a1655f3b | 950 | page6();//ici la page6 es traité ----------- code de la page : 66 06 ff ff ff |
exarkun | 0:ea04a1655f3b | 951 | mRxMsg[0] = 0x00; |
exarkun | 0:ea04a1655f3b | 952 | break; |
exarkun | 0:ea04a1655f3b | 953 | |
exarkun | 0:ea04a1655f3b | 954 | } |
exarkun | 0:ea04a1655f3b | 955 | |
exarkun | 0:ea04a1655f3b | 956 | // ici code de la tache 8 |
exarkun | 0:ea04a1655f3b | 957 | } |
exarkun | 0:ea04a1655f3b | 958 | |
exarkun | 0:ea04a1655f3b | 959 | } |
exarkun | 0:ea04a1655f3b | 960 | |
exarkun | 0:ea04a1655f3b | 961 | //////////////////////////////////////////////////////////////////////////// |
exarkun | 0:ea04a1655f3b | 962 | // PROGRAMME PRINCIPAL // |
exarkun | 0:ea04a1655f3b | 963 | //////////////////////////////////////////////////////////////////////////// |
exarkun | 0:ea04a1655f3b | 964 | |
exarkun | 0:ea04a1655f3b | 965 | int main() |
exarkun | 0:ea04a1655f3b | 966 | { |
exarkun | 0:ea04a1655f3b | 967 | // int cycles; |
exarkun | 0:ea04a1655f3b | 968 | //NVIC_SetPriority(EINT3_IRQn, 252);//set interupt to highest priority 0. |
exarkun | 0:ea04a1655f3b | 969 | //NVIC_SetPriority(TIMER1_IRQn, 253);// set mbed tickers to lower priority than other things |
exarkun | 0:ea04a1655f3b | 970 | //NVIC_SetPriority(TIMER2_IRQn, 254);// set mbed tickers to lower priority than other things |
exarkun | 0:ea04a1655f3b | 971 | //NVIC_SetPriority(TIMER3_IRQn, 255);// set mbed tickers to lower priority than other things |
exarkun | 0:ea04a1655f3b | 972 | //NVIC_set_all_irq_priorities(0); |
exarkun | 0:ea04a1655f3b | 973 | |
exarkun | 0:ea04a1655f3b | 974 | qei.SetDigiFilter(480UL);//filtre |
exarkun | 0:ea04a1655f3b | 975 | qei.SetMaxPosition(0xFFFFFFFF);//position max 4294967295 pulses |
exarkun | 0:ea04a1655f3b | 976 | |
exarkun | 0:ea04a1655f3b | 977 | //initialisation de la com rs232 |
exarkun | 0:ea04a1655f3b | 978 | device.baud(9600);//rs232 28800 baud |
exarkun | 0:ea04a1655f3b | 979 | device.printf("serial rs232 ok \n"); |
exarkun | 0:ea04a1655f3b | 980 | |
exarkun | 0:ea04a1655f3b | 981 | //calculs de tau ,Kv,Kp |
exarkun | 0:ea04a1655f3b | 982 | tau=(J*R)/K; |
exarkun | 0:ea04a1655f3b | 983 | Kv=r1*r2*tau*Ki-1.; |
exarkun | 0:ea04a1655f3b | 984 | if(Kv<0){Kv = -Kv;} |
exarkun | 0:ea04a1655f3b | 985 | Kp=r1*Ki*(1.+Kv)/Kv; |
exarkun | 0:ea04a1655f3b | 986 | |
exarkun | 0:ea04a1655f3b | 987 | //initialisation moteur |
exarkun | 0:ea04a1655f3b | 988 | PWM1.period(0.00005);// initialisation du rapport cyclique fixe la période à 50us----f=20Khz |
exarkun | 0:ea04a1655f3b | 989 | frein_moteur1.write(0);//affectation de la valeur du frein moteur1 |
exarkun | 0:ea04a1655f3b | 990 | sens_rotation_moteur1.write(0); //affectation du sens de rotation moteur1 non utiliser puisque c'est la tache1 qui le fait non pas la generation de trajectoire |
exarkun | 0:ea04a1655f3b | 991 | |
exarkun | 0:ea04a1655f3b | 992 | //initialisation du spi |
exarkun | 0:ea04a1655f3b | 993 | spi1.format(16,3); // Setup: bit data, high steady state clock, 2nd edge capture |
exarkun | 0:ea04a1655f3b | 994 | spi1.frequency(1000000); // 1MHz |
exarkun | 0:ea04a1655f3b | 995 | |
exarkun | 0:ea04a1655f3b | 996 | //lancement des tasks |
exarkun | 0:ea04a1655f3b | 997 | time_up1.attach(&task1_switch, 0.0005);//"calcule de l'asservissement" initialisation du ticker a 2Khz "500us". |
exarkun | 0:ea04a1655f3b | 998 | //time_up2.attach(&task2_switch, 0.05);//"retour d'information position par usb" initialisation du ticker a 100hz "10ms". |
exarkun | 0:ea04a1655f3b | 999 | time_up3.attach(&task3_switch, 0.0005);//"generation trajectoire" initialisation du ticker a 2khz "500us". |
exarkun | 0:ea04a1655f3b | 1000 | //time_up4.attach(&task4_switch, 0.0005);//"retour d'information position par rs232"initialisation du ticker a 100hz "10ms". |
exarkun | 0:ea04a1655f3b | 1001 | //time_up5.attach(&task5_switch, 0.0001);//"lecture et ecriture DATA SPI1 initialisation du ticker 10khz. |
exarkun | 0:ea04a1655f3b | 1002 | |
exarkun | 0:ea04a1655f3b | 1003 | //time_up6.attach(&task6_switch, 0.0005);//initialises the ticker 2kh |
exarkun | 0:ea04a1655f3b | 1004 | time_up7.attach(&task7_switch, 0.0001);//initialises the ticker 2kh |
exarkun | 0:ea04a1655f3b | 1005 | time_up8.attach(&task8_switch, 0.1);//initialises the ticker 2kh |
exarkun | 0:ea04a1655f3b | 1006 | |
exarkun | 0:ea04a1655f3b | 1007 | device.printf("sendme"); |
exarkun | 0:ea04a1655f3b | 1008 | |
exarkun | 0:ea04a1655f3b | 1009 | count_ticks=0; |
exarkun | 0:ea04a1655f3b | 1010 | while(1) |
exarkun | 0:ea04a1655f3b | 1011 | { |
exarkun | 0:ea04a1655f3b | 1012 | |
exarkun | 0:ea04a1655f3b | 1013 | c='0'; |
exarkun | 0:ea04a1655f3b | 1014 | |
exarkun | 0:ea04a1655f3b | 1015 | //c=valueFromMaster;//valeur par la liaison spi par le master |
exarkun | 0:ea04a1655f3b | 1016 | |
exarkun | 0:ea04a1655f3b | 1017 | //device.scanf("%c",&c);//capture du caract ascii |
exarkun | 0:ea04a1655f3b | 1018 | |
exarkun | 0:ea04a1655f3b | 1019 | switch(c)//chargement des wafers dans tete |
exarkun | 0:ea04a1655f3b | 1020 | { |
exarkun | 0:ea04a1655f3b | 1021 | |
exarkun | 0:ea04a1655f3b | 1022 | case 'a': |
exarkun | 0:ea04a1655f3b | 1023 | //qei.Reset(0); |
exarkun | 0:ea04a1655f3b | 1024 | consigne=70000 ; //1 tour |
exarkun | 0:ea04a1655f3b | 1025 | slope_time=3;//t =0.ms |
exarkun | 0:ea04a1655f3b | 1026 | start_slope=true; |
exarkun | 0:ea04a1655f3b | 1027 | wait(4.5); |
exarkun | 0:ea04a1655f3b | 1028 | |
exarkun | 0:ea04a1655f3b | 1029 | consigne=0 ; //1 tour |
exarkun | 0:ea04a1655f3b | 1030 | slope_time=3;//t=ms |
exarkun | 0:ea04a1655f3b | 1031 | start_slope=true; |
exarkun | 0:ea04a1655f3b | 1032 | wait(4.5); |
exarkun | 0:ea04a1655f3b | 1033 | |
exarkun | 0:ea04a1655f3b | 1034 | consigne=-70000 ; //1 tour |
exarkun | 0:ea04a1655f3b | 1035 | slope_time=3;//t=ms |
exarkun | 0:ea04a1655f3b | 1036 | start_slope=true; |
exarkun | 0:ea04a1655f3b | 1037 | wait(4.5); |
exarkun | 0:ea04a1655f3b | 1038 | |
exarkun | 0:ea04a1655f3b | 1039 | consigne=0 ; //1 tour |
exarkun | 0:ea04a1655f3b | 1040 | slope_time=3;//t=ms |
exarkun | 0:ea04a1655f3b | 1041 | start_slope=true; |
exarkun | 0:ea04a1655f3b | 1042 | wait(4.5); |
exarkun | 0:ea04a1655f3b | 1043 | |
exarkun | 0:ea04a1655f3b | 1044 | break; |
exarkun | 0:ea04a1655f3b | 1045 | |
exarkun | 0:ea04a1655f3b | 1046 | case 'b': |
exarkun | 0:ea04a1655f3b | 1047 | //qei.Reset(0); |
exarkun | 0:ea04a1655f3b | 1048 | consigne=100000 ; //1 tour |
exarkun | 0:ea04a1655f3b | 1049 | slope_time=2.5;//t =0.5ms |
exarkun | 0:ea04a1655f3b | 1050 | start_slope=true; |
exarkun | 0:ea04a1655f3b | 1051 | wait(3.5); |
exarkun | 0:ea04a1655f3b | 1052 | |
exarkun | 0:ea04a1655f3b | 1053 | consigne=0 ; //1 tour |
exarkun | 0:ea04a1655f3b | 1054 | slope_time=2.5;//t=1ms |
exarkun | 0:ea04a1655f3b | 1055 | start_slope=true; |
exarkun | 0:ea04a1655f3b | 1056 | wait(3.5); |
exarkun | 0:ea04a1655f3b | 1057 | |
exarkun | 0:ea04a1655f3b | 1058 | break; |
exarkun | 0:ea04a1655f3b | 1059 | |
exarkun | 0:ea04a1655f3b | 1060 | } |
exarkun | 0:ea04a1655f3b | 1061 | |
exarkun | 0:ea04a1655f3b | 1062 | |
exarkun | 0:ea04a1655f3b | 1063 | |
exarkun | 0:ea04a1655f3b | 1064 | |
exarkun | 0:ea04a1655f3b | 1065 | |
exarkun | 0:ea04a1655f3b | 1066 | /*if(device2.readable())//ici on utilise une seconde com rs avec un autre ecrant nextion |
exarkun | 0:ea04a1655f3b | 1067 | { |
exarkun | 0:ea04a1655f3b | 1068 | c2 = device2.getc(); |
exarkun | 0:ea04a1655f3b | 1069 | mRxMsg2[mRxIdx2] = c2; |
exarkun | 0:ea04a1655f3b | 1070 | mRxIdx2++; |
exarkun | 0:ea04a1655f3b | 1071 | if ((mRxIdx2 >= 3) && (mRxMsg2[mRxIdx2-1] == 0xff) && (mRxMsg2[mRxIdx2-2] == 0xff) && (mRxMsg2[mRxIdx2-3] == 0xff)) //valid rx message |
exarkun | 0:ea04a1655f3b | 1072 | { |
exarkun | 0:ea04a1655f3b | 1073 | mRxIdx2=0; |
exarkun | 0:ea04a1655f3b | 1074 | |
exarkun | 0:ea04a1655f3b | 1075 | if(mRxMsg2[0] == 0x67) //Touch coordinate data return |
exarkun | 0:ea04a1655f3b | 1076 | { mTouchX2 = (mRxMsg2[1]*256) + mRxMsg2[2]; |
exarkun | 0:ea04a1655f3b | 1077 | mTouchY2 = (mRxMsg2[3]*256) + mRxMsg2[4]; |
exarkun | 0:ea04a1655f3b | 1078 | if(mRxMsg2[5] == 0x01) |
exarkun | 0:ea04a1655f3b | 1079 | mTouch2 = true; |
exarkun | 0:ea04a1655f3b | 1080 | else |
exarkun | 0:ea04a1655f3b | 1081 | mTouch2 = false; |
exarkun | 0:ea04a1655f3b | 1082 | } |
exarkun | 0:ea04a1655f3b | 1083 | //start switch |
exarkun | 0:ea04a1655f3b | 1084 | if((mRxMsg2[0] == 0x65)&&(mRxMsg2[1] == 0x01)&&(mRxMsg2[2] == 0x01)&&(mRxMsg2[3] == 0x00)) |
exarkun | 0:ea04a1655f3b | 1085 | { |
exarkun | 0:ea04a1655f3b | 1086 | keyboard.printf("t"); |
exarkun | 0:ea04a1655f3b | 1087 | }//uniquement le bouton start allumeras la led 1 en release ---------------SY |
exarkun | 0:ea04a1655f3b | 1088 | |
exarkun | 0:ea04a1655f3b | 1089 | } |
exarkun | 0:ea04a1655f3b | 1090 | }*/ |
exarkun | 0:ea04a1655f3b | 1091 | |
exarkun | 0:ea04a1655f3b | 1092 | //wait(0.05); |
exarkun | 0:ea04a1655f3b | 1093 | } |
exarkun | 0:ea04a1655f3b | 1094 | } |