motor dc driver with lcd nextion nx8048t050_011

Dependencies:   mbed QEI_hw NVIC_set_all_priorities SoftPWM

https://os.mbed.com/media/uploads/exarkun/wp_20180730_002.jpg https://os.mbed.com/media/uploads/exarkun/wp_20180823_003.jpg https://os.mbed.com/media/uploads/exarkun/wp_20180730_007.jpg https://os.mbed.com/media/uploads/exarkun/wp_20171120_004.jpg

https://os.mbed.com/media/uploads/exarkun/wp_20191002_006.jpg https://os.mbed.com/media/uploads/exarkun/wp_20191002_003.jpg https://os.mbed.com/media/uploads/exarkun/wp_20191002_004.jpg https://os.mbed.com/media/uploads/exarkun/wp_20191002_005.jpg https://os.mbed.com/media/uploads/exarkun/wp_20190322_003.jpg https://os.mbed.com/media/uploads/exarkun/wp_20180925_002.jpg https://os.mbed.com/media/uploads/exarkun/wp_20181010_006.jpg https://os.mbed.com/media/uploads/exarkun/wp_20181220_001.jpg

https://os.mbed.com/media/uploads/exarkun/wp_20181220_002.jpg

Committer:
exarkun
Date:
Fri Oct 18 13:14:40 2019 +0000
Revision:
1:2fe82be93e80
Parent:
0:ea04a1655f3b
Child:
2:e72b06f87c8b
dc motor driver with nextion nx8048t050_011

Who changed what in which revision?

UserRevisionLine numberNew 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 1:2fe82be93e80 6 //rajout afficheur nextion nx8048t050_011 ---------( 05 / 10 / 2019 )
exarkun 0:ea04a1655f3b 7
exarkun 0:ea04a1655f3b 8 #include "mbed.h"
exarkun 0:ea04a1655f3b 9 #include "qeihw.h"
exarkun 0:ea04a1655f3b 10 #include "NVIC_set_all_priorities.h"
exarkun 1:2fe82be93e80 11 #include "timer.hpp"
exarkun 1:2fe82be93e80 12 #include "NextionLCD.h"
exarkun 0:ea04a1655f3b 13
exarkun 1:2fe82be93e80 14 //declaration des variables afficheur
exarkun 1:2fe82be93e80 15
exarkun 1:2fe82be93e80 16 #define BLACK 0
exarkun 1:2fe82be93e80 17 #define BLUE 31
exarkun 1:2fe82be93e80 18 #define BROWN 48192
exarkun 1:2fe82be93e80 19 #define GREEN 2016
exarkun 1:2fe82be93e80 20 #define YELLOW 65504
exarkun 1:2fe82be93e80 21 #define RED 63488
exarkun 1:2fe82be93e80 22 #define GRAY 33840
exarkun 1:2fe82be93e80 23 #define WHITE 65535
exarkun 1:2fe82be93e80 24
exarkun 1:2fe82be93e80 25 typedef struct ButtonCommand
exarkun 1:2fe82be93e80 26 {
exarkun 1:2fe82be93e80 27 char IsNewCommandAvailable;
exarkun 1:2fe82be93e80 28 char IsButtonPressed;
exarkun 1:2fe82be93e80 29 char cmdNb;
exarkun 1:2fe82be93e80 30 char buttonId;
exarkun 1:2fe82be93e80 31 char data1;
exarkun 1:2fe82be93e80 32 char data2;
exarkun 1:2fe82be93e80 33 char var1;
exarkun 1:2fe82be93e80 34 }ButtonCommand;
exarkun 1:2fe82be93e80 35
exarkun 1:2fe82be93e80 36 typedef enum
exarkun 1:2fe82be93e80 37 {
exarkun 1:2fe82be93e80 38 ButtonCmd = 0x65,//Touch event return data
exarkun 1:2fe82be93e80 39 PageCmd = 0x66,//Current page ID number returns
exarkun 1:2fe82be93e80 40 TouchCmd = 0x67,//Touch coordinate data return
exarkun 1:2fe82be93e80 41 TouchEentCmd = 0x68,//Touch Event in sleep mode
exarkun 1:2fe82be93e80 42 StringDataCmd = 0x70,//String variable data returns
exarkun 1:2fe82be93e80 43 NumericDataCmd = 0x71,//Numeric variable data returns
exarkun 1:2fe82be93e80 44 SleepModeCmd = 0x86,//Device automatically enters into sleep mode
exarkun 1:2fe82be93e80 45 WakeUpCmd = 0x87,//Device automatically wake up
exarkun 1:2fe82be93e80 46 StartUpCmd = 0x88,//System successful start up
exarkun 1:2fe82be93e80 47 StartSDCmd = 0x89,//Start SD card upgrade
exarkun 1:2fe82be93e80 48 DataTTRCmd = 0xfe,//Data transparent transmit ready
exarkun 1:2fe82be93e80 49
exarkun 1:2fe82be93e80 50 }CommandNb;
exarkun 1:2fe82be93e80 51
exarkun 1:2fe82be93e80 52 typedef enum
exarkun 1:2fe82be93e80 53 {
exarkun 1:2fe82be93e80 54 Page0 = 0x00,
exarkun 1:2fe82be93e80 55 Page1 = 0x01,
exarkun 1:2fe82be93e80 56 Page2 = 0x02,
exarkun 1:2fe82be93e80 57 Page3 = 0x03,
exarkun 1:2fe82be93e80 58 Page4 = 0x04,
exarkun 1:2fe82be93e80 59 Page5 = 0x05,
exarkun 1:2fe82be93e80 60 Page6 = 0x06,
exarkun 1:2fe82be93e80 61 Page7 = 0x07,
exarkun 1:2fe82be93e80 62 }PageNb;
exarkun 1:2fe82be93e80 63
exarkun 1:2fe82be93e80 64 typedef enum
exarkun 1:2fe82be93e80 65 {
exarkun 1:2fe82be93e80 66 Invalid_instruction = 0x0,
exarkun 1:2fe82be93e80 67 Successful_execution_of_instruction = 0x01,
exarkun 1:2fe82be93e80 68 Page_ID_invalid = 0x03,
exarkun 1:2fe82be93e80 69 Picture_ID_invalid = 0x04,
exarkun 1:2fe82be93e80 70 Font_ID_invalid = 0x05,
exarkun 1:2fe82be93e80 71 Baud_rate_setting_invalid = 0x11,
exarkun 1:2fe82be93e80 72 Curve_control_ID_number_or_channel_number_is_invalid = 0x12,
exarkun 1:2fe82be93e80 73 Variable_name_invalid = 0x1a,
exarkun 1:2fe82be93e80 74 Variable_operation_invalid = 0x1b,
exarkun 1:2fe82be93e80 75 Failed_to_assign = 0x1c,
exarkun 1:2fe82be93e80 76 Operate_PERFROM_failed = 0x1d,
exarkun 1:2fe82be93e80 77 Parameter_quantity_invalid = 0x1e,
exarkun 1:2fe82be93e80 78 IO_operate_failed = 0x1f,
exarkun 1:2fe82be93e80 79
exarkun 1:2fe82be93e80 80 }ErrorNb;
exarkun 1:2fe82be93e80 81
exarkun 1:2fe82be93e80 82 ButtonCommand buttonCmd;
exarkun 1:2fe82be93e80 83 char Cmd;
exarkun 1:2fe82be93e80 84 bool newCmdAvailable = false;
exarkun 1:2fe82be93e80 85 PageNb CurrentPageNb = Page0;
exarkun 1:2fe82be93e80 86
exarkun 0:ea04a1655f3b 87 // déclaration du hardware
exarkun 0:ea04a1655f3b 88 Serial pc(USBTX, USBRX);//utilisation de la liaison usb
exarkun 0:ea04a1655f3b 89
exarkun 0:ea04a1655f3b 90 QEIHW qei(QEI_DIRINV_NONE, QEI_SIGNALMODE_QUAD, QEI_CAPMODE_4X, QEI_INVINX_NONE );
exarkun 0:ea04a1655f3b 91
exarkun 0:ea04a1655f3b 92 Serial device(p9, p10);// tx, rx.//definition de la liaison rs232
exarkun 0:ea04a1655f3b 93
exarkun 0:ea04a1655f3b 94 DigitalOut frein_moteur1(p15); //changement momentané pour le projet r2d de p5 a p15
exarkun 0:ea04a1655f3b 95
exarkun 0:ea04a1655f3b 96 DigitalOut sens_rotation_moteur1(p13);
exarkun 0:ea04a1655f3b 97
exarkun 0:ea04a1655f3b 98 PwmOut PWM1(p21);
exarkun 0:ea04a1655f3b 99
exarkun 0:ea04a1655f3b 100 SPISlave spi1(p5, p6, p7, p8); // mosi, miso, sclk, ssel
exarkun 0:ea04a1655f3b 101
exarkun 1:2fe82be93e80 102 AnalogIn Ain(p20);
exarkun 0:ea04a1655f3b 103
exarkun 0:ea04a1655f3b 104 // définition des timers.
exarkun 1:2fe82be93e80 105 //Timer timer1;
exarkun 0:ea04a1655f3b 106 Timer timer2;
exarkun 0:ea04a1655f3b 107
exarkun 0:ea04a1655f3b 108 //definition spi1
exarkun 0:ea04a1655f3b 109 int reply = 0xAAAA;// en bin "1010101010101010"
exarkun 0:ea04a1655f3b 110 int valueFromMaster;
exarkun 0:ea04a1655f3b 111
exarkun 0:ea04a1655f3b 112 int Spi_val_RX[10]={0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000};//buffer reception données SPI
exarkun 0:ea04a1655f3b 113 int Spi_val_TX[10]={0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000};//buffer transmission données SPI
exarkun 0:ea04a1655f3b 114
exarkun 0:ea04a1655f3b 115 // définition des sorties leds
exarkun 0:ea04a1655f3b 116 DigitalOut led1(LED1);
exarkun 0:ea04a1655f3b 117 DigitalOut led3(LED3);
exarkun 0:ea04a1655f3b 118
exarkun 0:ea04a1655f3b 119 char c ;
exarkun 0:ea04a1655f3b 120 int t ;
exarkun 0:ea04a1655f3b 121 int x=0 ;
exarkun 0:ea04a1655f3b 122
exarkun 0:ea04a1655f3b 123 float PI=3.141592653589793;
exarkun 0:ea04a1655f3b 124
exarkun 0:ea04a1655f3b 125 //vitesse moteur
exarkun 0:ea04a1655f3b 126 int vitesse_actuelle;
exarkun 0:ea04a1655f3b 127
exarkun 0:ea04a1655f3b 128 //position codeur en pulses 2000pulses/rotation
exarkun 0:ea04a1655f3b 129 int position_actuelle;//position du codeur
exarkun 0:ea04a1655f3b 130 int position_actuelle_n1;//position du codeur a n-1
exarkun 0:ea04a1655f3b 131
exarkun 0:ea04a1655f3b 132 //données mecanique & moteur
exarkun 0:ea04a1655f3b 133 float J=3.375*1e-5;//0.005;//inertie en kg.m²
exarkun 0:ea04a1655f3b 134 float K=0.05;//2;//constante de couple N.m/v
exarkun 0:ea04a1655f3b 135 float R=5;//K;//resistance du moteur en Ohms
exarkun 0:ea04a1655f3b 136 float Umax=24;//24vdc tension max en volts
exarkun 0:ea04a1655f3b 137
exarkun 0:ea04a1655f3b 138 //parametres reglage
exarkun 0:ea04a1655f3b 139 float dt_vit(5*1e-4);
exarkun 0:ea04a1655f3b 140 float Ki=12;//default value=10;
exarkun 0:ea04a1655f3b 141 float Kp;
exarkun 0:ea04a1655f3b 142 float Kv;
exarkun 0:ea04a1655f3b 143 float K_sw(K);
exarkun 0:ea04a1655f3b 144 float tau;
exarkun 0:ea04a1655f3b 145 float taud=(10*dt_vit);
exarkun 0:ea04a1655f3b 146 float r1=3;//default value=2.5;derniere valeur =3
exarkun 0:ea04a1655f3b 147 float r2=r1;//default value=2.5;
exarkun 0:ea04a1655f3b 148
exarkun 0:ea04a1655f3b 149 //variables generateur de consigne///////////////////////////////////////////////////////////////////////////////////////////
exarkun 0:ea04a1655f3b 150 float Teta_debut, Teta_fin, Teta_diff;
exarkun 0:ea04a1655f3b 151 float delta_Teta;
exarkun 0:ea04a1655f3b 152 float consigne;//en pulse
exarkun 0:ea04a1655f3b 153 float slope_time(1.);//en seconde
exarkun 0:ea04a1655f3b 154 bool start_slope(false);//flag debut de montee
exarkun 0:ea04a1655f3b 155 int ticks_total;
exarkun 0:ea04a1655f3b 156 int count_ticks;
exarkun 0:ea04a1655f3b 157 int count_slope(0);
exarkun 0:ea04a1655f3b 158 int count_max(0);
exarkun 0:ea04a1655f3b 159
exarkun 0:ea04a1655f3b 160 //variables calcul de l'asservissement en vitesse et position
exarkun 0:ea04a1655f3b 161 float Tetaco; //valeur de la consigne position en radians
exarkun 0:ea04a1655f3b 162 float Tetam;//valeur mesuree de la position en radians
exarkun 0:ea04a1655f3b 163
exarkun 0:ea04a1655f3b 164 float dTetam;
exarkun 0:ea04a1655f3b 165 float integ;
exarkun 0:ea04a1655f3b 166 float A;
exarkun 0:ea04a1655f3b 167
exarkun 0:ea04a1655f3b 168 float dTetam_n1;
exarkun 0:ea04a1655f3b 169 float Tetaco_n1;
exarkun 0:ea04a1655f3b 170 float Tetam_n1;
exarkun 0:ea04a1655f3b 171 float integ_n1;
exarkun 0:ea04a1655f3b 172 float cyclic;
exarkun 0:ea04a1655f3b 173 int signe_rot;
exarkun 0:ea04a1655f3b 174
exarkun 0:ea04a1655f3b 175 //variable ADC
exarkun 0:ea04a1655f3b 176 float ADCdata;
exarkun 0:ea04a1655f3b 177 float imax=1.8;
exarkun 0:ea04a1655f3b 178
exarkun 0:ea04a1655f3b 179 //declaration des differantes taches
exarkun 0:ea04a1655f3b 180 void task1_switch(void);
exarkun 0:ea04a1655f3b 181 void task2_switch(void);
exarkun 0:ea04a1655f3b 182 void task3_switch(void);
exarkun 0:ea04a1655f3b 183 void task4_switch(void);
exarkun 0:ea04a1655f3b 184 void task5_switch(void);
exarkun 0:ea04a1655f3b 185 void task6_switch(void);
exarkun 0:ea04a1655f3b 186 void task7_switch(void);
exarkun 0:ea04a1655f3b 187 void task8_switch(void);
exarkun 0:ea04a1655f3b 188
exarkun 0:ea04a1655f3b 189 //declaration des differantes interuption timer
exarkun 0:ea04a1655f3b 190 Ticker time_up1; //definition du Ticker, avec le nom “time_up1”
exarkun 0:ea04a1655f3b 191 Ticker time_up2; //definition du Ticker, avec le nom “time_up2”
exarkun 0:ea04a1655f3b 192 Ticker time_up3; //definition du Ticker, avec le nom “time_up3”
exarkun 0:ea04a1655f3b 193 Ticker time_up4; //definition du Ticker, avec le nom “time_up4”
exarkun 0:ea04a1655f3b 194 Ticker time_up5; //definition du Ticker, avec le nom_up5”
exarkun 0:ea04a1655f3b 195 Ticker time_up6; //definition du Ticker, avec le nom_up6”
exarkun 0:ea04a1655f3b 196 Ticker time_up7; //definition du Ticker, avec le nom “time_up7”
exarkun 0:ea04a1655f3b 197 Ticker time_up8; //definition du Ticker, avec le nom “time_up8”
exarkun 0:ea04a1655f3b 198
exarkun 0:ea04a1655f3b 199 //declaration des leds visuelle utiliser pour mesurer le temps des taches
exarkun 0:ea04a1655f3b 200 DigitalOut myled1(LED1);
exarkun 0:ea04a1655f3b 201 DigitalOut myled3(LED3);
exarkun 0:ea04a1655f3b 202
exarkun 0:ea04a1655f3b 203 //declaration des variables afficheur
exarkun 0:ea04a1655f3b 204 char mRxMsg[40];
exarkun 0:ea04a1655f3b 205 int mRxIdx;
exarkun 0:ea04a1655f3b 206 char charac;
exarkun 0:ea04a1655f3b 207 bool mTouch;
exarkun 0:ea04a1655f3b 208 int mTouchX, mTouchY;
exarkun 0:ea04a1655f3b 209
exarkun 0:ea04a1655f3b 210 int val_temp;//valleur temporaire
exarkun 0:ea04a1655f3b 211 int val_temp1;//valleur temporaire
exarkun 0:ea04a1655f3b 212
exarkun 0:ea04a1655f3b 213 ////////////////////////////////////////////////////////////
exarkun 0:ea04a1655f3b 214 // fonction affichage sur nextion //
exarkun 0:ea04a1655f3b 215 ////////////////////////////////////////////////////////////
exarkun 0:ea04a1655f3b 216
exarkun 0:ea04a1655f3b 217 bool Touch(void) {
exarkun 0:ea04a1655f3b 218 return mTouch;
exarkun 0:ea04a1655f3b 219 }
exarkun 0:ea04a1655f3b 220
exarkun 0:ea04a1655f3b 221 int TouchX(void) {
exarkun 0:ea04a1655f3b 222 return mTouchX;
exarkun 0:ea04a1655f3b 223 }
exarkun 0:ea04a1655f3b 224
exarkun 0:ea04a1655f3b 225 int TouchY(void) {
exarkun 0:ea04a1655f3b 226 return mTouchY;
exarkun 0:ea04a1655f3b 227 }
exarkun 0:ea04a1655f3b 228
exarkun 0:ea04a1655f3b 229 bool lectureRSlcd(void)
exarkun 0:ea04a1655f3b 230 {
exarkun 0:ea04a1655f3b 231 if(device.readable())
exarkun 0:ea04a1655f3b 232 {
exarkun 0:ea04a1655f3b 233 charac = device.getc();
exarkun 0:ea04a1655f3b 234 mRxMsg[mRxIdx] = charac;
exarkun 0:ea04a1655f3b 235 mRxIdx++;
exarkun 0:ea04a1655f3b 236 if ((mRxIdx >= 3) && (mRxMsg[mRxIdx-1] == 0xff) && (mRxMsg[mRxIdx-2] == 0xff) && (mRxMsg[mRxIdx-3] == 0xff)) //valid rx message
exarkun 0:ea04a1655f3b 237 {
exarkun 0:ea04a1655f3b 238 mRxIdx=0;
exarkun 0:ea04a1655f3b 239
exarkun 0:ea04a1655f3b 240 if(mRxMsg[0] == 0x67) //Touch coordinate data return
exarkun 0:ea04a1655f3b 241 { mTouchX = (mRxMsg[1]*256) + mRxMsg[2];
exarkun 0:ea04a1655f3b 242 mTouchY = (mRxMsg[3]*256) + mRxMsg[4];
exarkun 0:ea04a1655f3b 243 if(mRxMsg[5] == 0x01)
exarkun 0:ea04a1655f3b 244 mTouch = true;
exarkun 0:ea04a1655f3b 245 else
exarkun 0:ea04a1655f3b 246 mTouch = false;
exarkun 0:ea04a1655f3b 247 }
exarkun 0:ea04a1655f3b 248 }
exarkun 0:ea04a1655f3b 249 }
exarkun 0:ea04a1655f3b 250 return mTouch;
exarkun 0:ea04a1655f3b 251 }
exarkun 0:ea04a1655f3b 252
exarkun 0:ea04a1655f3b 253 //lecture de la donnée val d une reponse de sliders
exarkun 0:ea04a1655f3b 254 int lecture_slider_RS_lcd(void)
exarkun 0:ea04a1655f3b 255 {
exarkun 0:ea04a1655f3b 256 if(device.readable())
exarkun 0:ea04a1655f3b 257 {
exarkun 0:ea04a1655f3b 258 charac = device.getc();
exarkun 0:ea04a1655f3b 259 mRxMsg[mRxIdx] = charac;
exarkun 0:ea04a1655f3b 260 mRxIdx++;
exarkun 0:ea04a1655f3b 261 if ((mRxIdx >= 3) && (mRxMsg[mRxIdx-1] == 0xff) && (mRxMsg[mRxIdx-2] == 0xff) && (mRxMsg[mRxIdx-3] == 0xff)) //valid rx message
exarkun 0:ea04a1655f3b 262 {
exarkun 0:ea04a1655f3b 263 mRxIdx=0;
exarkun 0:ea04a1655f3b 264
exarkun 0:ea04a1655f3b 265 if(mRxMsg[0] == 0x71) //sliders data return
exarkun 0:ea04a1655f3b 266 {
exarkun 0:ea04a1655f3b 267 val_temp=mRxMsg[1];
exarkun 0:ea04a1655f3b 268
exarkun 0:ea04a1655f3b 269 }
exarkun 0:ea04a1655f3b 270 }
exarkun 0:ea04a1655f3b 271 }
exarkun 0:ea04a1655f3b 272 return val_temp;
exarkun 0:ea04a1655f3b 273 }
exarkun 0:ea04a1655f3b 274
exarkun 0:ea04a1655f3b 275 //recuperation de la valeur val du sliders h0
exarkun 1:2fe82be93e80 276 //example : get_val(0);
exarkun 0:ea04a1655f3b 277 void get_val(int n)
exarkun 0:ea04a1655f3b 278 {
exarkun 0:ea04a1655f3b 279 device.printf("get h%d.val %c%c%c",n, 0xff, 0xff, 0xff);//recuperation de la valeur val du sliders h0
exarkun 0:ea04a1655f3b 280 }
exarkun 0:ea04a1655f3b 281 //fonction general recuperation de la valeur val de h0
exarkun 0:ea04a1655f3b 282 void get_val_h0()
exarkun 0:ea04a1655f3b 283 {
exarkun 0:ea04a1655f3b 284 device.printf("get h0.val %c%c%c", 0xff, 0xff, 0xff);//recuperation de la valeur val du sliders h0
exarkun 0:ea04a1655f3b 285 }
exarkun 0:ea04a1655f3b 286
exarkun 0:ea04a1655f3b 287 ////////////////////////////////////////
exarkun 0:ea04a1655f3b 288 // Convertion pulses to radians //
exarkun 0:ea04a1655f3b 289 ////////////////////////////////////////
exarkun 0:ea04a1655f3b 290
exarkun 0:ea04a1655f3b 291 //PI =3.141592653589793 =1000 pulses codeurs
exarkun 0:ea04a1655f3b 292 float pulsesToRadians(int pulses)
exarkun 0:ea04a1655f3b 293 {
exarkun 0:ea04a1655f3b 294 float radians_VAL;
exarkun 0:ea04a1655f3b 295 radians_VAL=(pulses*PI)/1000.;
exarkun 0:ea04a1655f3b 296 return radians_VAL;
exarkun 0:ea04a1655f3b 297 };
exarkun 0:ea04a1655f3b 298
exarkun 0:ea04a1655f3b 299 ////////////////////////////////////////
exarkun 0:ea04a1655f3b 300 // calcule de la vitesse angulaire //
exarkun 0:ea04a1655f3b 301 ////////////////////////////////////////
exarkun 0:ea04a1655f3b 302
exarkun 0:ea04a1655f3b 303 // ici le code du calcule pas encore fait !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
exarkun 0:ea04a1655f3b 304
exarkun 0:ea04a1655f3b 305 // Convert ASCII string to unsigned 32-bit decimal "string is null-terminated"
exarkun 0:ea04a1655f3b 306 unsigned long Str2UDec(unsigned char string[]){
exarkun 0:ea04a1655f3b 307 unsigned long i = 0; // index
exarkun 0:ea04a1655f3b 308 unsigned long n = 0; // number
exarkun 0:ea04a1655f3b 309 while(string[i] != 0){
exarkun 0:ea04a1655f3b 310 n = 10*n +(string[i]-0x30);
exarkun 0:ea04a1655f3b 311 i++;
exarkun 0:ea04a1655f3b 312 }
exarkun 0:ea04a1655f3b 313 return n;
exarkun 0:ea04a1655f3b 314 }
exarkun 0:ea04a1655f3b 315
exarkun 0:ea04a1655f3b 316 /////////////////////////////////////////////////////////////////////////////
exarkun 0:ea04a1655f3b 317 // declaration de la fonction moteur1 //
exarkun 0:ea04a1655f3b 318 /////////////////////////////////////////////////////////////////////////////
exarkun 0:ea04a1655f3b 319
exarkun 0:ea04a1655f3b 320 void motor1_mouve(int position1,int T1,int position2,int T2,int position3,int T3)
exarkun 0:ea04a1655f3b 321 {
exarkun 0:ea04a1655f3b 322
exarkun 0:ea04a1655f3b 323 /////////////////////////////////////////////////////////////////////
exarkun 0:ea04a1655f3b 324 // mouvement trapezoide non tésté //
exarkun 0:ea04a1655f3b 325 /////////////////////////////////////////////////////////////////////
exarkun 1:2fe82be93e80 326 /*
exarkun 0:ea04a1655f3b 327 timer1.start(); // déclenchement du timer1
exarkun 0:ea04a1655f3b 328 timer2.start(); // déclenchement du timer2
exarkun 0:ea04a1655f3b 329 //ACC
exarkun 0:ea04a1655f3b 330 consigne=position1 ;
exarkun 0:ea04a1655f3b 331 slope_time=T1;
exarkun 0:ea04a1655f3b 332 start_slope=true;
exarkun 0:ea04a1655f3b 333 //do{} while (timer1.read_ms()!=T1);
exarkun 0:ea04a1655f3b 334 do{} while (timer1.read_ms()<T1);
exarkun 0:ea04a1655f3b 335 if (timer1.read_ms()>T1) // lecture du temps du timer1 en ms
exarkun 0:ea04a1655f3b 336 {
exarkun 0:ea04a1655f3b 337 //device.printf("TIME out T1 ms \r\n");
exarkun 0:ea04a1655f3b 338 device.printf("t0.txt=\"time1out\"%c%c%c", 0xff, 0xff, 0xff);
exarkun 0:ea04a1655f3b 339 }
exarkun 0:ea04a1655f3b 340
exarkun 0:ea04a1655f3b 341 timer1.reset(); // remise à zéro du timer1
exarkun 0:ea04a1655f3b 342 //vmax
exarkun 0:ea04a1655f3b 343 timer1.start(); // déclenchement du timer1
exarkun 0:ea04a1655f3b 344 consigne=position2 ;
exarkun 0:ea04a1655f3b 345 slope_time=T2;
exarkun 0:ea04a1655f3b 346 start_slope=true;
exarkun 0:ea04a1655f3b 347 //do{} while (timer1.read_ms()!=T2);
exarkun 0:ea04a1655f3b 348 do{} while (timer1.read_ms()<T2);
exarkun 0:ea04a1655f3b 349 if (timer1.read_ms()>T2) // lecture du temps du timer1 en ms
exarkun 0:ea04a1655f3b 350 {
exarkun 0:ea04a1655f3b 351 //device.printf("TIME out T2 ms \r\n");
exarkun 0:ea04a1655f3b 352 device.printf("t0.txt=\"time2out\"%c%c%c", 0xff, 0xff, 0xff);
exarkun 0:ea04a1655f3b 353 }
exarkun 0:ea04a1655f3b 354 timer1.reset(); // remise à zéro du timer1
exarkun 0:ea04a1655f3b 355 //DCC
exarkun 0:ea04a1655f3b 356 timer1.start(); // déclenchement du timer1
exarkun 0:ea04a1655f3b 357 consigne=position3 ;
exarkun 0:ea04a1655f3b 358 slope_time=T3;
exarkun 0:ea04a1655f3b 359 start_slope=true;
exarkun 0:ea04a1655f3b 360 //do{} while (timer1.read_ms()!=T3);
exarkun 0:ea04a1655f3b 361 do{} while (timer1.read_ms()<T3);
exarkun 0:ea04a1655f3b 362 if (timer1.read_ms()>T3) // lecture du temps du timer1 en ms
exarkun 0:ea04a1655f3b 363 {
exarkun 0:ea04a1655f3b 364 //device.printf("TIME out T3 ms \r\n");
exarkun 0:ea04a1655f3b 365 device.printf("t0.txt=\"time3out\"%c%c%c", 0xff, 0xff, 0xff);
exarkun 0:ea04a1655f3b 366 }
exarkun 0:ea04a1655f3b 367 timer1.reset(); // remise à zéro du timer1
exarkun 0:ea04a1655f3b 368
exarkun 0:ea04a1655f3b 369 if (timer2.read_ms()>(T1+T2+T3)) // lecture du temps du timer1 en ms
exarkun 0:ea04a1655f3b 370 {
exarkun 0:ea04a1655f3b 371 //device.printf("TIME out motor \r\n");
exarkun 0:ea04a1655f3b 372 device.printf("t0.txt=\"timeMout\"%c%c%c", 0xff, 0xff, 0xff);
exarkun 0:ea04a1655f3b 373 }
exarkun 0:ea04a1655f3b 374
exarkun 0:ea04a1655f3b 375 timer2.reset(); // remise à zéro du timer2
exarkun 1:2fe82be93e80 376 */
exarkun 0:ea04a1655f3b 377 };
exarkun 0:ea04a1655f3b 378
exarkun 0:ea04a1655f3b 379 //////////////////////////////////////////////////////////////////////////////////////////
exarkun 0:ea04a1655f3b 380 // declaration des differantes pages //
exarkun 0:ea04a1655f3b 381 //////////////////////////////////////////////////////////////////////////////////////////
exarkun 0:ea04a1655f3b 382
exarkun 0:ea04a1655f3b 383 void page0()//code de la page : 6600ffffff
exarkun 0:ea04a1655f3b 384 {
exarkun 0:ea04a1655f3b 385
exarkun 0:ea04a1655f3b 386 //device.printf("cls RED %c%c%c", 0xff, 0xff, 0xff); //clear screen color red fonnctionne pas ??
exarkun 0:ea04a1655f3b 387 //device.printf("rest%c%c%c", 0xff, 0xff, 0xff);//y as un bug toute les commande prochine fonctionne plus ???
exarkun 0:ea04a1655f3b 388 //wait_ms(10);
exarkun 0:ea04a1655f3b 389
exarkun 0:ea04a1655f3b 390 //device.printf("page %d%c%c%c",0x0, 0xff, 0xff, 0xff);// saut a la page0------sy
exarkun 1:2fe82be93e80 391 //wait_ms(10);
exarkun 1:2fe82be93e80 392 device.printf("t0.txt=\"position\"%c%c%c", 0xff, 0xff, 0xff);//affiche la version soft -------sy
exarkun 1:2fe82be93e80 393 device.printf("t6.txt=\"soft V0.014\"%c%c%c", 0xff, 0xff, 0xff);//affiche la version soft -------sy
exarkun 1:2fe82be93e80 394 //wait_ms(5);
exarkun 0:ea04a1655f3b 395 device.printf("b13.txt=\"flyready\"%c%c%c", 0xff, 0xff, 0xff);//affiche la version soft -------sy
exarkun 1:2fe82be93e80 396 //wait_ms(5);
exarkun 0:ea04a1655f3b 397 device.printf("b12.txt=\"BREAK\"%c%c%c", 0xff, 0xff, 0xff);//affiche la version soft -------sy
exarkun 1:2fe82be93e80 398 //wait_ms(5);
exarkun 0:ea04a1655f3b 399 device.printf("b11.txt=\"LANDING\"%c%c%c", 0xff, 0xff, 0xff);//affiche la version soft -------sy
exarkun 1:2fe82be93e80 400 //wait_ms(5);
exarkun 0:ea04a1655f3b 401 device.printf("b21.txt=\"Quantum\"%c%c%c", 0xff, 0xff, 0xff);//affiche la version soft -------sy
exarkun 1:2fe82be93e80 402 //wait_ms(5);
exarkun 0:ea04a1655f3b 403
exarkun 0:ea04a1655f3b 404 device.printf("b18.txt=\"Speed M\"%c%c%c", 0xff, 0xff, 0xff);//affiche la version soft -------sy
exarkun 1:2fe82be93e80 405 //wait_ms(5);
exarkun 0:ea04a1655f3b 406 device.printf("b19.txt=\"couple M\"%c%c%c", 0xff, 0xff, 0xff);//affiche la version soft -------sy
exarkun 1:2fe82be93e80 407 //wait_ms(5);
exarkun 0:ea04a1655f3b 408 device.printf("b20.txt=\"Afterburner\"%c%c%c", 0xff, 0xff, 0xff);//affiche la version soft -------sy
exarkun 1:2fe82be93e80 409 //wait_ms(5);
exarkun 0:ea04a1655f3b 410
exarkun 0:ea04a1655f3b 411 //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 412 //wait_ms(10);
exarkun 0:ea04a1655f3b 413 //device.printf("ref b0%c%c%c", 0xff, 0xff, 0xff);//rafrechir b0--------------sy
exarkun 0:ea04a1655f3b 414
exarkun 0:ea04a1655f3b 415 //wait_ms(10);
exarkun 0:ea04a1655f3b 416
exarkun 0:ea04a1655f3b 417 /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
exarkun 0:ea04a1655f3b 418 //FLY READY switch
exarkun 0:ea04a1655f3b 419 if((mRxMsg[0] == 0x65)&&(mRxMsg[1] == 0x00)&&(mRxMsg[2] == 0x19)&&(mRxMsg[3] == 0x01))
exarkun 1:2fe82be93e80 420 { myled3=1;
exarkun 0:ea04a1655f3b 421 //keyboard.printf("r");//flight ready
exarkun 0:ea04a1655f3b 422 }//uniquement le bouton allumeras la led 1 en release ---------------SY
exarkun 0:ea04a1655f3b 423 /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
exarkun 0:ea04a1655f3b 424 //space break switch
exarkun 0:ea04a1655f3b 425 if((mRxMsg[0] == 0x65)&&(mRxMsg[1] == 0x00)&&(mRxMsg[2] == 0x18)&&(mRxMsg[3] == 0x01))//press
exarkun 0:ea04a1655f3b 426 {myled3=1;
exarkun 0:ea04a1655f3b 427 //keyboard.printf("x");//spacebreak
exarkun 0:ea04a1655f3b 428 //wait(0.5);
exarkun 0:ea04a1655f3b 429 while (mRxMsg[3]!=0x00)
exarkun 0:ea04a1655f3b 430 {
exarkun 0:ea04a1655f3b 431 //lectureRSlcd();
exarkun 0:ea04a1655f3b 432 //keyboard.printf("x");//spacebreak
exarkun 0:ea04a1655f3b 433 //wait(0.035);
exarkun 0:ea04a1655f3b 434 }
exarkun 0:ea04a1655f3b 435 }//uniquement le bouton allumeras la led 2 en press event ---------------SY
exarkun 0:ea04a1655f3b 436 /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
exarkun 0:ea04a1655f3b 437 //LANDING switch
exarkun 0:ea04a1655f3b 438 if((mRxMsg[0] == 0x65)&&(mRxMsg[1] == 0x00)&&(mRxMsg[2] == 0x17)&&(mRxMsg[3] == 0x01))
exarkun 1:2fe82be93e80 439 {myled3=1;
exarkun 0:ea04a1655f3b 440 //keyboard.printf("n");//landing mode
exarkun 0:ea04a1655f3b 441 }//uniquement le bouton home allumeras la led 3 en release ---------------SY
exarkun 0:ea04a1655f3b 442
exarkun 0:ea04a1655f3b 443 /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
exarkun 0:ea04a1655f3b 444 //strafe up switch
exarkun 0:ea04a1655f3b 445 if((mRxMsg[0] == 0x65)&&(mRxMsg[1] == 0x00)&&(mRxMsg[2] == 0x13)&&(mRxMsg[3] == 0x01))//press
exarkun 0:ea04a1655f3b 446 {myled3=1;
exarkun 0:ea04a1655f3b 447 //keyboard.printf(" ");//strafe up
exarkun 0:ea04a1655f3b 448 //wait(0.5);
exarkun 0:ea04a1655f3b 449 while (mRxMsg[3]!=0x00)
exarkun 0:ea04a1655f3b 450 {
exarkun 0:ea04a1655f3b 451 //lectureRSlcd();
exarkun 0:ea04a1655f3b 452 //keyboard.printf(" ");//strafe up
exarkun 0:ea04a1655f3b 453 //wait(0.035);
exarkun 0:ea04a1655f3b 454 }
exarkun 0:ea04a1655f3b 455
exarkun 0:ea04a1655f3b 456 }//uniquement le bouton allumeras la led 4 en release ---------------SY
exarkun 0:ea04a1655f3b 457
exarkun 0:ea04a1655f3b 458 /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
exarkun 0:ea04a1655f3b 459 //strafe down switch
exarkun 0:ea04a1655f3b 460 if((mRxMsg[0] == 0x65)&&(mRxMsg[1] == 0x00)&&(mRxMsg[2] == 0x14)&&(mRxMsg[3] == 0x01))//press
exarkun 0:ea04a1655f3b 461 {myled3=1;
exarkun 0:ea04a1655f3b 462 //keyboard.keyCode(KEY_CTRL);//strafe down
exarkun 0:ea04a1655f3b 463 //wait(0.5);
exarkun 0:ea04a1655f3b 464 while (mRxMsg[3]!=0x00)
exarkun 0:ea04a1655f3b 465 {
exarkun 0:ea04a1655f3b 466 //lectureRSlcd();
exarkun 0:ea04a1655f3b 467 //keyboard.keyCode(KEY_CTRL);//strafe down
exarkun 0:ea04a1655f3b 468 //wait(0.035);
exarkun 0:ea04a1655f3b 469 }
exarkun 0:ea04a1655f3b 470
exarkun 0:ea04a1655f3b 471 }//uniquement le bouton allumeras la led 4 en release ---------------SY
exarkun 0:ea04a1655f3b 472
exarkun 0:ea04a1655f3b 473 /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
exarkun 0:ea04a1655f3b 474 //forward switch
exarkun 0:ea04a1655f3b 475 if((mRxMsg[0] == 0x65)&&(mRxMsg[1] == 0x00)&&(mRxMsg[2] == 0x02)&&(mRxMsg[3] == 0x01))//press
exarkun 0:ea04a1655f3b 476 {myled3=1;
exarkun 0:ea04a1655f3b 477 //keyboard.printf("w");//vers l'avant
exarkun 0:ea04a1655f3b 478 //wait(0.5);
exarkun 0:ea04a1655f3b 479
exarkun 0:ea04a1655f3b 480 while (mRxMsg[3]!=0x00)
exarkun 0:ea04a1655f3b 481 {
exarkun 0:ea04a1655f3b 482 //lectureRSlcd();
exarkun 0:ea04a1655f3b 483 //keyboard.printf("w");//vers l'avant
exarkun 0:ea04a1655f3b 484 //wait(0.035);
exarkun 0:ea04a1655f3b 485 }
exarkun 0:ea04a1655f3b 486
exarkun 0:ea04a1655f3b 487 }//uniquement le bouton allumeras la led 4 en release ---------------SY
exarkun 0:ea04a1655f3b 488
exarkun 0:ea04a1655f3b 489 /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
exarkun 0:ea04a1655f3b 490 //rearward switch
exarkun 0:ea04a1655f3b 491 if((mRxMsg[0] == 0x65)&&(mRxMsg[1] == 0x00)&&(mRxMsg[2] == 0x01)&&(mRxMsg[3] == 0x01))//press
exarkun 0:ea04a1655f3b 492 {myled3=1;
exarkun 0:ea04a1655f3b 493 //keyboard.printf("s");//vers l arriere
exarkun 0:ea04a1655f3b 494 //wait(0.5);
exarkun 0:ea04a1655f3b 495
exarkun 0:ea04a1655f3b 496 while (mRxMsg[3]!=0x00)
exarkun 0:ea04a1655f3b 497 {
exarkun 0:ea04a1655f3b 498 //lectureRSlcd();
exarkun 0:ea04a1655f3b 499 //keyboard.printf("s");//vers l arriere
exarkun 0:ea04a1655f3b 500 //wait(0.035);
exarkun 0:ea04a1655f3b 501 }
exarkun 0:ea04a1655f3b 502
exarkun 0:ea04a1655f3b 503 }//uniquement le bouton allumeras la led 4 en release ---------------SY
exarkun 0:ea04a1655f3b 504
exarkun 0:ea04a1655f3b 505 /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
exarkun 0:ea04a1655f3b 506 //Right switch
exarkun 0:ea04a1655f3b 507 if((mRxMsg[0] == 0x65)&&(mRxMsg[1] == 0x00)&&(mRxMsg[2] == 0x03)&&(mRxMsg[3] == 0x01))//press
exarkun 0:ea04a1655f3b 508 {myled3=1;
exarkun 0:ea04a1655f3b 509 //keyboard.printf("d");//vers la droite
exarkun 0:ea04a1655f3b 510 //wait(0.5);
exarkun 0:ea04a1655f3b 511
exarkun 0:ea04a1655f3b 512 while (mRxMsg[3]!=0x00)
exarkun 0:ea04a1655f3b 513 {
exarkun 0:ea04a1655f3b 514 //lectureRSlcd();
exarkun 0:ea04a1655f3b 515 //keyboard.printf("d");//vers la droite
exarkun 0:ea04a1655f3b 516 //wait(0.035);
exarkun 0:ea04a1655f3b 517 }
exarkun 0:ea04a1655f3b 518
exarkun 0:ea04a1655f3b 519 }//uniquement le bouton allumeras la led 4 en release ---------------SY
exarkun 0:ea04a1655f3b 520
exarkun 0:ea04a1655f3b 521 /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
exarkun 0:ea04a1655f3b 522 //Left switch
exarkun 0:ea04a1655f3b 523 if((mRxMsg[0] == 0x65)&&(mRxMsg[1] == 0x00)&&(mRxMsg[2] == 0x04)&&(mRxMsg[3] == 0x01))//press
exarkun 0:ea04a1655f3b 524 {myled3=1;
exarkun 0:ea04a1655f3b 525
exarkun 0:ea04a1655f3b 526 //keyboard.printf("a");//vers la gauche
exarkun 0:ea04a1655f3b 527 //wait(0.5);
exarkun 0:ea04a1655f3b 528
exarkun 0:ea04a1655f3b 529 while (mRxMsg[3]!=0x00)
exarkun 0:ea04a1655f3b 530 {
exarkun 0:ea04a1655f3b 531 //lectureRSlcd();
exarkun 0:ea04a1655f3b 532 //keyboard.printf("a");//vers la gauche
exarkun 0:ea04a1655f3b 533 //wait(0.035);
exarkun 0:ea04a1655f3b 534 }
exarkun 0:ea04a1655f3b 535
exarkun 0:ea04a1655f3b 536 }//uniquement le bouton allumeras la led 4 en release ---------------SY
exarkun 0:ea04a1655f3b 537
exarkun 0:ea04a1655f3b 538 /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
exarkun 0:ea04a1655f3b 539 //roll left switch
exarkun 0:ea04a1655f3b 540 if((mRxMsg[0] == 0x65)&&(mRxMsg[1] == 0x00)&&(mRxMsg[2] == 0x1a)&&(mRxMsg[3] == 0x01))//press
exarkun 0:ea04a1655f3b 541 {myled3=1;
exarkun 0:ea04a1655f3b 542 //keyboard.printf("e");//rouli gauche
exarkun 0:ea04a1655f3b 543 //wait(0.5);
exarkun 0:ea04a1655f3b 544
exarkun 0:ea04a1655f3b 545 while (mRxMsg[3]!=0x00)
exarkun 0:ea04a1655f3b 546 {
exarkun 0:ea04a1655f3b 547 //lectureRSlcd();
exarkun 0:ea04a1655f3b 548 //keyboard.printf("e");//rouli gauche
exarkun 0:ea04a1655f3b 549 //wait(0.035);
exarkun 0:ea04a1655f3b 550 }
exarkun 0:ea04a1655f3b 551
exarkun 0:ea04a1655f3b 552 }//uniquement le bouton allumeras la led 4 en release ---------------SY
exarkun 0:ea04a1655f3b 553
exarkun 0:ea04a1655f3b 554 /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
exarkun 0:ea04a1655f3b 555 //roll Right switch
exarkun 0:ea04a1655f3b 556 if((mRxMsg[0] == 0x65)&&(mRxMsg[1] == 0x00)&&(mRxMsg[2] == 0x05)&&(mRxMsg[3] == 0x01))//press
exarkun 0:ea04a1655f3b 557 {myled3=1;
exarkun 0:ea04a1655f3b 558
exarkun 0:ea04a1655f3b 559 //keyboard.printf("q");//rouli droit
exarkun 0:ea04a1655f3b 560 //wait(0.5);
exarkun 0:ea04a1655f3b 561
exarkun 0:ea04a1655f3b 562 while (mRxMsg[3]!=0x00)
exarkun 0:ea04a1655f3b 563 {
exarkun 0:ea04a1655f3b 564 //lectureRSlcd();
exarkun 0:ea04a1655f3b 565 //keyboard.printf("q");//rouli droit
exarkun 0:ea04a1655f3b 566 //wait(0.035);
exarkun 0:ea04a1655f3b 567 }
exarkun 0:ea04a1655f3b 568
exarkun 0:ea04a1655f3b 569 }//uniquement le bouton allumeras la led 4 en release ---------------SY
exarkun 0:ea04a1655f3b 570
exarkun 0:ea04a1655f3b 571 /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
exarkun 0:ea04a1655f3b 572 //tangage vers le bas switch
exarkun 0:ea04a1655f3b 573 if((mRxMsg[0] == 0x65)&&(mRxMsg[1] == 0x00)&&(mRxMsg[2] == 0x1b)&&(mRxMsg[3] == 0x01))//press
exarkun 0:ea04a1655f3b 574 {myled3=1;
exarkun 0:ea04a1655f3b 575
exarkun 0:ea04a1655f3b 576 //keyboard.printf("");//touche non affecté
exarkun 0:ea04a1655f3b 577 //wait(0.5);
exarkun 0:ea04a1655f3b 578
exarkun 0:ea04a1655f3b 579 while (mRxMsg[3]!=0x00)
exarkun 0:ea04a1655f3b 580 {
exarkun 0:ea04a1655f3b 581 //lectureRSlcd();
exarkun 0:ea04a1655f3b 582 //keyboard.printf("");//touche non affecté la touche non connue
exarkun 0:ea04a1655f3b 583 //wait(0.035);
exarkun 0:ea04a1655f3b 584 }
exarkun 0:ea04a1655f3b 585
exarkun 0:ea04a1655f3b 586 }//uniquement le bouton allumeras la led 4 en release ---------------SY
exarkun 0:ea04a1655f3b 587
exarkun 0:ea04a1655f3b 588 /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
exarkun 0:ea04a1655f3b 589 //tangage vers le haut switch
exarkun 0:ea04a1655f3b 590 if((mRxMsg[0] == 0x65)&&(mRxMsg[1] == 0x00)&&(mRxMsg[2] == 0x1b)&&(mRxMsg[3] == 0x01))//press
exarkun 0:ea04a1655f3b 591 {myled3=1;
exarkun 0:ea04a1655f3b 592
exarkun 0:ea04a1655f3b 593 //keyboard.printf("");//touche non affecté la touche non connue
exarkun 0:ea04a1655f3b 594 //wait(0.5);
exarkun 0:ea04a1655f3b 595
exarkun 0:ea04a1655f3b 596 while (mRxMsg[3]!=0x00)
exarkun 0:ea04a1655f3b 597 {
exarkun 0:ea04a1655f3b 598 //lectureRSlcd();
exarkun 0:ea04a1655f3b 599 //keyboard.printf("");//touche non affecté
exarkun 0:ea04a1655f3b 600 //wait(0.035);
exarkun 0:ea04a1655f3b 601 }
exarkun 0:ea04a1655f3b 602
exarkun 0:ea04a1655f3b 603 }//uniquement le bouton allumeras la led 4 en release ---------------SY
exarkun 0:ea04a1655f3b 604
exarkun 0:ea04a1655f3b 605
exarkun 0:ea04a1655f3b 606
exarkun 0:ea04a1655f3b 607 /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
exarkun 0:ea04a1655f3b 608 //quantum drive
exarkun 0:ea04a1655f3b 609 if((mRxMsg[0] == 0x65)&&(mRxMsg[1] == 0x00)&&(mRxMsg[2] == 0x1f)&&(mRxMsg[3] == 0x01))//press
exarkun 0:ea04a1655f3b 610 {myled3=1;
exarkun 0:ea04a1655f3b 611
exarkun 0:ea04a1655f3b 612 //keyboard.printf("b");//touche non affecté la touche non connue
exarkun 0:ea04a1655f3b 613 //wait(0.5);
exarkun 0:ea04a1655f3b 614
exarkun 0:ea04a1655f3b 615 while (mRxMsg[3]!=0x00)
exarkun 0:ea04a1655f3b 616 {
exarkun 0:ea04a1655f3b 617 //lectureRSlcd();
exarkun 0:ea04a1655f3b 618 //keyboard.printf("b");//touche non affecté
exarkun 0:ea04a1655f3b 619 //wait(0.035);
exarkun 0:ea04a1655f3b 620 }
exarkun 0:ea04a1655f3b 621
exarkun 0:ea04a1655f3b 622 }//uniquement le bouton allumeras la led 4 en release ---------------SY
exarkun 0:ea04a1655f3b 623
exarkun 0:ea04a1655f3b 624 /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
exarkun 0:ea04a1655f3b 625 //Speed M
exarkun 0:ea04a1655f3b 626 if((mRxMsg[0] == 0x65)&&(mRxMsg[1] == 0x00)&&(mRxMsg[2] == 0x1c)&&(mRxMsg[3] == 0x01))//press
exarkun 0:ea04a1655f3b 627 {myled3=1;
exarkun 0:ea04a1655f3b 628
exarkun 0:ea04a1655f3b 629 //keyboard.printf("c");//touche non affecté la touche non connue
exarkun 0:ea04a1655f3b 630 //wait(0.5);
exarkun 0:ea04a1655f3b 631
exarkun 0:ea04a1655f3b 632 while (mRxMsg[3]!=0x00)
exarkun 0:ea04a1655f3b 633 {
exarkun 0:ea04a1655f3b 634 //lectureRSlcd();
exarkun 0:ea04a1655f3b 635 //keyboard.printf("c");//touche non affecté
exarkun 0:ea04a1655f3b 636 //wait(0.035);
exarkun 0:ea04a1655f3b 637 }
exarkun 0:ea04a1655f3b 638
exarkun 0:ea04a1655f3b 639 }//uniquement le bouton allumeras la led 4 en release ---------------SY
exarkun 0:ea04a1655f3b 640
exarkun 0:ea04a1655f3b 641 /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
exarkun 0:ea04a1655f3b 642 //Speed M
exarkun 0:ea04a1655f3b 643 if((mRxMsg[0] == 0x65)&&(mRxMsg[1] == 0x00)&&(mRxMsg[2] == 0x1c)&&(mRxMsg[3] == 0x01))//press
exarkun 0:ea04a1655f3b 644 {myled3=1;
exarkun 0:ea04a1655f3b 645
exarkun 0:ea04a1655f3b 646 //keyboard.printf("b");//touche non affecté la touche non connue
exarkun 0:ea04a1655f3b 647 //wait(0.5);
exarkun 0:ea04a1655f3b 648
exarkun 0:ea04a1655f3b 649 while (mRxMsg[3]!=0x00)
exarkun 0:ea04a1655f3b 650 {
exarkun 0:ea04a1655f3b 651 //lectureRSlcd();
exarkun 0:ea04a1655f3b 652 //keyboard.printf("c");//touche non affecté
exarkun 0:ea04a1655f3b 653 //wait(0.035);
exarkun 0:ea04a1655f3b 654 }
exarkun 0:ea04a1655f3b 655
exarkun 0:ea04a1655f3b 656 }//uniquement le bouton allumeras la led 4 en release ---------------SY
exarkun 0:ea04a1655f3b 657
exarkun 0:ea04a1655f3b 658 /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
exarkun 0:ea04a1655f3b 659 //Afterburner
exarkun 0:ea04a1655f3b 660 if((mRxMsg[0] == 0x65)&&(mRxMsg[1] == 0x00)&&(mRxMsg[2] == 0x1c)&&(mRxMsg[3] == 0x01))//press
exarkun 0:ea04a1655f3b 661 {myled3=1;
exarkun 0:ea04a1655f3b 662
exarkun 0:ea04a1655f3b 663 //keyboard.keyCode(KEY_SHIFT);
exarkun 0:ea04a1655f3b 664 //wait(0.5);
exarkun 0:ea04a1655f3b 665
exarkun 0:ea04a1655f3b 666 while (mRxMsg[3]!=0x00)
exarkun 0:ea04a1655f3b 667 {
exarkun 0:ea04a1655f3b 668 //lectureRSlcd();
exarkun 0:ea04a1655f3b 669 //keyboard.keyCode(KEY_SHIFT);
exarkun 0:ea04a1655f3b 670 //wait(0.035);
exarkun 0:ea04a1655f3b 671 }
exarkun 0:ea04a1655f3b 672
exarkun 0:ea04a1655f3b 673 }//uniquement le bouton allumeras la led 4 en release ---------------SY
exarkun 0:ea04a1655f3b 674
exarkun 0:ea04a1655f3b 675
exarkun 0:ea04a1655f3b 676 /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
exarkun 0:ea04a1655f3b 677
exarkun 0:ea04a1655f3b 678 //ici il faut completer le code pour pouvoir detecter le bon bouton en press event et release event
exarkun 0:ea04a1655f3b 679 //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 1:2fe82be93e80 680 myled3=0;
exarkun 0:ea04a1655f3b 681 }
exarkun 0:ea04a1655f3b 682
exarkun 0:ea04a1655f3b 683 /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
exarkun 0:ea04a1655f3b 684 //******************************************************************page1******************************************************************//
exarkun 0:ea04a1655f3b 685 /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
exarkun 1:2fe82be93e80 686
exarkun 0:ea04a1655f3b 687 void page1()//code de la page : 6601ffffff
exarkun 0:ea04a1655f3b 688 {
exarkun 0:ea04a1655f3b 689 device.printf("bt0.txt=\"BREAK1\"%c%c%c", 0xff, 0xff, 0xff);//affiche break sur bouton bt0 -------sy
exarkun 0:ea04a1655f3b 690 }
exarkun 0:ea04a1655f3b 691
exarkun 0:ea04a1655f3b 692 /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
exarkun 0:ea04a1655f3b 693 //******************************************************************page2******************************************************************//
exarkun 0:ea04a1655f3b 694 /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
exarkun 1:2fe82be93e80 695
exarkun 0:ea04a1655f3b 696 void page2()//code de la page : 6602ffffff
exarkun 0:ea04a1655f3b 697 {
exarkun 0:ea04a1655f3b 698 device.printf("b0.txt=\"BREAK2\"%c%c%c", 0xff, 0xff, 0xff);//affiche break sur bouton b0 -------sy
exarkun 1:2fe82be93e80 699 //get_val(3);//donner l'ordre d envoyer la valeur val de h3
exarkun 1:2fe82be93e80 700 //int valeur_val=lecture_slider_RS_lcd();//recuperation de la valeur val de h3
exarkun 1:2fe82be93e80 701 //device.printf("n3.val=%d %c%c%c", valeur_val, 0xff, 0xff, 0xff);//affiche le nombre sur n1 -------sy
exarkun 1:2fe82be93e80 702 //device.printf("z0.val=%d %c%c%c", valeur_val, 0xff, 0xff, 0xff);//affiche le nombre sur z0 gauge -------sy
exarkun 0:ea04a1655f3b 703 }
exarkun 0:ea04a1655f3b 704
exarkun 0:ea04a1655f3b 705 /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
exarkun 0:ea04a1655f3b 706 //******************************************************************page3******************************************************************//
exarkun 0:ea04a1655f3b 707 /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
exarkun 1:2fe82be93e80 708
exarkun 0:ea04a1655f3b 709 void page3()//code de la page : 6603ffffff
exarkun 0:ea04a1655f3b 710 {
exarkun 1:2fe82be93e80 711 device.printf("t0.txt=\"BREAK3\"%c%c%c", 0xff, 0xff, 0xff);//affiche break sur bouton b19 -------sy
exarkun 0:ea04a1655f3b 712 }
exarkun 0:ea04a1655f3b 713
exarkun 0:ea04a1655f3b 714 /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
exarkun 0:ea04a1655f3b 715 //******************************************************************page4******************************************************************//
exarkun 0:ea04a1655f3b 716 /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
exarkun 1:2fe82be93e80 717
exarkun 0:ea04a1655f3b 718 void page4()//code de la page : 6604ffffff
exarkun 0:ea04a1655f3b 719 {
exarkun 0:ea04a1655f3b 720 device.printf("t0.txt=\"BREAK4\"%c%c%c", 0xff, 0xff, 0xff);//affiche break sur bouton bt0 -------sy
exarkun 0:ea04a1655f3b 721
exarkun 1:2fe82be93e80 722 // get_val_h0();
exarkun 1:2fe82be93e80 723 // val_temp1=lecture_slider_RS_lcd();//recuperation de la valeur du sliders h0 dans val_temp
exarkun 1:2fe82be93e80 724 // device.printf("n1.val=%d %c%c%c", val_temp1, 0xff, 0xff, 0xff);//affiche le nombre sur n1 -------sy
exarkun 0:ea04a1655f3b 725
exarkun 0:ea04a1655f3b 726 }
exarkun 0:ea04a1655f3b 727
exarkun 0:ea04a1655f3b 728 /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
exarkun 0:ea04a1655f3b 729 //******************************************************************page5******************************************************************//
exarkun 0:ea04a1655f3b 730 /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
exarkun 1:2fe82be93e80 731
exarkun 0:ea04a1655f3b 732 void page5()//code de la page : 6605ffffff
exarkun 0:ea04a1655f3b 733 {
exarkun 1:2fe82be93e80 734 //device.printf("t0.txt=\"BREAK5\"%c%c%c", 0xff, 0xff, 0xff);//affiche break sur bouton bt0 -------sy
exarkun 1:2fe82be93e80 735 //device.printf("t1.txt=\"500ms/div\"%c%c%c", 0xff, 0xff, 0xff);//affiche break sur bouton bt0 -------sy
exarkun 1:2fe82be93e80 736 //device.printf("g0.txt=\"position M\"%c%c%c", 0xff, 0xff, 0xff);//affiche break sur bouton bt0 -------sy
exarkun 0:ea04a1655f3b 737 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 738 }
exarkun 0:ea04a1655f3b 739
exarkun 0:ea04a1655f3b 740 /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
exarkun 0:ea04a1655f3b 741 //******************************************************************page6******************************************************************//
exarkun 0:ea04a1655f3b 742 /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
exarkun 0:ea04a1655f3b 743
exarkun 0:ea04a1655f3b 744 void page6()//code de la page : 6606ffffff
exarkun 0:ea04a1655f3b 745 {
exarkun 1:2fe82be93e80 746 //device.printf("t1.txt=\"courant\"%c%c%c", 0xff, 0xff, 0xff);//affiche break sur bouton bt0 -------sy
exarkun 1:2fe82be93e80 747 //device.printf("t0.txt=\"position\"%c%c%c", 0xff, 0xff, 0xff);//affiche break sur bouton bt0 -------sy
exarkun 0:ea04a1655f3b 748 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 749 }
exarkun 0:ea04a1655f3b 750
exarkun 1:2fe82be93e80 751 /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
exarkun 1:2fe82be93e80 752 //******************************************************************page7******************************************************************//
exarkun 1:2fe82be93e80 753 /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
exarkun 1:2fe82be93e80 754
exarkun 1:2fe82be93e80 755 void page7()//code de la page : 6607ffffff
exarkun 1:2fe82be93e80 756 {
exarkun 1:2fe82be93e80 757 device.printf("t0.txt=\"%x\"%c%c%c", mRxMsg[0], 0xff, 0xff, 0xff);//affiche break sur bouton bt0 -------sy
exarkun 1:2fe82be93e80 758 device.printf("t1.txt=\"%x\"%c%c%c", mRxMsg[1], 0xff, 0xff, 0xff);//affiche break sur bouton bt0 -------sy
exarkun 1:2fe82be93e80 759 device.printf("t2.txt=\"%x\"%c%c%c", mRxMsg[2], 0xff, 0xff, 0xff);//affiche break sur bouton bt0 -------sy
exarkun 1:2fe82be93e80 760 device.printf("t3.txt=\"%x\"%c%c%c", mRxMsg[3], 0xff, 0xff, 0xff);//affiche break sur bouton bt0 -------sy
exarkun 1:2fe82be93e80 761 device.printf("t4.txt=\"%x\"%c%c%c", mRxMsg[4], 0xff, 0xff, 0xff);//affiche break sur bouton bt0 -------sy
exarkun 1:2fe82be93e80 762 device.printf("t5.txt=\"%x\"%c%c%c", mRxMsg[5], 0xff, 0xff, 0xff);//affiche break sur bouton bt0 -------sy
exarkun 1:2fe82be93e80 763 device.printf("t6.txt=\"%x\"%c%c%c", mRxMsg[6], 0xff, 0xff, 0xff);//affiche break sur bouton bt0 -------sy
exarkun 1:2fe82be93e80 764 device.printf("t7.txt=\"%x\"%c%c%c", mRxMsg[7], 0xff, 0xff, 0xff);//affiche break sur bouton bt0 -------sy
exarkun 1:2fe82be93e80 765 device.printf("t8.txt=\"%x\"%c%c%c", mRxMsg[8], 0xff, 0xff, 0xff);//affiche break sur bouton bt0 -------sy
exarkun 1:2fe82be93e80 766 device.printf("t9.txt=\"%x\"%c%c%c", mRxMsg[9], 0xff, 0xff, 0xff);//affiche break sur bouton bt0 -------sy
exarkun 1:2fe82be93e80 767 device.printf("t10.txt=\"%x\"%c%c%c", mRxMsg[10], 0xff, 0xff, 0xff);//affiche break sur bouton bt0 -------sy
exarkun 1:2fe82be93e80 768 device.printf("t11.txt=\"%x\"%c%c%c", mRxMsg[11], 0xff, 0xff, 0xff);//affiche break sur bouton bt0 -------sy
exarkun 1:2fe82be93e80 769 device.printf("t12.txt=\"%x\"%c%c%c", mRxMsg[12], 0xff, 0xff, 0xff);//affiche break sur bouton bt0 -------sy
exarkun 1:2fe82be93e80 770 device.printf("t13.txt=\"%x\"%c%c%c", mRxMsg[13], 0xff, 0xff, 0xff);//affiche break sur bouton bt0 -------sy
exarkun 1:2fe82be93e80 771 device.printf("t15.txt=\"%x\"%c%c%c", mRxMsg[14], 0xff, 0xff, 0xff);//affiche break sur bouton bt0 -------sy
exarkun 1:2fe82be93e80 772 device.printf("t16.txt=\"%x\"%c%c%c", mRxMsg[15], 0xff, 0xff, 0xff);//affiche break sur bouton bt0 -------sy
exarkun 1:2fe82be93e80 773 device.printf("t17.txt=\"%x\"%c%c%c", mRxMsg[16], 0xff, 0xff, 0xff);//affiche break sur bouton bt0 -------sy
exarkun 1:2fe82be93e80 774 device.printf("t18.txt=\"%x\"%c%c%c", mRxMsg[17], 0xff, 0xff, 0xff);//affiche break sur bouton bt0 -------sy
exarkun 1:2fe82be93e80 775 device.printf("t19.txt=\"%x\"%c%c%c", mRxMsg[18], 0xff, 0xff, 0xff);//affiche break sur bouton bt0 -------sy
exarkun 1:2fe82be93e80 776 device.printf("t20.txt=\"%x\"%c%c%c", mRxMsg[19], 0xff, 0xff, 0xff);//affiche break sur bouton bt0 -------sy
exarkun 1:2fe82be93e80 777 device.printf("t21.txt=\"%x\"%c%c%c", mRxMsg[20], 0xff, 0xff, 0xff);//affiche break sur bouton bt0 -------sy
exarkun 1:2fe82be93e80 778 device.printf("t22.txt=\"%x\"%c%c%c", mRxMsg[21], 0xff, 0xff, 0xff);//affiche break sur bouton bt0 -------sy
exarkun 1:2fe82be93e80 779 device.printf("t23.txt=\"%x\"%c%c%c", mRxMsg[22], 0xff, 0xff, 0xff);//affiche break sur bouton bt0 -------sy
exarkun 1:2fe82be93e80 780 device.printf("t24.txt=\"%x\"%c%c%c", mRxMsg[23], 0xff, 0xff, 0xff);//affiche break sur bouton bt0 -------sy
exarkun 1:2fe82be93e80 781 device.printf("t25.txt=\"%x\"%c%c%c", mRxMsg[24], 0xff, 0xff, 0xff);//affiche break sur bouton bt0 -------sy
exarkun 1:2fe82be93e80 782 device.printf("t26.txt=\"%x\"%c%c%c", mRxMsg[25], 0xff, 0xff, 0xff);//affiche break sur bouton bt0 -------sy
exarkun 1:2fe82be93e80 783 device.printf("t27.txt=\"%x\"%c%c%c", mRxMsg[26], 0xff, 0xff, 0xff);//affiche break sur bouton bt0 -------sy
exarkun 1:2fe82be93e80 784 device.printf("t28.txt=\"%x\"%c%c%c", mRxMsg[27], 0xff, 0xff, 0xff);//affiche break sur bouton bt0 -------sy
exarkun 1:2fe82be93e80 785 device.printf("t30.txt=\"%x\"%c%c%c", mRxMsg[28], 0xff, 0xff, 0xff);//affiche break sur bouton bt0 -------sy
exarkun 1:2fe82be93e80 786 device.printf("t31.txt=\"%x\"%c%c%c", mRxMsg[29], 0xff, 0xff, 0xff);//affiche break sur bouton bt0 -------sy
exarkun 1:2fe82be93e80 787 device.printf("t32.txt=\"%x\"%c%c%c", mRxMsg[30], 0xff, 0xff, 0xff);//affiche break sur bouton bt0 -------sy
exarkun 1:2fe82be93e80 788 device.printf("t33.txt=\"%x\"%c%c%c", mRxMsg[31], 0xff, 0xff, 0xff);//affiche break sur bouton bt0 -------sy
exarkun 1:2fe82be93e80 789 device.printf("t34.txt=\"%x\"%c%c%c", mRxMsg[32], 0xff, 0xff, 0xff);//affiche break sur bouton bt0 -------sy
exarkun 1:2fe82be93e80 790 device.printf("t35.txt=\"%x\"%c%c%c", mRxMsg[33], 0xff, 0xff, 0xff);//affiche break sur bouton bt0 -------sy
exarkun 1:2fe82be93e80 791 device.printf("t36.txt=\"%x\"%c%c%c", mRxMsg[34], 0xff, 0xff, 0xff);//affiche break sur bouton bt0 -------sy
exarkun 1:2fe82be93e80 792 device.printf("t37.txt=\"%x\"%c%c%c", mRxMsg[35], 0xff, 0xff, 0xff);//affiche break sur bouton bt0 -------sy
exarkun 1:2fe82be93e80 793 device.printf("t38.txt=\"%x\"%c%c%c", mRxMsg[36], 0xff, 0xff, 0xff);//affiche break sur bouton bt0 -------sy
exarkun 1:2fe82be93e80 794 device.printf("t39.txt=\"%x\"%c%c%c", mRxMsg[37], 0xff, 0xff, 0xff);//affiche break sur bouton bt0 -------sy
exarkun 1:2fe82be93e80 795 device.printf("t40.txt=\"%x\"%c%c%c", mRxMsg[38], 0xff, 0xff, 0xff);//affiche break sur bouton bt0 -------sy
exarkun 1:2fe82be93e80 796 device.printf("t41.txt=\"%x\"%c%c%c", mRxMsg[39], 0xff, 0xff, 0xff);//affiche break sur bouton bt0 -------sy
exarkun 1:2fe82be93e80 797 }
exarkun 0:ea04a1655f3b 798
exarkun 0:ea04a1655f3b 799 /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
exarkun 0:ea04a1655f3b 800 //******************************************************************LES TASKS**************************************************************//
exarkun 0:ea04a1655f3b 801 /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
exarkun 0:ea04a1655f3b 802
exarkun 0:ea04a1655f3b 803 ////////////////////////////////////////
exarkun 0:ea04a1655f3b 804 // TASKS1 //
exarkun 0:ea04a1655f3b 805 ////////////////////////////////////////
exarkun 1:2fe82be93e80 806
exarkun 0:ea04a1655f3b 807 void task1_switch()
exarkun 0:ea04a1655f3b 808 {
exarkun 0:ea04a1655f3b 809
exarkun 0:ea04a1655f3b 810 //lecture valeur codeur et conversion en radians
exarkun 0:ea04a1655f3b 811 position_actuelle=qei.GetPosition();//lecture valeur codeur et affectation a la variable globale
exarkun 0:ea04a1655f3b 812 Tetam=pulsesToRadians(position_actuelle);//conversion valeur impulsionel en radians
exarkun 0:ea04a1655f3b 813
exarkun 0:ea04a1655f3b 814 //Calcul de la nouvelle consigne:
exarkun 0:ea04a1655f3b 815
exarkun 0:ea04a1655f3b 816 //Etape1:derivee filtree
exarkun 0:ea04a1655f3b 817 dTetam=1./(1.+taud*2./dt_vit)*(-dTetam_n1*(1.-taud*2./dt_vit)+2./dt_vit*(Tetam-Tetam_n1));
exarkun 0:ea04a1655f3b 818
exarkun 0:ea04a1655f3b 819 //Etape2:calcul de integ non saturee
exarkun 0:ea04a1655f3b 820 integ=integ_n1+dt_vit/2.*((Tetaco-Tetam)+(Tetaco_n1-Tetam_n1));
exarkun 0:ea04a1655f3b 821
exarkun 0:ea04a1655f3b 822 //Etape3:Calcul de A non saturee
exarkun 0:ea04a1655f3b 823 A=Kv*K_sw/Umax*(-dTetam+Kp*Ki*integ-Kp*Tetam);
exarkun 0:ea04a1655f3b 824
exarkun 0:ea04a1655f3b 825 //Etape 4 et 5 : calcul de integ saturee
exarkun 0:ea04a1655f3b 826 if (A>1)
exarkun 0:ea04a1655f3b 827 {
exarkun 0:ea04a1655f3b 828 integ=1./Kp/Ki*(Umax/Kv/K_sw+dTetam+Kp*Tetam);
exarkun 0:ea04a1655f3b 829 A=1;
exarkun 0:ea04a1655f3b 830 }
exarkun 0:ea04a1655f3b 831 if(A<-1)
exarkun 0:ea04a1655f3b 832 {
exarkun 0:ea04a1655f3b 833 integ=1./Kp/Ki*(-Umax/Kv/K_sw+dTetam+Kp*Tetam);
exarkun 0:ea04a1655f3b 834 A=-1;
exarkun 0:ea04a1655f3b 835 }
exarkun 0:ea04a1655f3b 836
exarkun 0:ea04a1655f3b 837 //Etape 6:affectation du signe de rotation a l'etage de puissance
exarkun 0:ea04a1655f3b 838 if (A>0)
exarkun 0:ea04a1655f3b 839 {
exarkun 0:ea04a1655f3b 840 signe_rot=1;
exarkun 0:ea04a1655f3b 841 sens_rotation_moteur1.write(signe_rot); //affectation du sens de rotation moteur1
exarkun 0:ea04a1655f3b 842 cyclic=A;
exarkun 0:ea04a1655f3b 843 }
exarkun 0:ea04a1655f3b 844 else
exarkun 0:ea04a1655f3b 845 {
exarkun 0:ea04a1655f3b 846 signe_rot=0;
exarkun 0:ea04a1655f3b 847 sens_rotation_moteur1.write(signe_rot); //affectation du sens de rotation moteur1
exarkun 0:ea04a1655f3b 848 cyclic=-A;//peut etre une erreur ici sy??
exarkun 0:ea04a1655f3b 849 }
exarkun 0:ea04a1655f3b 850
exarkun 0:ea04a1655f3b 851 PWM1.write(cyclic);// affectation de la valeur calculé en pwm
exarkun 0:ea04a1655f3b 852
exarkun 0:ea04a1655f3b 853 // enregistrement des valeurs N-1
exarkun 0:ea04a1655f3b 854 position_actuelle_n1=position_actuelle;
exarkun 0:ea04a1655f3b 855 dTetam_n1=dTetam;
exarkun 0:ea04a1655f3b 856 Tetaco_n1=Tetaco;
exarkun 0:ea04a1655f3b 857 Tetam_n1=Tetam;
exarkun 0:ea04a1655f3b 858 integ_n1=integ;
exarkun 0:ea04a1655f3b 859
exarkun 0:ea04a1655f3b 860 //myled1=!myled1;//changement etat de la led1
exarkun 0:ea04a1655f3b 861 }
exarkun 0:ea04a1655f3b 862
exarkun 0:ea04a1655f3b 863 ////////////////////////////////////////
exarkun 0:ea04a1655f3b 864 // TASKS2 //
exarkun 0:ea04a1655f3b 865 ////////////////////////////////////////
exarkun 1:2fe82be93e80 866
exarkun 0:ea04a1655f3b 867 void task2_switch()
exarkun 0:ea04a1655f3b 868 {
exarkun 0:ea04a1655f3b 869 // pc.printf("%f\r\n", Tetaco);//valeur float consigne en radians le renvoyé par usb
exarkun 0:ea04a1655f3b 870 // pc.printf("%i\r\n", position_actuelle);//valeur int du codeur renvoyé par usb
exarkun 0:ea04a1655f3b 871 // pc.printf("%f\r\n", Tetam);//valeur float du codeur en radians renvoyé par usb
exarkun 0:ea04a1655f3b 872 // pc.printf("dTetam : %f\r\n", dTetam);//valeur float dTetam
exarkun 0:ea04a1655f3b 873 // pc.printf("integ : %f\r\n", integ);//valeur float integ
exarkun 0:ea04a1655f3b 874 // pc.printf("%f\r\n", A);//valeur float du codeur en radians le renvoyé par usb
exarkun 0:ea04a1655f3b 875 // pc.printf("%e\r\n", cyclic);//valeur float du codeur en radians le renvoyé par usb
exarkun 0:ea04a1655f3b 876 // pc.printf("\r\n");//retour chario
exarkun 0:ea04a1655f3b 877 // pc.printf("$%d %d %d;", position_actuelle,position_actuelle/2,position_actuelle/10 ); //utiliser avec logicielle serial port ploter
exarkun 0:ea04a1655f3b 878 // pc.printf("$%d ;", position_actuelle); //utiliser avec logicielle serial port ploter
exarkun 0:ea04a1655f3b 879 // pc.printf("%d",position_actuelle); //utiliser avec logicielle serial port ploter
exarkun 0:ea04a1655f3b 880
exarkun 0:ea04a1655f3b 881 // this code is a crude template
exarkun 0:ea04a1655f3b 882 // you will need to edit this
exarkun 0:ea04a1655f3b 883
exarkun 0:ea04a1655f3b 884
exarkun 0:ea04a1655f3b 885 // use this loop if sending integers----------------------------------------------SY
exarkun 0:ea04a1655f3b 886
exarkun 0:ea04a1655f3b 887 // int ppp = position_actuelle;
exarkun 0:ea04a1655f3b 888 // char text[7];
exarkun 0:ea04a1655f3b 889 // snprintf(text, 7, "%d", ppp);
exarkun 0:ea04a1655f3b 890 // pc.printf("\r");
exarkun 0:ea04a1655f3b 891 // pc.printf(text);
exarkun 0:ea04a1655f3b 892
exarkun 0:ea04a1655f3b 893
exarkun 0:ea04a1655f3b 894 // or use this loop if sending floats
exarkun 0:ea04a1655f3b 895
exarkun 0:ea04a1655f3b 896 // float ppp =position_actuelle;
exarkun 0:ea04a1655f3b 897 // char ppp_text[30];
exarkun 0:ea04a1655f3b 898 // dtostrf(ppp, 10, 10, ppp_text);
exarkun 0:ea04a1655f3b 899 // char text[31];
exarkun 0:ea04a1655f3b 900 // snprintf(text, 31, "%s", ppp_text);
exarkun 0:ea04a1655f3b 901 // pc.printf(text);
exarkun 1:2fe82be93e80 902 device.printf("n0.val=%d%c%c%c", (LPC_QEI->QEIPOS)/*position_actuelle*/, 0xff, 0xff, 0xff);// affiche la valeur de position sur l afficheur nextion
exarkun 1:2fe82be93e80 903
exarkun 0:ea04a1655f3b 904 };
exarkun 0:ea04a1655f3b 905
exarkun 0:ea04a1655f3b 906 ////////////////////////////////////////
exarkun 0:ea04a1655f3b 907 // TASKS3 //
exarkun 0:ea04a1655f3b 908 ////////////////////////////////////////
exarkun 1:2fe82be93e80 909
exarkun 0:ea04a1655f3b 910 void task3_switch()
exarkun 0:ea04a1655f3b 911 {
exarkun 0:ea04a1655f3b 912
exarkun 0:ea04a1655f3b 913 //generation de la trajectoire
exarkun 0:ea04a1655f3b 914 if(start_slope)
exarkun 0:ea04a1655f3b 915 {
exarkun 0:ea04a1655f3b 916 Teta_debut=Tetam;//affectation de la mesure a la variable globale
exarkun 0:ea04a1655f3b 917 Teta_fin=pulsesToRadians(consigne);//affectation de la consigne a la variable globale
exarkun 0:ea04a1655f3b 918 Teta_diff = Teta_fin - Teta_debut;//calcule de la position a parcourir
exarkun 0:ea04a1655f3b 919 delta_Teta=(Teta_diff/slope_time)*5*1e-4;//calcule de la distance ideal parcouru en 500us "regle de trois"!!!
exarkun 0:ea04a1655f3b 920 count_slope = 0;//mise a zero du conteur de pas
exarkun 0:ea04a1655f3b 921 count_max = slope_time/(5*1e-4);//calcule du nombre max de pas
exarkun 0:ea04a1655f3b 922 start_slope=false;
exarkun 0:ea04a1655f3b 923 }
exarkun 0:ea04a1655f3b 924 count_slope++;//incrementation nombre de pas
exarkun 0:ea04a1655f3b 925 if (count_slope<=count_max){Tetaco=Tetaco+delta_Teta;}
exarkun 0:ea04a1655f3b 926
exarkun 0:ea04a1655f3b 927 }
exarkun 0:ea04a1655f3b 928
exarkun 0:ea04a1655f3b 929 ////////////////////////////////////////
exarkun 0:ea04a1655f3b 930 // TASKS4 //
exarkun 0:ea04a1655f3b 931 ////////////////////////////////////////
exarkun 1:2fe82be93e80 932
exarkun 0:ea04a1655f3b 933 void task4_switch()
exarkun 0:ea04a1655f3b 934 {
exarkun 0:ea04a1655f3b 935 //device.printf("$%d;", position_actuelle); //utiliser avec logicielle serial port ploter
exarkun 0:ea04a1655f3b 936 //pc.printf("0x%04x\n", valueFromMaster);
exarkun 0:ea04a1655f3b 937 //pc.printf("%04x", valueFromMaster);
exarkun 1:2fe82be93e80 938 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 939 //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 940
exarkun 0:ea04a1655f3b 941 }
exarkun 0:ea04a1655f3b 942
exarkun 0:ea04a1655f3b 943 //////////////////////////////////////////////////////////////////////////////
exarkun 0:ea04a1655f3b 944 // TASKS5 reception et transfert données sur SPI //
exarkun 0:ea04a1655f3b 945 //////////////////////////////////////////////////////////////////////////////
exarkun 1:2fe82be93e80 946
exarkun 0:ea04a1655f3b 947 void task5_switch()
exarkun 0:ea04a1655f3b 948 {
exarkun 0:ea04a1655f3b 949 //reply=0xAAAA;
exarkun 0:ea04a1655f3b 950 //spi1.reply(reply);
exarkun 0:ea04a1655f3b 951 if (spi1.receive())
exarkun 0:ea04a1655f3b 952 {
exarkun 0:ea04a1655f3b 953 valueFromMaster = spi1.read();
exarkun 0:ea04a1655f3b 954
exarkun 0:ea04a1655f3b 955 Spi_val_RX[x]=valueFromMaster;
exarkun 0:ea04a1655f3b 956 if (x==9){x=0;}
exarkun 0:ea04a1655f3b 957 else {x++;}
exarkun 0:ea04a1655f3b 958
exarkun 0:ea04a1655f3b 959 // pc.printf("%d Something rxvd, and should have replied with %d\n\r", counter++, reply);
exarkun 0:ea04a1655f3b 960 //reply=valueFromMaster;
exarkun 0:ea04a1655f3b 961 //spi1.reply(reply); // Prime SPI with next reply
exarkun 0:ea04a1655f3b 962 //reply--;
exarkun 0:ea04a1655f3b 963
exarkun 0:ea04a1655f3b 964 // pc.printf(" Received value from Master (%d) Next reply will be %d \r\n", valueFromMaster, reply);
exarkun 0:ea04a1655f3b 965 //if (reply==0){reply=65535;}//100
exarkun 0:ea04a1655f3b 966 }
exarkun 0:ea04a1655f3b 967
exarkun 0:ea04a1655f3b 968 // ici code de la tache 5
exarkun 0:ea04a1655f3b 969 }
exarkun 0:ea04a1655f3b 970
exarkun 0:ea04a1655f3b 971 /////////////////////////////////////////////////////////////////////////
exarkun 0:ea04a1655f3b 972 // TASKS6 lecture de l'image courant moteur //
exarkun 0:ea04a1655f3b 973 /////////////////////////////////////////////////////////////////////////
exarkun 1:2fe82be93e80 974
exarkun 0:ea04a1655f3b 975 void task6_switch()
exarkun 0:ea04a1655f3b 976 {
exarkun 1:2fe82be93e80 977 // ADCdata=Ain*3.3; //lecture de l'image du courant
exarkun 0:ea04a1655f3b 978
exarkun 0:ea04a1655f3b 979 for (int z=0;z<=9;z++)
exarkun 0:ea04a1655f3b 980 {
exarkun 1:2fe82be93e80 981 ADCdata=ADCdata+Ain*3.3; //sum 10 samples
exarkun 0:ea04a1655f3b 982 }
exarkun 1:2fe82be93e80 983 //ADCdata=ADCdata/10; //divide by 10
exarkun 1:2fe82be93e80 984 device.printf("n0.val=%d%c%c%c", ADCdata, 0xff, 0xff, 0xff);// affiche la valeur de position sur l afficheur nextion
exarkun 0:ea04a1655f3b 985 //ADCdata=Ain.read_u16();
exarkun 0:ea04a1655f3b 986 if(ADCdata>=imax)//si l'image du courant egale a 0.5v je coupe le moteur .
exarkun 0:ea04a1655f3b 987 {
exarkun 1:2fe82be93e80 988 while(1){
exarkun 0:ea04a1655f3b 989 PWM1.write(0);//mise du signal pwm a zero.
exarkun 0:ea04a1655f3b 990 // pc.printf("%1.3f",ADCdata);
exarkun 0:ea04a1655f3b 991 // pc.printf("V\n\r");
exarkun 0:ea04a1655f3b 992 // pc.printf("current overload \n\r");
exarkun 0:ea04a1655f3b 993
exarkun 0:ea04a1655f3b 994 //attendre que le manipulateur appuis sur le bouton restart a coder .
exarkun 0:ea04a1655f3b 995 //veriffier que les plaques sont bien en position .
exarkun 0:ea04a1655f3b 996 //faire une home ou continuer la trajectoire .a voir !!!!
exarkun 1:2fe82be93e80 997 }
exarkun 0:ea04a1655f3b 998 }
exarkun 0:ea04a1655f3b 999 // ici code de la tache 6
exarkun 0:ea04a1655f3b 1000
exarkun 0:ea04a1655f3b 1001 }
exarkun 0:ea04a1655f3b 1002
exarkun 0:ea04a1655f3b 1003 ////////////////////////////////////////
exarkun 0:ea04a1655f3b 1004 // TASKS7 //
exarkun 0:ea04a1655f3b 1005 ////////////////////////////////////////
exarkun 1:2fe82be93e80 1006
exarkun 1:2fe82be93e80 1007 int ReadSerialMsg(char *Msg)
exarkun 1:2fe82be93e80 1008 {
exarkun 1:2fe82be93e80 1009 if(device.readable())
exarkun 1:2fe82be93e80 1010 {
exarkun 1:2fe82be93e80 1011
exarkun 1:2fe82be93e80 1012 Msg[mRxIdx] = device.getc();
exarkun 1:2fe82be93e80 1013 mRxIdx++;
exarkun 1:2fe82be93e80 1014 if(mRxIdx > 3)
exarkun 1:2fe82be93e80 1015 {
exarkun 1:2fe82be93e80 1016 if ((Msg[mRxIdx-1] == 0xff) && (Msg[mRxIdx-2] == 0xff) && (Msg[mRxIdx-3] == 0xff)) //valid rx message
exarkun 1:2fe82be93e80 1017 {
exarkun 1:2fe82be93e80 1018 mRxIdx=0;
exarkun 1:2fe82be93e80 1019 return 1;
exarkun 1:2fe82be93e80 1020 }
exarkun 1:2fe82be93e80 1021 }
exarkun 1:2fe82be93e80 1022 }
exarkun 1:2fe82be93e80 1023 return 0;
exarkun 1:2fe82be93e80 1024 }
exarkun 1:2fe82be93e80 1025
exarkun 1:2fe82be93e80 1026 void FillButtonCmd(char *mRxMsg, ButtonCommand *cmd)
exarkun 1:2fe82be93e80 1027 {
exarkun 1:2fe82be93e80 1028 cmd->IsNewCommandAvailable = 1;
exarkun 1:2fe82be93e80 1029 cmd->cmdNb = mRxMsg[0];
exarkun 1:2fe82be93e80 1030 cmd->var1 = mRxMsg[1];
exarkun 1:2fe82be93e80 1031 cmd->buttonId = mRxMsg[2];
exarkun 1:2fe82be93e80 1032 cmd->IsButtonPressed = mRxMsg[3];
exarkun 1:2fe82be93e80 1033 }
exarkun 1:2fe82be93e80 1034
exarkun 0:ea04a1655f3b 1035 void task7_switch()
exarkun 0:ea04a1655f3b 1036 {
exarkun 1:2fe82be93e80 1037 if(1 == ReadSerialMsg(mRxMsg))
exarkun 1:2fe82be93e80 1038 {
exarkun 1:2fe82be93e80 1039 Cmd = mRxMsg[0];
exarkun 1:2fe82be93e80 1040 //newCmdAvailable = true;
exarkun 1:2fe82be93e80 1041
exarkun 1:2fe82be93e80 1042 switch(Cmd)
exarkun 1:2fe82be93e80 1043 {
exarkun 1:2fe82be93e80 1044 case PageCmd:
exarkun 1:2fe82be93e80 1045 //resetPageSteps();
exarkun 1:2fe82be93e80 1046 CurrentPageNb = (PageNb)mRxMsg[1];
exarkun 1:2fe82be93e80 1047 break;
exarkun 1:2fe82be93e80 1048
exarkun 1:2fe82be93e80 1049 case ButtonCmd:
exarkun 1:2fe82be93e80 1050 FillButtonCmd(mRxMsg, &buttonCmd);
exarkun 1:2fe82be93e80 1051 break;
exarkun 1:2fe82be93e80 1052 }
exarkun 1:2fe82be93e80 1053 }
exarkun 1:2fe82be93e80 1054 //lectureRSlcd();
exarkun 1:2fe82be93e80 1055 /*
exarkun 1:2fe82be93e80 1056 if(device.readable())
exarkun 0:ea04a1655f3b 1057 {
exarkun 0:ea04a1655f3b 1058 myled1=1;
exarkun 0:ea04a1655f3b 1059 charac = device.getc();
exarkun 0:ea04a1655f3b 1060 mRxMsg[mRxIdx] = charac;
exarkun 0:ea04a1655f3b 1061 mRxIdx++;
exarkun 0:ea04a1655f3b 1062 if ((mRxIdx >= 3) && (mRxMsg[mRxIdx-1] == 0xff) && (mRxMsg[mRxIdx-2] == 0xff) && (mRxMsg[mRxIdx-3] == 0xff)) //valid rx message
exarkun 1:2fe82be93e80 1063 {
exarkun 1:2fe82be93e80 1064 myled3=1;
exarkun 1:2fe82be93e80 1065 mRxIdx=0;
exarkun 1:2fe82be93e80 1066 myled3=0;
exarkun 1:2fe82be93e80 1067 if(mRxMsg[0] == 0x67) //Touch coordinate data return
exarkun 1:2fe82be93e80 1068 {
exarkun 1:2fe82be93e80 1069 mTouchX = (mRxMsg[1]*256) + mRxMsg[2];
exarkun 0:ea04a1655f3b 1070 mTouchY = (mRxMsg[3]*256) + mRxMsg[4];
exarkun 0:ea04a1655f3b 1071 if(mRxMsg[5] == 0x01)
exarkun 0:ea04a1655f3b 1072 mTouch = true;
exarkun 0:ea04a1655f3b 1073 else
exarkun 0:ea04a1655f3b 1074 mTouch = false;
exarkun 1:2fe82be93e80 1075 }
exarkun 1:2fe82be93e80 1076 }
exarkun 1:2fe82be93e80 1077
exarkun 0:ea04a1655f3b 1078 //vitesse_actuelle=qei.GetVelocity(); //fonctionne pas ...
exarkun 0:ea04a1655f3b 1079 // ici code de la tache 7
exarkun 1:2fe82be93e80 1080 myled1=0;
exarkun 1:2fe82be93e80 1081 } */
exarkun 0:ea04a1655f3b 1082 }
exarkun 0:ea04a1655f3b 1083
exarkun 0:ea04a1655f3b 1084 ////////////////////////////////////////
exarkun 0:ea04a1655f3b 1085 // TASKS8 //
exarkun 0:ea04a1655f3b 1086 ////////////////////////////////////////
exarkun 0:ea04a1655f3b 1087
exarkun 1:2fe82be93e80 1088 void task8_switch()//detection code page
exarkun 0:ea04a1655f3b 1089 {
exarkun 1:2fe82be93e80 1090 if((mRxMsg[0] == 0x66))
exarkun 0:ea04a1655f3b 1091 {
exarkun 0:ea04a1655f3b 1092 switch ( mRxMsg[1])
exarkun 0:ea04a1655f3b 1093 {
exarkun 0:ea04a1655f3b 1094 case 0x00:
exarkun 0:ea04a1655f3b 1095 page0();//ici la page0 es traité ----------- code de la page : 66 00 ff ff ff
exarkun 1:2fe82be93e80 1096 mRxMsg[0] = 0x00;mRxMsg[1] = 0x00;mRxMsg[2] = 0x00;mRxMsg[3] = 0x00;mRxMsg[4] = 0x00;
exarkun 0:ea04a1655f3b 1097 break;
exarkun 0:ea04a1655f3b 1098
exarkun 0:ea04a1655f3b 1099 case 0x01:
exarkun 0:ea04a1655f3b 1100 page1();//ici la page0 es traité ----------- code de la page : 66 01 ff ff ff
exarkun 1:2fe82be93e80 1101 mRxMsg[0] = 0x00;mRxMsg[1] = 0x00;mRxMsg[2] = 0x00;mRxMsg[3] = 0x00;mRxMsg[4] = 0x00;
exarkun 0:ea04a1655f3b 1102 break;
exarkun 0:ea04a1655f3b 1103
exarkun 0:ea04a1655f3b 1104 case 0x02:
exarkun 0:ea04a1655f3b 1105 page2();//ici la page0 es traité ----------- code de la page : 66 02 ff ff ff
exarkun 1:2fe82be93e80 1106 mRxMsg[0] = 0x00;mRxMsg[1] = 0x00;mRxMsg[2] = 0x00;mRxMsg[3] = 0x00;mRxMsg[4] = 0x00;
exarkun 0:ea04a1655f3b 1107 break;
exarkun 0:ea04a1655f3b 1108
exarkun 0:ea04a1655f3b 1109 case 0x03:
exarkun 0:ea04a1655f3b 1110 page3();//ici la page0 es traité ----------- code de la page : 66 03 ff ff ff
exarkun 1:2fe82be93e80 1111 mRxMsg[0] = 0x00;mRxMsg[1] = 0x00;mRxMsg[2] = 0x00;mRxMsg[3] = 0x00;mRxMsg[4] = 0x00;
exarkun 0:ea04a1655f3b 1112 break;
exarkun 0:ea04a1655f3b 1113
exarkun 0:ea04a1655f3b 1114 case 0x04:
exarkun 0:ea04a1655f3b 1115 page4();//ici la page0 es traité ----------- code de la page : 66 04 ff ff ff
exarkun 1:2fe82be93e80 1116 mRxMsg[0] = 0x00;mRxMsg[1] = 0x00;mRxMsg[2] = 0x00;mRxMsg[3] = 0x00;mRxMsg[4] = 0x00;
exarkun 0:ea04a1655f3b 1117 break;
exarkun 0:ea04a1655f3b 1118
exarkun 0:ea04a1655f3b 1119 case 0x05:
exarkun 0:ea04a1655f3b 1120 page5();//ici la page0 es traité ----------- code de la page : 66 05 ff ff ff
exarkun 1:2fe82be93e80 1121 mRxMsg[0] = 0x00;mRxMsg[1] = 0x00;mRxMsg[2] = 0x00;mRxMsg[3] = 0x00;mRxMsg[4] = 0x00;
exarkun 0:ea04a1655f3b 1122 break;
exarkun 0:ea04a1655f3b 1123
exarkun 0:ea04a1655f3b 1124 case 0x06:
exarkun 0:ea04a1655f3b 1125 page6();//ici la page6 es traité ----------- code de la page : 66 06 ff ff ff
exarkun 1:2fe82be93e80 1126 mRxMsg[0] = 0x00;mRxMsg[1] = 0x00;mRxMsg[2] = 0x00;mRxMsg[3] = 0x00;mRxMsg[4] = 0x00;
exarkun 0:ea04a1655f3b 1127 break;
exarkun 1:2fe82be93e80 1128
exarkun 1:2fe82be93e80 1129 case 0x07:
exarkun 1:2fe82be93e80 1130 page7();//ici la page7 es traité ----------- code de la page : 66 07 ff ff ff
exarkun 1:2fe82be93e80 1131 mRxMsg[0] = 0x00;mRxMsg[1] = 0x00;mRxMsg[2] = 0x00;mRxMsg[3] = 0x00;mRxMsg[4] = 0x00;
exarkun 1:2fe82be93e80 1132 //memset(mRxMsg, 0, 5);
exarkun 1:2fe82be93e80 1133 break;
exarkun 0:ea04a1655f3b 1134
exarkun 0:ea04a1655f3b 1135 }
exarkun 1:2fe82be93e80 1136
exarkun 0:ea04a1655f3b 1137 // ici code de la tache 8
exarkun 0:ea04a1655f3b 1138 }
exarkun 0:ea04a1655f3b 1139 }
exarkun 0:ea04a1655f3b 1140
exarkun 1:2fe82be93e80 1141 /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
exarkun 1:2fe82be93e80 1142 // PROGRAMME PRINCIPAL //
exarkun 1:2fe82be93e80 1143 /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
exarkun 1:2fe82be93e80 1144 int motorStep = 0;
exarkun 1:2fe82be93e80 1145 int position_a_cmd_darret = 0;
exarkun 0:ea04a1655f3b 1146
exarkun 0:ea04a1655f3b 1147 int main()
exarkun 0:ea04a1655f3b 1148 {
exarkun 1:2fe82be93e80 1149 // int cycles;
exarkun 0:ea04a1655f3b 1150 //NVIC_SetPriority(EINT3_IRQn, 252);//set interupt to highest priority 0.
exarkun 0:ea04a1655f3b 1151 //NVIC_SetPriority(TIMER1_IRQn, 253);// set mbed tickers to lower priority than other things
exarkun 0:ea04a1655f3b 1152 //NVIC_SetPriority(TIMER2_IRQn, 254);// set mbed tickers to lower priority than other things
exarkun 0:ea04a1655f3b 1153 //NVIC_SetPriority(TIMER3_IRQn, 255);// set mbed tickers to lower priority than other things
exarkun 0:ea04a1655f3b 1154 //NVIC_set_all_irq_priorities(0);
exarkun 0:ea04a1655f3b 1155
exarkun 0:ea04a1655f3b 1156 qei.SetDigiFilter(480UL);//filtre
exarkun 0:ea04a1655f3b 1157 qei.SetMaxPosition(0xFFFFFFFF);//position max 4294967295 pulses
exarkun 0:ea04a1655f3b 1158
exarkun 0:ea04a1655f3b 1159 //initialisation de la com rs232
exarkun 0:ea04a1655f3b 1160 device.baud(9600);//rs232 28800 baud
exarkun 0:ea04a1655f3b 1161 device.printf("serial rs232 ok \n");
exarkun 0:ea04a1655f3b 1162
exarkun 0:ea04a1655f3b 1163 //calculs de tau ,Kv,Kp
exarkun 0:ea04a1655f3b 1164 tau=(J*R)/K;
exarkun 0:ea04a1655f3b 1165 Kv=r1*r2*tau*Ki-1.;
exarkun 0:ea04a1655f3b 1166 if(Kv<0){Kv = -Kv;}
exarkun 0:ea04a1655f3b 1167 Kp=r1*Ki*(1.+Kv)/Kv;
exarkun 0:ea04a1655f3b 1168
exarkun 0:ea04a1655f3b 1169 //initialisation moteur
exarkun 0:ea04a1655f3b 1170 PWM1.period(0.00005);// initialisation du rapport cyclique fixe la période à 50us----f=20Khz
exarkun 0:ea04a1655f3b 1171 frein_moteur1.write(0);//affectation de la valeur du frein moteur1
exarkun 0:ea04a1655f3b 1172 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 1173
exarkun 0:ea04a1655f3b 1174 //initialisation du spi
exarkun 0:ea04a1655f3b 1175 spi1.format(16,3); // Setup: bit data, high steady state clock, 2nd edge capture
exarkun 0:ea04a1655f3b 1176 spi1.frequency(1000000); // 1MHz
exarkun 0:ea04a1655f3b 1177
exarkun 0:ea04a1655f3b 1178 //lancement des tasks
exarkun 0:ea04a1655f3b 1179 time_up1.attach(&task1_switch, 0.0005);//"calcule de l'asservissement" initialisation du ticker a 2Khz "500us".
exarkun 1:2fe82be93e80 1180 time_up2.attach(&task2_switch, 0.034);//"retour d'information position.
exarkun 0:ea04a1655f3b 1181 time_up3.attach(&task3_switch, 0.0005);//"generation trajectoire" initialisation du ticker a 2khz "500us".
exarkun 0:ea04a1655f3b 1182 //time_up4.attach(&task4_switch, 0.0005);//"retour d'information position par rs232"initialisation du ticker a 100hz "10ms".
exarkun 0:ea04a1655f3b 1183 //time_up5.attach(&task5_switch, 0.0001);//"lecture et ecriture DATA SPI1 initialisation du ticker 10khz.
exarkun 0:ea04a1655f3b 1184
exarkun 1:2fe82be93e80 1185 //time_up6.attach(&task6_switch, 0.034);//retour d'information courant.
exarkun 1:2fe82be93e80 1186 time_up7.attach(&task7_switch, 0.00005);//lecture de la com rs tous les 100us.
exarkun 1:2fe82be93e80 1187 // time_up8.attach(&task8_switch, 0.5);//detection numero de page tous les 100 ms.
exarkun 1:2fe82be93e80 1188
exarkun 1:2fe82be93e80 1189 device.printf("sendme");
exarkun 1:2fe82be93e80 1190 count_ticks=0;
exarkun 1:2fe82be93e80 1191 c='0';
exarkun 1:2fe82be93e80 1192
exarkun 1:2fe82be93e80 1193 while(1)
exarkun 1:2fe82be93e80 1194 {
exarkun 1:2fe82be93e80 1195
exarkun 0:ea04a1655f3b 1196
exarkun 1:2fe82be93e80 1197 if(buttonCmd.IsNewCommandAvailable == 1)//si y as eu un bouton appuyé et que nous somme bien en la page n°7
exarkun 1:2fe82be93e80 1198
exarkun 1:2fe82be93e80 1199 {
exarkun 1:2fe82be93e80 1200 motorStep = 0;
exarkun 1:2fe82be93e80 1201 myled1 = 0;
exarkun 1:2fe82be93e80 1202 switch(buttonCmd.cmdNb)
exarkun 1:2fe82be93e80 1203 {
exarkun 1:2fe82be93e80 1204 case PageCmd:
exarkun 1:2fe82be93e80 1205 switch ( buttonCmd.var1)
exarkun 1:2fe82be93e80 1206 {
exarkun 1:2fe82be93e80 1207 case 0x00:
exarkun 1:2fe82be93e80 1208 page0();//ici la page0 es traité ----------- code de la page : 66 00 ff ff ff
exarkun 1:2fe82be93e80 1209 mRxMsg[0] = 0x00;mRxMsg[1] = 0x00;mRxMsg[2] = 0x00;mRxMsg[3] = 0x00;mRxMsg[4] = 0x00;
exarkun 1:2fe82be93e80 1210 break;
exarkun 1:2fe82be93e80 1211
exarkun 1:2fe82be93e80 1212 case 0x01:
exarkun 1:2fe82be93e80 1213 page1();//ici la page0 es traité ----------- code de la page : 66 01 ff ff ff
exarkun 1:2fe82be93e80 1214 mRxMsg[0] = 0x00;mRxMsg[1] = 0x00;mRxMsg[2] = 0x00;mRxMsg[3] = 0x00;mRxMsg[4] = 0x00;
exarkun 1:2fe82be93e80 1215 break;
exarkun 1:2fe82be93e80 1216
exarkun 1:2fe82be93e80 1217 case 0x02:
exarkun 1:2fe82be93e80 1218 page2();//ici la page0 es traité ----------- code de la page : 66 02 ff ff ff
exarkun 1:2fe82be93e80 1219 mRxMsg[0] = 0x00;mRxMsg[1] = 0x00;mRxMsg[2] = 0x00;mRxMsg[3] = 0x00;mRxMsg[4] = 0x00;
exarkun 1:2fe82be93e80 1220 break;
exarkun 1:2fe82be93e80 1221
exarkun 1:2fe82be93e80 1222 case 0x03:
exarkun 1:2fe82be93e80 1223 page3();//ici la page0 es traité ----------- code de la page : 66 03 ff ff ff
exarkun 1:2fe82be93e80 1224 mRxMsg[0] = 0x00;mRxMsg[1] = 0x00;mRxMsg[2] = 0x00;mRxMsg[3] = 0x00;mRxMsg[4] = 0x00;
exarkun 1:2fe82be93e80 1225 break;
exarkun 1:2fe82be93e80 1226
exarkun 1:2fe82be93e80 1227 case 0x04:
exarkun 1:2fe82be93e80 1228 page4();//ici la page0 es traité ----------- code de la page : 66 04 ff ff ff
exarkun 1:2fe82be93e80 1229 mRxMsg[0] = 0x00;mRxMsg[1] = 0x00;mRxMsg[2] = 0x00;mRxMsg[3] = 0x00;mRxMsg[4] = 0x00;
exarkun 1:2fe82be93e80 1230 break;
exarkun 1:2fe82be93e80 1231
exarkun 1:2fe82be93e80 1232 case 0x05:
exarkun 1:2fe82be93e80 1233 page5();//ici la page0 es traité ----------- code de la page : 66 05 ff ff ff
exarkun 1:2fe82be93e80 1234 mRxMsg[0] = 0x00;mRxMsg[1] = 0x00;mRxMsg[2] = 0x00;mRxMsg[3] = 0x00;mRxMsg[4] = 0x00;
exarkun 1:2fe82be93e80 1235 break;
exarkun 1:2fe82be93e80 1236
exarkun 1:2fe82be93e80 1237 case 0x06:
exarkun 1:2fe82be93e80 1238 page6();//ici la page6 es traité ----------- code de la page : 66 06 ff ff ff
exarkun 1:2fe82be93e80 1239 mRxMsg[0] = 0x00;mRxMsg[1] = 0x00;mRxMsg[2] = 0x00;mRxMsg[3] = 0x00;mRxMsg[4] = 0x00;
exarkun 1:2fe82be93e80 1240 break;
exarkun 1:2fe82be93e80 1241
exarkun 1:2fe82be93e80 1242 case 0x07:
exarkun 1:2fe82be93e80 1243 page7();//ici la page7 es traité ----------- code de la page : 66 07 ff ff ff
exarkun 1:2fe82be93e80 1244 mRxMsg[0] = 0x00;mRxMsg[1] = 0x00;mRxMsg[2] = 0x00;mRxMsg[3] = 0x00;mRxMsg[4] = 0x00;
exarkun 1:2fe82be93e80 1245 //memset(mRxMsg, 0, 5);
exarkun 1:2fe82be93e80 1246 break;
exarkun 1:2fe82be93e80 1247
exarkun 1:2fe82be93e80 1248 }
exarkun 1:2fe82be93e80 1249 break;
exarkun 1:2fe82be93e80 1250 }
exarkun 1:2fe82be93e80 1251 }
exarkun 0:ea04a1655f3b 1252
exarkun 1:2fe82be93e80 1253 ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
exarkun 1:2fe82be93e80 1254 ////////////////////////////////////////////////// page0 ////////////////////////////////////////////////////////////
exarkun 1:2fe82be93e80 1255 ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
exarkun 1:2fe82be93e80 1256
exarkun 1:2fe82be93e80 1257 if((buttonCmd.IsNewCommandAvailable == 1)&&(mRxMsg[1]==0x00))//si y as eu un bouton appuyé et que nous somme bien en la page n°0
exarkun 1:2fe82be93e80 1258 {
exarkun 1:2fe82be93e80 1259 motorStep = 0;
exarkun 1:2fe82be93e80 1260 myled1 = 0;
exarkun 1:2fe82be93e80 1261
exarkun 1:2fe82be93e80 1262 switch(buttonCmd.buttonId)
exarkun 1:2fe82be93e80 1263 {
exarkun 1:2fe82be93e80 1264 case 0x02: // boutn 'A' de la page 0
exarkun 1:2fe82be93e80 1265 myled1 = 1;
exarkun 1:2fe82be93e80 1266 c='a';
exarkun 1:2fe82be93e80 1267 buttonCmd.IsNewCommandAvailable = 0;
exarkun 1:2fe82be93e80 1268 break;
exarkun 1:2fe82be93e80 1269
exarkun 1:2fe82be93e80 1270 case 0x01: // boutn 'B' de la page 0
exarkun 1:2fe82be93e80 1271 myled1 = 1;
exarkun 1:2fe82be93e80 1272 c='b';
exarkun 1:2fe82be93e80 1273 buttonCmd.IsNewCommandAvailable = 0;
exarkun 1:2fe82be93e80 1274 break;
exarkun 1:2fe82be93e80 1275
exarkun 1:2fe82be93e80 1276 case 0x03: // boutn 'R' de la page 0
exarkun 1:2fe82be93e80 1277 myled1 = 1;
exarkun 1:2fe82be93e80 1278 c='c';
exarkun 1:2fe82be93e80 1279 buttonCmd.IsNewCommandAvailable = 0;
exarkun 1:2fe82be93e80 1280 break;
exarkun 1:2fe82be93e80 1281
exarkun 1:2fe82be93e80 1282 case 0x04: // boutn 'L' de la page 0
exarkun 1:2fe82be93e80 1283 myled1 = 1;
exarkun 1:2fe82be93e80 1284 c='d';
exarkun 1:2fe82be93e80 1285 buttonCmd.IsNewCommandAvailable = 0;
exarkun 1:2fe82be93e80 1286 break;
exarkun 1:2fe82be93e80 1287
exarkun 1:2fe82be93e80 1288 case 0x05: // boutn 'R2' de la page 0
exarkun 1:2fe82be93e80 1289 myled1 = 1;
exarkun 1:2fe82be93e80 1290 c='d';
exarkun 1:2fe82be93e80 1291 buttonCmd.IsNewCommandAvailable = 0;
exarkun 1:2fe82be93e80 1292 break;
exarkun 1:2fe82be93e80 1293 }
exarkun 1:2fe82be93e80 1294 }
exarkun 1:2fe82be93e80 1295
exarkun 1:2fe82be93e80 1296 ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
exarkun 1:2fe82be93e80 1297 ////////////////////////////////////////////////// page1 ////////////////////////////////////////////////////////////
exarkun 1:2fe82be93e80 1298 ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
exarkun 1:2fe82be93e80 1299
exarkun 1:2fe82be93e80 1300 if((buttonCmd.IsNewCommandAvailable == 1)&&(mRxMsg[1]==0x01))//si y as eu un bouton appuyé et que nous somme bien en la page n°1
exarkun 0:ea04a1655f3b 1301 {
exarkun 1:2fe82be93e80 1302 //page1();
exarkun 1:2fe82be93e80 1303 }
exarkun 1:2fe82be93e80 1304
exarkun 1:2fe82be93e80 1305 ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
exarkun 1:2fe82be93e80 1306 ////////////////////////////////////////////////// page2 ////////////////////////////////////////////////////////////
exarkun 1:2fe82be93e80 1307 ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
exarkun 1:2fe82be93e80 1308
exarkun 1:2fe82be93e80 1309 if((buttonCmd.IsNewCommandAvailable == 1)&&(mRxMsg[1]==0x02))//si y as eu un bouton appuyé et que nous somme bien en la page n°2
exarkun 1:2fe82be93e80 1310 {
exarkun 1:2fe82be93e80 1311 //page2();
exarkun 1:2fe82be93e80 1312 }
exarkun 1:2fe82be93e80 1313
exarkun 1:2fe82be93e80 1314 ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
exarkun 1:2fe82be93e80 1315 ////////////////////////////////////////////////// page3 ////////////////////////////////////////////////////////////
exarkun 1:2fe82be93e80 1316 ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
exarkun 1:2fe82be93e80 1317
exarkun 1:2fe82be93e80 1318 if((buttonCmd.IsNewCommandAvailable == 1)&&(mRxMsg[1]==0x03))//si y as eu un bouton appuyé et que nous somme bien en la page n°3
exarkun 1:2fe82be93e80 1319 {
exarkun 1:2fe82be93e80 1320 //page3();
exarkun 1:2fe82be93e80 1321 }
exarkun 1:2fe82be93e80 1322
exarkun 1:2fe82be93e80 1323 ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
exarkun 1:2fe82be93e80 1324 ////////////////////////////////////////////////// page4 ////////////////////////////////////////////////////////////
exarkun 1:2fe82be93e80 1325 ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
exarkun 1:2fe82be93e80 1326
exarkun 1:2fe82be93e80 1327 if((buttonCmd.IsNewCommandAvailable == 1)&&(mRxMsg[1]==0x04))//si y as eu un bouton appuyé et que nous somme bien en la page n°4
exarkun 1:2fe82be93e80 1328 {
exarkun 1:2fe82be93e80 1329 //page4();
exarkun 1:2fe82be93e80 1330 }
exarkun 1:2fe82be93e80 1331
exarkun 1:2fe82be93e80 1332 ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
exarkun 1:2fe82be93e80 1333 ////////////////////////////////////////////////// page5 ////////////////////////////////////////////////////////////
exarkun 1:2fe82be93e80 1334 ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
exarkun 1:2fe82be93e80 1335
exarkun 1:2fe82be93e80 1336 if((buttonCmd.IsNewCommandAvailable == 1)&&(mRxMsg[1]==0x05))//si y as eu un bouton appuyé et que nous somme bien en la page n°5
exarkun 1:2fe82be93e80 1337 {
exarkun 1:2fe82be93e80 1338 //page5();
exarkun 1:2fe82be93e80 1339 }
exarkun 1:2fe82be93e80 1340
exarkun 1:2fe82be93e80 1341 ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
exarkun 1:2fe82be93e80 1342 ////////////////////////////////////////////////// page6 ////////////////////////////////////////////////////////////
exarkun 1:2fe82be93e80 1343 ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
exarkun 0:ea04a1655f3b 1344
exarkun 1:2fe82be93e80 1345 if((buttonCmd.IsNewCommandAvailable == 1)&&(mRxMsg[1]==0x06))//si y as eu un bouton appuyé et que nous somme bien en la page n°6
exarkun 1:2fe82be93e80 1346 {
exarkun 1:2fe82be93e80 1347 //page6();
exarkun 1:2fe82be93e80 1348 }
exarkun 1:2fe82be93e80 1349
exarkun 1:2fe82be93e80 1350 ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
exarkun 1:2fe82be93e80 1351 ////////////////////////////////////////////////// page7 ////////////////////////////////////////////////////////////
exarkun 1:2fe82be93e80 1352 ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
exarkun 1:2fe82be93e80 1353
exarkun 1:2fe82be93e80 1354 if((buttonCmd.IsNewCommandAvailable == 1)&&(mRxMsg[1]==0x07))//si y as eu un bouton appuyé et que nous somme bien en la page n°7
exarkun 1:2fe82be93e80 1355 {
exarkun 1:2fe82be93e80 1356 motorStep = 0;
exarkun 1:2fe82be93e80 1357 myled1 = 1;
exarkun 1:2fe82be93e80 1358
exarkun 1:2fe82be93e80 1359 switch(buttonCmd.buttonId)
exarkun 0:ea04a1655f3b 1360 {
exarkun 1:2fe82be93e80 1361 case 0x2f: // boutn 'A' de la page 7
exarkun 1:2fe82be93e80 1362 myled1 = 0;
exarkun 1:2fe82be93e80 1363 c='a';
exarkun 1:2fe82be93e80 1364 buttonCmd.IsNewCommandAvailable = 0;
exarkun 1:2fe82be93e80 1365 break;
exarkun 0:ea04a1655f3b 1366
exarkun 1:2fe82be93e80 1367 case 0x30: // boutn 'B' de la page 7
exarkun 1:2fe82be93e80 1368 myled1 = 0;
exarkun 1:2fe82be93e80 1369 c='b';
exarkun 1:2fe82be93e80 1370 buttonCmd.IsNewCommandAvailable = 0;
exarkun 1:2fe82be93e80 1371 break;
exarkun 1:2fe82be93e80 1372
exarkun 1:2fe82be93e80 1373 case 0x31: // boutn 'C' de la page 7
exarkun 1:2fe82be93e80 1374 myled1 = 0;
exarkun 1:2fe82be93e80 1375 c='c';
exarkun 1:2fe82be93e80 1376 buttonCmd.IsNewCommandAvailable = 0;
exarkun 1:2fe82be93e80 1377 break;
exarkun 1:2fe82be93e80 1378
exarkun 1:2fe82be93e80 1379 case 0x32: // boutn 'D' de la page 7
exarkun 1:2fe82be93e80 1380 myled1 = 0;
exarkun 1:2fe82be93e80 1381 c='d';
exarkun 1:2fe82be93e80 1382 buttonCmd.IsNewCommandAvailable = 0;
exarkun 1:2fe82be93e80 1383 break;
exarkun 1:2fe82be93e80 1384
exarkun 1:2fe82be93e80 1385 case 0x01: // boutn 'D' de la page 7
exarkun 1:2fe82be93e80 1386 myled1 = 0;
exarkun 1:2fe82be93e80 1387 c='d';
exarkun 1:2fe82be93e80 1388 buttonCmd.IsNewCommandAvailable = 0;
exarkun 1:2fe82be93e80 1389 break;
exarkun 1:2fe82be93e80 1390
exarkun 1:2fe82be93e80 1391 }
exarkun 1:2fe82be93e80 1392 }
exarkun 1:2fe82be93e80 1393 //c=valueFromMaster;//valeur par la liaison spi par le master
exarkun 1:2fe82be93e80 1394 //device.scanf("%c",&c);//capture du caract ascii
exarkun 1:2fe82be93e80 1395
exarkun 1:2fe82be93e80 1396 ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
exarkun 1:2fe82be93e80 1397 ////////////////////////////////////////////////// differants mouvement ////////////////////////////////////////////////////////////
exarkun 1:2fe82be93e80 1398 ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
exarkun 1:2fe82be93e80 1399 (LPC_QEI->QEIPOS)=0;
exarkun 1:2fe82be93e80 1400 switch(c)//commande moteur
exarkun 1:2fe82be93e80 1401 {
exarkun 0:ea04a1655f3b 1402 case 'a':
exarkun 0:ea04a1655f3b 1403 //qei.Reset(0);
exarkun 1:2fe82be93e80 1404 switch(motorStep)
exarkun 1:2fe82be93e80 1405 {
exarkun 1:2fe82be93e80 1406 case 0:
exarkun 1:2fe82be93e80 1407 consigne=70000 ; //4 tour
exarkun 1:2fe82be93e80 1408 slope_time=2.5;//t =2500ms
exarkun 1:2fe82be93e80 1409 start_slope=true;
exarkun 1:2fe82be93e80 1410 {
exarkun 1:2fe82be93e80 1411 myled3 = 0;
exarkun 1:2fe82be93e80 1412 motorStep = 1;
exarkun 1:2fe82be93e80 1413 }
exarkun 1:2fe82be93e80 1414 break;
exarkun 1:2fe82be93e80 1415
exarkun 1:2fe82be93e80 1416 case 1:
exarkun 1:2fe82be93e80 1417 if(true == Wait2(0, 3000))
exarkun 1:2fe82be93e80 1418 {
exarkun 1:2fe82be93e80 1419 myled3 = 1;
exarkun 1:2fe82be93e80 1420 motorStep = 2;
exarkun 1:2fe82be93e80 1421 }
exarkun 1:2fe82be93e80 1422 break;
exarkun 1:2fe82be93e80 1423
exarkun 1:2fe82be93e80 1424 case 2:
exarkun 1:2fe82be93e80 1425 consigne=0 ; //4 tour
exarkun 1:2fe82be93e80 1426 slope_time=2.5;//2500ms
exarkun 1:2fe82be93e80 1427 start_slope=true;
exarkun 1:2fe82be93e80 1428 {
exarkun 1:2fe82be93e80 1429 motorStep = 3;
exarkun 1:2fe82be93e80 1430 }
exarkun 1:2fe82be93e80 1431 break;
exarkun 1:2fe82be93e80 1432
exarkun 1:2fe82be93e80 1433 case 3:
exarkun 1:2fe82be93e80 1434 if(true == Wait2(0, 3000))
exarkun 1:2fe82be93e80 1435 {
exarkun 1:2fe82be93e80 1436 motorStep = 4;
exarkun 1:2fe82be93e80 1437 }
exarkun 1:2fe82be93e80 1438 break;
exarkun 1:2fe82be93e80 1439
exarkun 1:2fe82be93e80 1440 case 4:
exarkun 1:2fe82be93e80 1441 consigne=-70000 ; //4 tour
exarkun 1:2fe82be93e80 1442 slope_time=2.5;//2500ms
exarkun 1:2fe82be93e80 1443 start_slope=true;
exarkun 1:2fe82be93e80 1444 {
exarkun 1:2fe82be93e80 1445 motorStep = 5;
exarkun 1:2fe82be93e80 1446 }
exarkun 1:2fe82be93e80 1447 break;
exarkun 1:2fe82be93e80 1448
exarkun 1:2fe82be93e80 1449 case 5:
exarkun 1:2fe82be93e80 1450 if(true == Wait2(0, 3000))
exarkun 1:2fe82be93e80 1451 {
exarkun 1:2fe82be93e80 1452 motorStep = 6;
exarkun 1:2fe82be93e80 1453 }
exarkun 1:2fe82be93e80 1454 break;
exarkun 1:2fe82be93e80 1455
exarkun 1:2fe82be93e80 1456 case 6:
exarkun 1:2fe82be93e80 1457 consigne=0 ; //1 tour
exarkun 1:2fe82be93e80 1458 slope_time=2.5;//2500ms
exarkun 1:2fe82be93e80 1459 start_slope=true;
exarkun 1:2fe82be93e80 1460 {
exarkun 1:2fe82be93e80 1461 motorStep = 7;
exarkun 1:2fe82be93e80 1462 }
exarkun 1:2fe82be93e80 1463 break;
exarkun 1:2fe82be93e80 1464
exarkun 1:2fe82be93e80 1465 case 7:
exarkun 1:2fe82be93e80 1466 if(true == Wait2(0, 3000))
exarkun 1:2fe82be93e80 1467 {
exarkun 1:2fe82be93e80 1468 motorStep = 0;
exarkun 1:2fe82be93e80 1469 }
exarkun 1:2fe82be93e80 1470 break;
exarkun 1:2fe82be93e80 1471 }
exarkun 1:2fe82be93e80 1472 break;
exarkun 0:ea04a1655f3b 1473
exarkun 0:ea04a1655f3b 1474 case 'b':
exarkun 0:ea04a1655f3b 1475 //qei.Reset(0);
exarkun 1:2fe82be93e80 1476 switch(motorStep)
exarkun 1:2fe82be93e80 1477 {
exarkun 1:2fe82be93e80 1478 case 0:
exarkun 1:2fe82be93e80 1479 consigne=0 ; //1 tour
exarkun 1:2fe82be93e80 1480 slope_time=0.25;//2500ms
exarkun 1:2fe82be93e80 1481 start_slope=true;
exarkun 1:2fe82be93e80 1482 {
exarkun 1:2fe82be93e80 1483 motorStep = 1;
exarkun 1:2fe82be93e80 1484 }
exarkun 1:2fe82be93e80 1485 break;
exarkun 1:2fe82be93e80 1486
exarkun 1:2fe82be93e80 1487 case 1:
exarkun 1:2fe82be93e80 1488 if(true == Wait2(0, 400))
exarkun 1:2fe82be93e80 1489 {
exarkun 1:2fe82be93e80 1490 motorStep = 2;
exarkun 1:2fe82be93e80 1491 }
exarkun 1:2fe82be93e80 1492 break;
exarkun 1:2fe82be93e80 1493
exarkun 1:2fe82be93e80 1494 case 2:
exarkun 1:2fe82be93e80 1495 consigne=10000 ; //1 tour
exarkun 1:2fe82be93e80 1496 slope_time=0.25;//t=ms
exarkun 1:2fe82be93e80 1497 start_slope=true;
exarkun 1:2fe82be93e80 1498 {
exarkun 1:2fe82be93e80 1499 motorStep = 3;
exarkun 1:2fe82be93e80 1500 }
exarkun 1:2fe82be93e80 1501 break;
exarkun 1:2fe82be93e80 1502
exarkun 1:2fe82be93e80 1503 case 3:
exarkun 1:2fe82be93e80 1504 if(true == Wait2(0, 400))
exarkun 1:2fe82be93e80 1505 {
exarkun 1:2fe82be93e80 1506 motorStep = 4;
exarkun 1:2fe82be93e80 1507 }
exarkun 1:2fe82be93e80 1508 break;
exarkun 1:2fe82be93e80 1509
exarkun 1:2fe82be93e80 1510 case 4:
exarkun 1:2fe82be93e80 1511 consigne=20000 ; //1 tour
exarkun 1:2fe82be93e80 1512 slope_time=0.25;//t=ms
exarkun 1:2fe82be93e80 1513 start_slope=true;
exarkun 1:2fe82be93e80 1514 {
exarkun 1:2fe82be93e80 1515 motorStep = 5;
exarkun 1:2fe82be93e80 1516 }
exarkun 1:2fe82be93e80 1517 break;
exarkun 1:2fe82be93e80 1518
exarkun 1:2fe82be93e80 1519 case 5:
exarkun 1:2fe82be93e80 1520 if(true == Wait2(0, 400))
exarkun 1:2fe82be93e80 1521 {
exarkun 1:2fe82be93e80 1522 motorStep = 6;
exarkun 1:2fe82be93e80 1523 }
exarkun 1:2fe82be93e80 1524 break;
exarkun 1:2fe82be93e80 1525
exarkun 1:2fe82be93e80 1526 case 6:
exarkun 1:2fe82be93e80 1527 consigne=30000 ; //1 tour
exarkun 1:2fe82be93e80 1528 slope_time=0.25;//t=ms
exarkun 1:2fe82be93e80 1529 start_slope=true;
exarkun 1:2fe82be93e80 1530 {
exarkun 1:2fe82be93e80 1531 motorStep = 7;
exarkun 1:2fe82be93e80 1532 }
exarkun 1:2fe82be93e80 1533 break;
exarkun 1:2fe82be93e80 1534
exarkun 1:2fe82be93e80 1535 case 7:
exarkun 1:2fe82be93e80 1536 if(true == Wait2(0, 400))
exarkun 1:2fe82be93e80 1537 {
exarkun 1:2fe82be93e80 1538 motorStep = 8;
exarkun 1:2fe82be93e80 1539 }
exarkun 1:2fe82be93e80 1540 break;
exarkun 1:2fe82be93e80 1541
exarkun 1:2fe82be93e80 1542 case 8:
exarkun 1:2fe82be93e80 1543 consigne=40000 ; //1 tour
exarkun 1:2fe82be93e80 1544 slope_time=0.25;//t=ms
exarkun 1:2fe82be93e80 1545 start_slope=true;
exarkun 1:2fe82be93e80 1546 {
exarkun 1:2fe82be93e80 1547 motorStep = 9;
exarkun 1:2fe82be93e80 1548 }
exarkun 1:2fe82be93e80 1549 break;
exarkun 1:2fe82be93e80 1550
exarkun 1:2fe82be93e80 1551 case 9:
exarkun 1:2fe82be93e80 1552 if(true == Wait2(0, 400))
exarkun 1:2fe82be93e80 1553 {
exarkun 1:2fe82be93e80 1554 motorStep = 10;
exarkun 1:2fe82be93e80 1555 }
exarkun 1:2fe82be93e80 1556 break;
exarkun 1:2fe82be93e80 1557
exarkun 1:2fe82be93e80 1558 case 10:
exarkun 1:2fe82be93e80 1559 consigne=50000 ; //1 tour
exarkun 1:2fe82be93e80 1560 slope_time=0.25;//t=ms
exarkun 1:2fe82be93e80 1561 start_slope=true;
exarkun 1:2fe82be93e80 1562 {
exarkun 1:2fe82be93e80 1563 motorStep = 11;
exarkun 1:2fe82be93e80 1564 }
exarkun 1:2fe82be93e80 1565 break;
exarkun 1:2fe82be93e80 1566
exarkun 1:2fe82be93e80 1567 case 11:
exarkun 1:2fe82be93e80 1568 if(true == Wait2(0, 400))
exarkun 1:2fe82be93e80 1569 {
exarkun 1:2fe82be93e80 1570 motorStep = 12;
exarkun 1:2fe82be93e80 1571 }
exarkun 1:2fe82be93e80 1572 break;
exarkun 1:2fe82be93e80 1573
exarkun 1:2fe82be93e80 1574 case 12:
exarkun 1:2fe82be93e80 1575 consigne=60000 ; //1 tour
exarkun 1:2fe82be93e80 1576 slope_time=0.25;//t=ms
exarkun 1:2fe82be93e80 1577 start_slope=true;
exarkun 1:2fe82be93e80 1578 {
exarkun 1:2fe82be93e80 1579 motorStep = 13;
exarkun 1:2fe82be93e80 1580 }
exarkun 1:2fe82be93e80 1581 break;
exarkun 1:2fe82be93e80 1582
exarkun 1:2fe82be93e80 1583 case 13:
exarkun 1:2fe82be93e80 1584 if(true == Wait2(0, 400))
exarkun 1:2fe82be93e80 1585 {
exarkun 1:2fe82be93e80 1586 motorStep = 14;
exarkun 1:2fe82be93e80 1587 }
exarkun 1:2fe82be93e80 1588 break;
exarkun 1:2fe82be93e80 1589
exarkun 1:2fe82be93e80 1590 case 14:
exarkun 1:2fe82be93e80 1591 consigne=70000 ; //1 tour
exarkun 1:2fe82be93e80 1592 slope_time=0.25;//t=ms
exarkun 1:2fe82be93e80 1593 start_slope=true;
exarkun 1:2fe82be93e80 1594 {
exarkun 1:2fe82be93e80 1595 motorStep = 15;
exarkun 1:2fe82be93e80 1596 }
exarkun 1:2fe82be93e80 1597 break;
exarkun 1:2fe82be93e80 1598
exarkun 1:2fe82be93e80 1599 case 15:
exarkun 1:2fe82be93e80 1600 if(true == Wait2(0, 400))
exarkun 1:2fe82be93e80 1601 {
exarkun 1:2fe82be93e80 1602 motorStep = 0;
exarkun 1:2fe82be93e80 1603 }
exarkun 1:2fe82be93e80 1604 break;
exarkun 1:2fe82be93e80 1605
exarkun 1:2fe82be93e80 1606 }
exarkun 1:2fe82be93e80 1607 break;
exarkun 1:2fe82be93e80 1608
exarkun 1:2fe82be93e80 1609
exarkun 1:2fe82be93e80 1610 case 'c'://arret a la position actuelle
exarkun 1:2fe82be93e80 1611 //qei.Reset(0);
exarkun 1:2fe82be93e80 1612 switch(motorStep)
exarkun 1:2fe82be93e80 1613 {
exarkun 1:2fe82be93e80 1614 case 0:
exarkun 1:2fe82be93e80 1615 consigne=70000 ; //1 tour
exarkun 1:2fe82be93e80 1616 slope_time=0.5;//t =0.ms
exarkun 1:2fe82be93e80 1617 start_slope=true;
exarkun 1:2fe82be93e80 1618 {
exarkun 1:2fe82be93e80 1619 motorStep = 1;
exarkun 1:2fe82be93e80 1620 }
exarkun 1:2fe82be93e80 1621 break;
exarkun 1:2fe82be93e80 1622
exarkun 1:2fe82be93e80 1623 case 1:
exarkun 1:2fe82be93e80 1624 if(true == Wait2(0, 1000))
exarkun 1:2fe82be93e80 1625 {
exarkun 1:2fe82be93e80 1626 motorStep = 2;
exarkun 1:2fe82be93e80 1627 }
exarkun 1:2fe82be93e80 1628 break;
exarkun 1:2fe82be93e80 1629
exarkun 1:2fe82be93e80 1630 case 2:
exarkun 1:2fe82be93e80 1631 consigne=0 ; //1 tour
exarkun 1:2fe82be93e80 1632 slope_time=0.5;//t=ms
exarkun 1:2fe82be93e80 1633 start_slope=true;
exarkun 1:2fe82be93e80 1634 {
exarkun 1:2fe82be93e80 1635 motorStep = 3;
exarkun 1:2fe82be93e80 1636 }
exarkun 1:2fe82be93e80 1637 break;
exarkun 1:2fe82be93e80 1638
exarkun 1:2fe82be93e80 1639 case 3:
exarkun 1:2fe82be93e80 1640 if(true == Wait2(0, 1000))
exarkun 1:2fe82be93e80 1641 {
exarkun 1:2fe82be93e80 1642 motorStep = 0;
exarkun 1:2fe82be93e80 1643 }
exarkun 1:2fe82be93e80 1644 break;
exarkun 1:2fe82be93e80 1645 }
exarkun 1:2fe82be93e80 1646 break;
exarkun 1:2fe82be93e80 1647
exarkun 1:2fe82be93e80 1648 case 'd'://arret a la position actuelle
exarkun 1:2fe82be93e80 1649 //qei.Reset(0);
exarkun 1:2fe82be93e80 1650 position_a_cmd_darret=(LPC_QEI->QEIPOS);//sauvegarde position d'arret
exarkun 1:2fe82be93e80 1651 consigne=position_a_cmd_darret ; //arret a la position
exarkun 1:2fe82be93e80 1652 slope_time=0.25;//t =2000ms
exarkun 0:ea04a1655f3b 1653 start_slope=true;
exarkun 1:2fe82be93e80 1654 Wait2(0, 500);
exarkun 1:2fe82be93e80 1655
exarkun 0:ea04a1655f3b 1656 break;
exarkun 1:2fe82be93e80 1657
exarkun 0:ea04a1655f3b 1658 }
exarkun 1:2fe82be93e80 1659
exarkun 0:ea04a1655f3b 1660 /*if(device2.readable())//ici on utilise une seconde com rs avec un autre ecrant nextion
exarkun 0:ea04a1655f3b 1661 {
exarkun 0:ea04a1655f3b 1662 c2 = device2.getc();
exarkun 0:ea04a1655f3b 1663 mRxMsg2[mRxIdx2] = c2;
exarkun 0:ea04a1655f3b 1664 mRxIdx2++;
exarkun 0:ea04a1655f3b 1665 if ((mRxIdx2 >= 3) && (mRxMsg2[mRxIdx2-1] == 0xff) && (mRxMsg2[mRxIdx2-2] == 0xff) && (mRxMsg2[mRxIdx2-3] == 0xff)) //valid rx message
exarkun 0:ea04a1655f3b 1666 {
exarkun 0:ea04a1655f3b 1667 mRxIdx2=0;
exarkun 0:ea04a1655f3b 1668
exarkun 0:ea04a1655f3b 1669 if(mRxMsg2[0] == 0x67) //Touch coordinate data return
exarkun 0:ea04a1655f3b 1670 { mTouchX2 = (mRxMsg2[1]*256) + mRxMsg2[2];
exarkun 0:ea04a1655f3b 1671 mTouchY2 = (mRxMsg2[3]*256) + mRxMsg2[4];
exarkun 0:ea04a1655f3b 1672 if(mRxMsg2[5] == 0x01)
exarkun 0:ea04a1655f3b 1673 mTouch2 = true;
exarkun 0:ea04a1655f3b 1674 else
exarkun 0:ea04a1655f3b 1675 mTouch2 = false;
exarkun 0:ea04a1655f3b 1676 }
exarkun 0:ea04a1655f3b 1677 //start switch
exarkun 0:ea04a1655f3b 1678 if((mRxMsg2[0] == 0x65)&&(mRxMsg2[1] == 0x01)&&(mRxMsg2[2] == 0x01)&&(mRxMsg2[3] == 0x00))
exarkun 0:ea04a1655f3b 1679 {
exarkun 0:ea04a1655f3b 1680 keyboard.printf("t");
exarkun 0:ea04a1655f3b 1681 }//uniquement le bouton start allumeras la led 1 en release ---------------SY
exarkun 0:ea04a1655f3b 1682
exarkun 0:ea04a1655f3b 1683 }
exarkun 0:ea04a1655f3b 1684 }*/
exarkun 0:ea04a1655f3b 1685
exarkun 0:ea04a1655f3b 1686 //wait(0.05);
exarkun 1:2fe82be93e80 1687 }
exarkun 0:ea04a1655f3b 1688 }