motor dc driver with lcd nextion nx8048t050_011
Dependencies: mbed QEI_hw NVIC_set_all_priorities SoftPWM
Diff: main.cpp
- Revision:
- 1:2fe82be93e80
- Parent:
- 0:ea04a1655f3b
- Child:
- 2:e72b06f87c8b
--- a/main.cpp Fri Sep 27 12:46:15 2019 +0000 +++ b/main.cpp Fri Oct 18 13:14:40 2019 +0000 @@ -3,11 +3,87 @@ //rajout de la conversion AD p20--------( 15 / 11 / 2017 ) task6 //rajout fonction generation trajectoire a tester "il y as un probleme de position final lorsque on change "slope_time" //rajout en task2 visualisation des pulses avec "telemetry viewer v0.4" +//rajout afficheur nextion nx8048t050_011 ---------( 05 / 10 / 2019 ) #include "mbed.h" #include "qeihw.h" #include "NVIC_set_all_priorities.h" +#include "timer.hpp" +#include "NextionLCD.h" +//declaration des variables afficheur + +#define BLACK 0 +#define BLUE 31 +#define BROWN 48192 +#define GREEN 2016 +#define YELLOW 65504 +#define RED 63488 +#define GRAY 33840 +#define WHITE 65535 + + typedef struct ButtonCommand +{ + char IsNewCommandAvailable; + char IsButtonPressed; + char cmdNb; + char buttonId; + char data1; + char data2; + char var1; +}ButtonCommand; + +typedef enum +{ + ButtonCmd = 0x65,//Touch event return data + PageCmd = 0x66,//Current page ID number returns + TouchCmd = 0x67,//Touch coordinate data return + TouchEentCmd = 0x68,//Touch Event in sleep mode + StringDataCmd = 0x70,//String variable data returns + NumericDataCmd = 0x71,//Numeric variable data returns + SleepModeCmd = 0x86,//Device automatically enters into sleep mode + WakeUpCmd = 0x87,//Device automatically wake up + StartUpCmd = 0x88,//System successful start up + StartSDCmd = 0x89,//Start SD card upgrade + DataTTRCmd = 0xfe,//Data transparent transmit ready + +}CommandNb; + +typedef enum +{ + Page0 = 0x00, + Page1 = 0x01, + Page2 = 0x02, + Page3 = 0x03, + Page4 = 0x04, + Page5 = 0x05, + Page6 = 0x06, + Page7 = 0x07, +}PageNb; + +typedef enum +{ + Invalid_instruction = 0x0, + Successful_execution_of_instruction = 0x01, + Page_ID_invalid = 0x03, + Picture_ID_invalid = 0x04, + Font_ID_invalid = 0x05, + Baud_rate_setting_invalid = 0x11, + Curve_control_ID_number_or_channel_number_is_invalid = 0x12, + Variable_name_invalid = 0x1a, + Variable_operation_invalid = 0x1b, + Failed_to_assign = 0x1c, + Operate_PERFROM_failed = 0x1d, + Parameter_quantity_invalid = 0x1e, + IO_operate_failed = 0x1f, + +}ErrorNb; + +ButtonCommand buttonCmd; +char Cmd; +bool newCmdAvailable = false; +PageNb CurrentPageNb = Page0; + // déclaration du hardware Serial pc(USBTX, USBRX);//utilisation de la liaison usb @@ -23,10 +99,10 @@ SPISlave spi1(p5, p6, p7, p8); // mosi, miso, sclk, ssel -AnalogIn Ain(p20); +AnalogIn Ain(p20); // définition des timers. -Timer timer1; +//Timer timer1; Timer timer2; //definition spi1 @@ -197,7 +273,7 @@ } //recuperation de la valeur val du sliders h0 -// example : get_val(0); +//example : get_val(0); void get_val(int n) { device.printf("get h%d.val %c%c%c",n, 0xff, 0xff, 0xff);//recuperation de la valeur val du sliders h0 @@ -237,7 +313,6 @@ return n; } - ///////////////////////////////////////////////////////////////////////////// // declaration de la fonction moteur1 // ///////////////////////////////////////////////////////////////////////////// @@ -248,7 +323,7 @@ ///////////////////////////////////////////////////////////////////// // mouvement trapezoide non tésté // ///////////////////////////////////////////////////////////////////// - +/* timer1.start(); // déclenchement du timer1 timer2.start(); // déclenchement du timer2 //ACC @@ -298,11 +373,9 @@ } timer2.reset(); // remise à zéro du timer2 +*/ }; - - - ////////////////////////////////////////////////////////////////////////////////////////// // declaration des differantes pages // ////////////////////////////////////////////////////////////////////////////////////////// @@ -315,24 +388,25 @@ //wait_ms(10); //device.printf("page %d%c%c%c",0x0, 0xff, 0xff, 0xff);// saut a la page0------sy -//wait_ms(10); -device.printf("t6.txt=\"soft V0.01\"%c%c%c", 0xff, 0xff, 0xff);//affiche la version soft -------sy -wait_ms(5); +//wait_ms(10); +device.printf("t0.txt=\"position\"%c%c%c", 0xff, 0xff, 0xff);//affiche la version soft -------sy +device.printf("t6.txt=\"soft V0.014\"%c%c%c", 0xff, 0xff, 0xff);//affiche la version soft -------sy +//wait_ms(5); device.printf("b13.txt=\"flyready\"%c%c%c", 0xff, 0xff, 0xff);//affiche la version soft -------sy -wait_ms(5); +//wait_ms(5); device.printf("b12.txt=\"BREAK\"%c%c%c", 0xff, 0xff, 0xff);//affiche la version soft -------sy -wait_ms(5); +//wait_ms(5); device.printf("b11.txt=\"LANDING\"%c%c%c", 0xff, 0xff, 0xff);//affiche la version soft -------sy -wait_ms(5); +//wait_ms(5); device.printf("b21.txt=\"Quantum\"%c%c%c", 0xff, 0xff, 0xff);//affiche la version soft -------sy -wait_ms(5); +//wait_ms(5); device.printf("b18.txt=\"Speed M\"%c%c%c", 0xff, 0xff, 0xff);//affiche la version soft -------sy -wait_ms(5); +//wait_ms(5); device.printf("b19.txt=\"couple M\"%c%c%c", 0xff, 0xff, 0xff);//affiche la version soft -------sy -wait_ms(5); +//wait_ms(5); device.printf("b20.txt=\"Afterburner\"%c%c%c", 0xff, 0xff, 0xff);//affiche la version soft -------sy -wait_ms(5); +//wait_ms(5); //device.printf("b0.pic=17%c%c%c", 0xff, 0xff, 0xff);//chager l image du bouton b0 par l image n°17------sy //wait_ms(10); @@ -343,7 +417,7 @@ ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// //FLY READY switch if((mRxMsg[0] == 0x65)&&(mRxMsg[1] == 0x00)&&(mRxMsg[2] == 0x19)&&(mRxMsg[3] == 0x01)) - { + { myled3=1; //keyboard.printf("r");//flight ready }//uniquement le bouton allumeras la led 1 en release ---------------SY ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// @@ -362,7 +436,7 @@ ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// //LANDING switch if((mRxMsg[0] == 0x65)&&(mRxMsg[1] == 0x00)&&(mRxMsg[2] == 0x17)&&(mRxMsg[3] == 0x01)) - { + {myled3=1; //keyboard.printf("n");//landing mode }//uniquement le bouton home allumeras la led 3 en release ---------------SY @@ -603,12 +677,13 @@ //ici il faut completer le code pour pouvoir detecter le bon bouton en press event et release event //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 - +myled3=0; } ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// //******************************************************************page1******************************************************************// ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + void page1()//code de la page : 6601ffffff { device.printf("bt0.txt=\"BREAK1\"%c%c%c", 0xff, 0xff, 0xff);//affiche break sur bouton bt0 -------sy @@ -617,47 +692,49 @@ ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// //******************************************************************page2******************************************************************// ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + void page2()//code de la page : 6602ffffff { device.printf("b0.txt=\"BREAK2\"%c%c%c", 0xff, 0xff, 0xff);//affiche break sur bouton b0 -------sy -get_val(3);//donner l'ordre d envoyer la valeur val de h3 -int valeur_val=lecture_slider_RS_lcd();//recuperation de la valeur val de h3 -device.printf("n3.val=%d %c%c%c", valeur_val, 0xff, 0xff, 0xff);//affiche le nombre sur n1 -------sy -device.printf("z0.val=%d %c%c%c", valeur_val, 0xff, 0xff, 0xff);//affiche le nombre sur z0 gauge -------sy +//get_val(3);//donner l'ordre d envoyer la valeur val de h3 +//int valeur_val=lecture_slider_RS_lcd();//recuperation de la valeur val de h3 +//device.printf("n3.val=%d %c%c%c", valeur_val, 0xff, 0xff, 0xff);//affiche le nombre sur n1 -------sy +//device.printf("z0.val=%d %c%c%c", valeur_val, 0xff, 0xff, 0xff);//affiche le nombre sur z0 gauge -------sy } ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// //******************************************************************page3******************************************************************// ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + void page3()//code de la page : 6603ffffff { -device.printf("b19.txt=\"BREAK3\"%c%c%c", 0xff, 0xff, 0xff);//affiche break sur bouton b19 -------sy +device.printf("t0.txt=\"BREAK3\"%c%c%c", 0xff, 0xff, 0xff);//affiche break sur bouton b19 -------sy } ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// //******************************************************************page4******************************************************************// ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + void page4()//code de la page : 6604ffffff { device.printf("t0.txt=\"BREAK4\"%c%c%c", 0xff, 0xff, 0xff);//affiche break sur bouton bt0 -------sy - get_val_h0(); - val_temp1=lecture_slider_RS_lcd();//recuperation de la valeur du sliders h0 dans val_temp - device.printf("n1.val=%d %c%c%c", val_temp1, 0xff, 0xff, 0xff);//affiche le nombre sur n1 -------sy +// get_val_h0(); +// val_temp1=lecture_slider_RS_lcd();//recuperation de la valeur du sliders h0 dans val_temp +// device.printf("n1.val=%d %c%c%c", val_temp1, 0xff, 0xff, 0xff);//affiche le nombre sur n1 -------sy } ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// //******************************************************************page5******************************************************************// ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + void page5()//code de la page : 6605ffffff { -device.printf("t0.txt=\"BREAK5\"%c%c%c", 0xff, 0xff, 0xff);//affiche break sur bouton bt0 -------sy -device.printf("t1.txt=\"500ms/div\"%c%c%c", 0xff, 0xff, 0xff);//affiche break sur bouton bt0 -------sy - -device.printf("g0.txt=\"position M\"%c%c%c", 0xff, 0xff, 0xff);//affiche break sur bouton bt0 -------sy +//device.printf("t0.txt=\"BREAK5\"%c%c%c", 0xff, 0xff, 0xff);//affiche break sur bouton bt0 -------sy +//device.printf("t1.txt=\"500ms/div\"%c%c%c", 0xff, 0xff, 0xff);//affiche break sur bouton bt0 -------sy +//device.printf("g0.txt=\"position M\"%c%c%c", 0xff, 0xff, 0xff);//affiche break sur bouton bt0 -------sy device.printf("add 1,0,%d%c%c%c", (position_actuelle/500), 0xff, 0xff, 0xff);// pour la fonction waveform add id1,chanel0,position actu - } ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// @@ -666,13 +743,58 @@ void page6()//code de la page : 6606ffffff { - -device.printf("t1.txt=\"courant\"%c%c%c", 0xff, 0xff, 0xff);//affiche break sur bouton bt0 -------sy -device.printf("t0.txt=\"position\"%c%c%c", 0xff, 0xff, 0xff);//affiche break sur bouton bt0 -------sy +//device.printf("t1.txt=\"courant\"%c%c%c", 0xff, 0xff, 0xff);//affiche break sur bouton bt0 -------sy +//device.printf("t0.txt=\"position\"%c%c%c", 0xff, 0xff, 0xff);//affiche break sur bouton bt0 -------sy device.printf("add 2,0,%d%c%c%c", (position_actuelle/500), 0xff, 0xff, 0xff);// pour la fonction waveform add id1,chanel0,position actu - } +///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// +//******************************************************************page7******************************************************************// +///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + +void page7()//code de la page : 6607ffffff +{ + device.printf("t0.txt=\"%x\"%c%c%c", mRxMsg[0], 0xff, 0xff, 0xff);//affiche break sur bouton bt0 -------sy + device.printf("t1.txt=\"%x\"%c%c%c", mRxMsg[1], 0xff, 0xff, 0xff);//affiche break sur bouton bt0 -------sy + device.printf("t2.txt=\"%x\"%c%c%c", mRxMsg[2], 0xff, 0xff, 0xff);//affiche break sur bouton bt0 -------sy + device.printf("t3.txt=\"%x\"%c%c%c", mRxMsg[3], 0xff, 0xff, 0xff);//affiche break sur bouton bt0 -------sy + device.printf("t4.txt=\"%x\"%c%c%c", mRxMsg[4], 0xff, 0xff, 0xff);//affiche break sur bouton bt0 -------sy + device.printf("t5.txt=\"%x\"%c%c%c", mRxMsg[5], 0xff, 0xff, 0xff);//affiche break sur bouton bt0 -------sy + device.printf("t6.txt=\"%x\"%c%c%c", mRxMsg[6], 0xff, 0xff, 0xff);//affiche break sur bouton bt0 -------sy + device.printf("t7.txt=\"%x\"%c%c%c", mRxMsg[7], 0xff, 0xff, 0xff);//affiche break sur bouton bt0 -------sy + device.printf("t8.txt=\"%x\"%c%c%c", mRxMsg[8], 0xff, 0xff, 0xff);//affiche break sur bouton bt0 -------sy + device.printf("t9.txt=\"%x\"%c%c%c", mRxMsg[9], 0xff, 0xff, 0xff);//affiche break sur bouton bt0 -------sy + device.printf("t10.txt=\"%x\"%c%c%c", mRxMsg[10], 0xff, 0xff, 0xff);//affiche break sur bouton bt0 -------sy + device.printf("t11.txt=\"%x\"%c%c%c", mRxMsg[11], 0xff, 0xff, 0xff);//affiche break sur bouton bt0 -------sy + device.printf("t12.txt=\"%x\"%c%c%c", mRxMsg[12], 0xff, 0xff, 0xff);//affiche break sur bouton bt0 -------sy + device.printf("t13.txt=\"%x\"%c%c%c", mRxMsg[13], 0xff, 0xff, 0xff);//affiche break sur bouton bt0 -------sy + device.printf("t15.txt=\"%x\"%c%c%c", mRxMsg[14], 0xff, 0xff, 0xff);//affiche break sur bouton bt0 -------sy + device.printf("t16.txt=\"%x\"%c%c%c", mRxMsg[15], 0xff, 0xff, 0xff);//affiche break sur bouton bt0 -------sy + device.printf("t17.txt=\"%x\"%c%c%c", mRxMsg[16], 0xff, 0xff, 0xff);//affiche break sur bouton bt0 -------sy + device.printf("t18.txt=\"%x\"%c%c%c", mRxMsg[17], 0xff, 0xff, 0xff);//affiche break sur bouton bt0 -------sy + device.printf("t19.txt=\"%x\"%c%c%c", mRxMsg[18], 0xff, 0xff, 0xff);//affiche break sur bouton bt0 -------sy + device.printf("t20.txt=\"%x\"%c%c%c", mRxMsg[19], 0xff, 0xff, 0xff);//affiche break sur bouton bt0 -------sy + device.printf("t21.txt=\"%x\"%c%c%c", mRxMsg[20], 0xff, 0xff, 0xff);//affiche break sur bouton bt0 -------sy + device.printf("t22.txt=\"%x\"%c%c%c", mRxMsg[21], 0xff, 0xff, 0xff);//affiche break sur bouton bt0 -------sy + device.printf("t23.txt=\"%x\"%c%c%c", mRxMsg[22], 0xff, 0xff, 0xff);//affiche break sur bouton bt0 -------sy + device.printf("t24.txt=\"%x\"%c%c%c", mRxMsg[23], 0xff, 0xff, 0xff);//affiche break sur bouton bt0 -------sy + device.printf("t25.txt=\"%x\"%c%c%c", mRxMsg[24], 0xff, 0xff, 0xff);//affiche break sur bouton bt0 -------sy + device.printf("t26.txt=\"%x\"%c%c%c", mRxMsg[25], 0xff, 0xff, 0xff);//affiche break sur bouton bt0 -------sy + device.printf("t27.txt=\"%x\"%c%c%c", mRxMsg[26], 0xff, 0xff, 0xff);//affiche break sur bouton bt0 -------sy + device.printf("t28.txt=\"%x\"%c%c%c", mRxMsg[27], 0xff, 0xff, 0xff);//affiche break sur bouton bt0 -------sy + device.printf("t30.txt=\"%x\"%c%c%c", mRxMsg[28], 0xff, 0xff, 0xff);//affiche break sur bouton bt0 -------sy + device.printf("t31.txt=\"%x\"%c%c%c", mRxMsg[29], 0xff, 0xff, 0xff);//affiche break sur bouton bt0 -------sy + device.printf("t32.txt=\"%x\"%c%c%c", mRxMsg[30], 0xff, 0xff, 0xff);//affiche break sur bouton bt0 -------sy + device.printf("t33.txt=\"%x\"%c%c%c", mRxMsg[31], 0xff, 0xff, 0xff);//affiche break sur bouton bt0 -------sy + device.printf("t34.txt=\"%x\"%c%c%c", mRxMsg[32], 0xff, 0xff, 0xff);//affiche break sur bouton bt0 -------sy + device.printf("t35.txt=\"%x\"%c%c%c", mRxMsg[33], 0xff, 0xff, 0xff);//affiche break sur bouton bt0 -------sy + device.printf("t36.txt=\"%x\"%c%c%c", mRxMsg[34], 0xff, 0xff, 0xff);//affiche break sur bouton bt0 -------sy + device.printf("t37.txt=\"%x\"%c%c%c", mRxMsg[35], 0xff, 0xff, 0xff);//affiche break sur bouton bt0 -------sy + device.printf("t38.txt=\"%x\"%c%c%c", mRxMsg[36], 0xff, 0xff, 0xff);//affiche break sur bouton bt0 -------sy + device.printf("t39.txt=\"%x\"%c%c%c", mRxMsg[37], 0xff, 0xff, 0xff);//affiche break sur bouton bt0 -------sy + device.printf("t40.txt=\"%x\"%c%c%c", mRxMsg[38], 0xff, 0xff, 0xff);//affiche break sur bouton bt0 -------sy + device.printf("t41.txt=\"%x\"%c%c%c", mRxMsg[39], 0xff, 0xff, 0xff);//affiche break sur bouton bt0 -------sy +} ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// //******************************************************************LES TASKS**************************************************************// @@ -681,6 +803,7 @@ //////////////////////////////////////// // TASKS1 // //////////////////////////////////////// + void task1_switch() { @@ -740,6 +863,7 @@ //////////////////////////////////////// // TASKS2 // //////////////////////////////////////// + void task2_switch() { // pc.printf("%f\r\n", Tetaco);//valeur float consigne en radians le renvoyé par usb @@ -775,13 +899,14 @@ // char text[31]; // snprintf(text, 31, "%s", ppp_text); // pc.printf(text); -//device.printf("n0.val=%d%c%c%c", position_actuelle, 0xff, 0xff, 0xff);// affiche la valeur de position sur l afficheur nextion - +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 + }; //////////////////////////////////////// // TASKS3 // //////////////////////////////////////// + void task3_switch() { @@ -804,12 +929,13 @@ //////////////////////////////////////// // TASKS4 // //////////////////////////////////////// + void task4_switch() { //device.printf("$%d;", position_actuelle); //utiliser avec logicielle serial port ploter //pc.printf("0x%04x\n", valueFromMaster); //pc.printf("%04x", valueFromMaster); -//device.printf("add 1,0,%d%c%c%c", (position_actuelle/500), 0xff, 0xff, 0xff);// pour la fonction waveform add id1,chanel0,position actu +device.printf("add 1,0,%d%c%c%c", (position_actuelle/500), 0xff, 0xff, 0xff);// pour la fonction waveform add id1,chanel0,position actu //device.printf("add 1,0,%d%c%c%c", (ADCdata)/10, 0xff, 0xff, 0xff);// pour la fonction waveform add id1,chanel0,position actu } @@ -817,6 +943,7 @@ ////////////////////////////////////////////////////////////////////////////// // TASKS5 reception et transfert données sur SPI // ////////////////////////////////////////////////////////////////////////////// + void task5_switch() { //reply=0xAAAA; @@ -844,20 +971,21 @@ ///////////////////////////////////////////////////////////////////////// // TASKS6 lecture de l'image courant moteur // ///////////////////////////////////////////////////////////////////////// + void task6_switch() { - -//ADCdata=Ain*3.3; //lecture de l'image du courant + // ADCdata=Ain*3.3; //lecture de l'image du courant for (int z=0;z<=9;z++) { -ADCdata=ADCdata+Ain*3.3; //sum 10 samples + ADCdata=ADCdata+Ain*3.3; //sum 10 samples } -ADCdata=ADCdata/10; //divide by 10 +//ADCdata=ADCdata/10; //divide by 10 +device.printf("n0.val=%d%c%c%c", ADCdata, 0xff, 0xff, 0xff);// affiche la valeur de position sur l afficheur nextion //ADCdata=Ain.read_u16(); if(ADCdata>=imax)//si l'image du courant egale a 0.5v je coupe le moteur . { - while(1){ + while(1){ PWM1.write(0);//mise du signal pwm a zero. // pc.printf("%1.3f",ADCdata); // pc.printf("V\n\r"); @@ -866,7 +994,7 @@ //attendre que le manipulateur appuis sur le bouton restart a coder . //veriffier que les plaques sont bien en position . //faire une home ou continuer la trajectoire .a voir !!!! - } + } } // ici code de la tache 6 @@ -875,96 +1003,150 @@ //////////////////////////////////////// // TASKS7 // //////////////////////////////////////// + +int ReadSerialMsg(char *Msg) +{ + if(device.readable()) + { + + Msg[mRxIdx] = device.getc(); + mRxIdx++; + if(mRxIdx > 3) + { + if ((Msg[mRxIdx-1] == 0xff) && (Msg[mRxIdx-2] == 0xff) && (Msg[mRxIdx-3] == 0xff)) //valid rx message + { + mRxIdx=0; + return 1; + } + } + } + return 0; +} + +void FillButtonCmd(char *mRxMsg, ButtonCommand *cmd) +{ + cmd->IsNewCommandAvailable = 1; + cmd->cmdNb = mRxMsg[0]; + cmd->var1 = mRxMsg[1]; + cmd->buttonId = mRxMsg[2]; + cmd->IsButtonPressed = mRxMsg[3]; +} + void task7_switch() { -//lectureRSlcd(); -if(device.readable()) + if(1 == ReadSerialMsg(mRxMsg)) + { + Cmd = mRxMsg[0]; + //newCmdAvailable = true; + + switch(Cmd) + { + case PageCmd: + //resetPageSteps(); + CurrentPageNb = (PageNb)mRxMsg[1]; + break; + + case ButtonCmd: + FillButtonCmd(mRxMsg, &buttonCmd); + break; + } + } + //lectureRSlcd(); + /* + if(device.readable()) { myled1=1; charac = device.getc(); mRxMsg[mRxIdx] = charac; mRxIdx++; if ((mRxIdx >= 3) && (mRxMsg[mRxIdx-1] == 0xff) && (mRxMsg[mRxIdx-2] == 0xff) && (mRxMsg[mRxIdx-3] == 0xff)) //valid rx message - { - myled3=1; - mRxIdx=0; - - if(mRxMsg[0] == 0x67) //Touch coordinate data return - { mTouchX = (mRxMsg[1]*256) + mRxMsg[2]; + { + myled3=1; + mRxIdx=0; + myled3=0; + if(mRxMsg[0] == 0x67) //Touch coordinate data return + { + mTouchX = (mRxMsg[1]*256) + mRxMsg[2]; mTouchY = (mRxMsg[3]*256) + mRxMsg[4]; if(mRxMsg[5] == 0x01) mTouch = true; else mTouch = false; - } - myled3=0; - } + } + } + //vitesse_actuelle=qei.GetVelocity(); //fonctionne pas ... // ici code de la tache 7 - myled1=0; - } + myled1=0; + } */ } //////////////////////////////////////// // TASKS8 // //////////////////////////////////////// -void task8_switch() +void task8_switch()//detection code page { - - if((mRxMsg[0] == 0x66))//detection code de la page0 + if((mRxMsg[0] == 0x66)) { switch ( mRxMsg[1]) { case 0x00: page0();//ici la page0 es traité ----------- code de la page : 66 00 ff ff ff - mRxMsg[0] = 0x00; + mRxMsg[0] = 0x00;mRxMsg[1] = 0x00;mRxMsg[2] = 0x00;mRxMsg[3] = 0x00;mRxMsg[4] = 0x00; break; case 0x01: page1();//ici la page0 es traité ----------- code de la page : 66 01 ff ff ff - mRxMsg[0] = 0x00; + mRxMsg[0] = 0x00;mRxMsg[1] = 0x00;mRxMsg[2] = 0x00;mRxMsg[3] = 0x00;mRxMsg[4] = 0x00; break; case 0x02: page2();//ici la page0 es traité ----------- code de la page : 66 02 ff ff ff - mRxMsg[0] = 0x00; + mRxMsg[0] = 0x00;mRxMsg[1] = 0x00;mRxMsg[2] = 0x00;mRxMsg[3] = 0x00;mRxMsg[4] = 0x00; break; case 0x03: page3();//ici la page0 es traité ----------- code de la page : 66 03 ff ff ff - mRxMsg[0] = 0x00; + mRxMsg[0] = 0x00;mRxMsg[1] = 0x00;mRxMsg[2] = 0x00;mRxMsg[3] = 0x00;mRxMsg[4] = 0x00; break; case 0x04: page4();//ici la page0 es traité ----------- code de la page : 66 04 ff ff ff - mRxMsg[0] = 0x00; + mRxMsg[0] = 0x00;mRxMsg[1] = 0x00;mRxMsg[2] = 0x00;mRxMsg[3] = 0x00;mRxMsg[4] = 0x00; break; case 0x05: page5();//ici la page0 es traité ----------- code de la page : 66 05 ff ff ff - mRxMsg[0] = 0x00; + mRxMsg[0] = 0x00;mRxMsg[1] = 0x00;mRxMsg[2] = 0x00;mRxMsg[3] = 0x00;mRxMsg[4] = 0x00; break; case 0x06: page6();//ici la page6 es traité ----------- code de la page : 66 06 ff ff ff - mRxMsg[0] = 0x00; + mRxMsg[0] = 0x00;mRxMsg[1] = 0x00;mRxMsg[2] = 0x00;mRxMsg[3] = 0x00;mRxMsg[4] = 0x00; break; + + case 0x07: + page7();//ici la page7 es traité ----------- code de la page : 66 07 ff ff ff + mRxMsg[0] = 0x00;mRxMsg[1] = 0x00;mRxMsg[2] = 0x00;mRxMsg[3] = 0x00;mRxMsg[4] = 0x00; + //memset(mRxMsg, 0, 5); + break; } - + // ici code de la tache 8 } - } -//////////////////////////////////////////////////////////////////////////// -// PROGRAMME PRINCIPAL // -//////////////////////////////////////////////////////////////////////////// +///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// +// PROGRAMME PRINCIPAL // +///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// +int motorStep = 0; +int position_a_cmd_darret = 0; int main() { - // int cycles; + // int cycles; //NVIC_SetPriority(EINT3_IRQn, 252);//set interupt to highest priority 0. //NVIC_SetPriority(TIMER1_IRQn, 253);// set mbed tickers to lower priority than other things //NVIC_SetPriority(TIMER2_IRQn, 254);// set mbed tickers to lower priority than other things @@ -995,74 +1177,486 @@ //lancement des tasks time_up1.attach(&task1_switch, 0.0005);//"calcule de l'asservissement" initialisation du ticker a 2Khz "500us". - //time_up2.attach(&task2_switch, 0.05);//"retour d'information position par usb" initialisation du ticker a 100hz "10ms". + time_up2.attach(&task2_switch, 0.034);//"retour d'information position. time_up3.attach(&task3_switch, 0.0005);//"generation trajectoire" initialisation du ticker a 2khz "500us". //time_up4.attach(&task4_switch, 0.0005);//"retour d'information position par rs232"initialisation du ticker a 100hz "10ms". //time_up5.attach(&task5_switch, 0.0001);//"lecture et ecriture DATA SPI1 initialisation du ticker 10khz. - //time_up6.attach(&task6_switch, 0.0005);//initialises the ticker 2kh - time_up7.attach(&task7_switch, 0.0001);//initialises the ticker 2kh - time_up8.attach(&task8_switch, 0.1);//initialises the ticker 2kh + //time_up6.attach(&task6_switch, 0.034);//retour d'information courant. + time_up7.attach(&task7_switch, 0.00005);//lecture de la com rs tous les 100us. + // time_up8.attach(&task8_switch, 0.5);//detection numero de page tous les 100 ms. + +device.printf("sendme"); +count_ticks=0; +c='0'; + + while(1) + { + - device.printf("sendme"); + if(buttonCmd.IsNewCommandAvailable == 1)//si y as eu un bouton appuyé et que nous somme bien en la page n°7 + + { + motorStep = 0; + myled1 = 0; + switch(buttonCmd.cmdNb) + { + case PageCmd: + switch ( buttonCmd.var1) + { + case 0x00: + page0();//ici la page0 es traité ----------- code de la page : 66 00 ff ff ff + mRxMsg[0] = 0x00;mRxMsg[1] = 0x00;mRxMsg[2] = 0x00;mRxMsg[3] = 0x00;mRxMsg[4] = 0x00; + break; + + case 0x01: + page1();//ici la page0 es traité ----------- code de la page : 66 01 ff ff ff + mRxMsg[0] = 0x00;mRxMsg[1] = 0x00;mRxMsg[2] = 0x00;mRxMsg[3] = 0x00;mRxMsg[4] = 0x00; + break; + + case 0x02: + page2();//ici la page0 es traité ----------- code de la page : 66 02 ff ff ff + mRxMsg[0] = 0x00;mRxMsg[1] = 0x00;mRxMsg[2] = 0x00;mRxMsg[3] = 0x00;mRxMsg[4] = 0x00; + break; + + case 0x03: + page3();//ici la page0 es traité ----------- code de la page : 66 03 ff ff ff + mRxMsg[0] = 0x00;mRxMsg[1] = 0x00;mRxMsg[2] = 0x00;mRxMsg[3] = 0x00;mRxMsg[4] = 0x00; + break; + + case 0x04: + page4();//ici la page0 es traité ----------- code de la page : 66 04 ff ff ff + mRxMsg[0] = 0x00;mRxMsg[1] = 0x00;mRxMsg[2] = 0x00;mRxMsg[3] = 0x00;mRxMsg[4] = 0x00; + break; + + case 0x05: + page5();//ici la page0 es traité ----------- code de la page : 66 05 ff ff ff + mRxMsg[0] = 0x00;mRxMsg[1] = 0x00;mRxMsg[2] = 0x00;mRxMsg[3] = 0x00;mRxMsg[4] = 0x00; + break; + + case 0x06: + page6();//ici la page6 es traité ----------- code de la page : 66 06 ff ff ff + mRxMsg[0] = 0x00;mRxMsg[1] = 0x00;mRxMsg[2] = 0x00;mRxMsg[3] = 0x00;mRxMsg[4] = 0x00; + break; + + case 0x07: + page7();//ici la page7 es traité ----------- code de la page : 66 07 ff ff ff + mRxMsg[0] = 0x00;mRxMsg[1] = 0x00;mRxMsg[2] = 0x00;mRxMsg[3] = 0x00;mRxMsg[4] = 0x00; + //memset(mRxMsg, 0, 5); + break; + + } + break; + } + } -count_ticks=0; - while(1) + /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + ////////////////////////////////////////////////// page0 //////////////////////////////////////////////////////////// + /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + + if((buttonCmd.IsNewCommandAvailable == 1)&&(mRxMsg[1]==0x00))//si y as eu un bouton appuyé et que nous somme bien en la page n°0 + { + motorStep = 0; + myled1 = 0; + + switch(buttonCmd.buttonId) + { + case 0x02: // boutn 'A' de la page 0 + myled1 = 1; + c='a'; + buttonCmd.IsNewCommandAvailable = 0; + break; + + case 0x01: // boutn 'B' de la page 0 + myled1 = 1; + c='b'; + buttonCmd.IsNewCommandAvailable = 0; + break; + + case 0x03: // boutn 'R' de la page 0 + myled1 = 1; + c='c'; + buttonCmd.IsNewCommandAvailable = 0; + break; + + case 0x04: // boutn 'L' de la page 0 + myled1 = 1; + c='d'; + buttonCmd.IsNewCommandAvailable = 0; + break; + + case 0x05: // boutn 'R2' de la page 0 + myled1 = 1; + c='d'; + buttonCmd.IsNewCommandAvailable = 0; + break; + } + } + + /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + ////////////////////////////////////////////////// page1 //////////////////////////////////////////////////////////// + /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + + if((buttonCmd.IsNewCommandAvailable == 1)&&(mRxMsg[1]==0x01))//si y as eu un bouton appuyé et que nous somme bien en la page n°1 { + //page1(); + } + + /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + ////////////////////////////////////////////////// page2 //////////////////////////////////////////////////////////// + /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + + if((buttonCmd.IsNewCommandAvailable == 1)&&(mRxMsg[1]==0x02))//si y as eu un bouton appuyé et que nous somme bien en la page n°2 + { + //page2(); + } + + /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + ////////////////////////////////////////////////// page3 //////////////////////////////////////////////////////////// + /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + + if((buttonCmd.IsNewCommandAvailable == 1)&&(mRxMsg[1]==0x03))//si y as eu un bouton appuyé et que nous somme bien en la page n°3 + { + //page3(); + } + + /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + ////////////////////////////////////////////////// page4 //////////////////////////////////////////////////////////// + /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + + if((buttonCmd.IsNewCommandAvailable == 1)&&(mRxMsg[1]==0x04))//si y as eu un bouton appuyé et que nous somme bien en la page n°4 + { + //page4(); + } + + /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + ////////////////////////////////////////////////// page5 //////////////////////////////////////////////////////////// + /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + + if((buttonCmd.IsNewCommandAvailable == 1)&&(mRxMsg[1]==0x05))//si y as eu un bouton appuyé et que nous somme bien en la page n°5 + { + //page5(); + } + + /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + ////////////////////////////////////////////////// page6 //////////////////////////////////////////////////////////// + /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - c='0'; - - //c=valueFromMaster;//valeur par la liaison spi par le master - - //device.scanf("%c",&c);//capture du caract ascii - - switch(c)//chargement des wafers dans tete + if((buttonCmd.IsNewCommandAvailable == 1)&&(mRxMsg[1]==0x06))//si y as eu un bouton appuyé et que nous somme bien en la page n°6 + { + //page6(); + } + + /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + ////////////////////////////////////////////////// page7 //////////////////////////////////////////////////////////// + /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + + if((buttonCmd.IsNewCommandAvailable == 1)&&(mRxMsg[1]==0x07))//si y as eu un bouton appuyé et que nous somme bien en la page n°7 + { + motorStep = 0; + myled1 = 1; + + switch(buttonCmd.buttonId) { + case 0x2f: // boutn 'A' de la page 7 + myled1 = 0; + c='a'; + buttonCmd.IsNewCommandAvailable = 0; + break; + case 0x30: // boutn 'B' de la page 7 + myled1 = 0; + c='b'; + buttonCmd.IsNewCommandAvailable = 0; + break; + + case 0x31: // boutn 'C' de la page 7 + myled1 = 0; + c='c'; + buttonCmd.IsNewCommandAvailable = 0; + break; + + case 0x32: // boutn 'D' de la page 7 + myled1 = 0; + c='d'; + buttonCmd.IsNewCommandAvailable = 0; + break; + + case 0x01: // boutn 'D' de la page 7 + myled1 = 0; + c='d'; + buttonCmd.IsNewCommandAvailable = 0; + break; + + } + } + //c=valueFromMaster;//valeur par la liaison spi par le master + //device.scanf("%c",&c);//capture du caract ascii + + /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + ////////////////////////////////////////////////// differants mouvement //////////////////////////////////////////////////////////// + /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + (LPC_QEI->QEIPOS)=0; + switch(c)//commande moteur + { case 'a': //qei.Reset(0); - consigne=70000 ; //1 tour - slope_time=3;//t =0.ms - start_slope=true; - wait(4.5); - - consigne=0 ; //1 tour - slope_time=3;//t=ms - start_slope=true; - wait(4.5); - - consigne=-70000 ; //1 tour - slope_time=3;//t=ms - start_slope=true; - wait(4.5); - - consigne=0 ; //1 tour - slope_time=3;//t=ms - start_slope=true; - wait(4.5); - - break; + switch(motorStep) + { + case 0: + consigne=70000 ; //4 tour + slope_time=2.5;//t =2500ms + start_slope=true; + { + myled3 = 0; + motorStep = 1; + } + break; + + case 1: + if(true == Wait2(0, 3000)) + { + myled3 = 1; + motorStep = 2; + } + break; + + case 2: + consigne=0 ; //4 tour + slope_time=2.5;//2500ms + start_slope=true; + { + motorStep = 3; + } + break; + + case 3: + if(true == Wait2(0, 3000)) + { + motorStep = 4; + } + break; + + case 4: + consigne=-70000 ; //4 tour + slope_time=2.5;//2500ms + start_slope=true; + { + motorStep = 5; + } + break; + + case 5: + if(true == Wait2(0, 3000)) + { + motorStep = 6; + } + break; + + case 6: + consigne=0 ; //1 tour + slope_time=2.5;//2500ms + start_slope=true; + { + motorStep = 7; + } + break; + + case 7: + if(true == Wait2(0, 3000)) + { + motorStep = 0; + } + break; + } + break; case 'b': //qei.Reset(0); - consigne=100000 ; //1 tour - slope_time=2.5;//t =0.5ms - start_slope=true; - wait(3.5); - - consigne=0 ; //1 tour - slope_time=2.5;//t=1ms + switch(motorStep) + { + case 0: + consigne=0 ; //1 tour + slope_time=0.25;//2500ms + start_slope=true; + { + motorStep = 1; + } + break; + + case 1: + if(true == Wait2(0, 400)) + { + motorStep = 2; + } + break; + + case 2: + consigne=10000 ; //1 tour + slope_time=0.25;//t=ms + start_slope=true; + { + motorStep = 3; + } + break; + + case 3: + if(true == Wait2(0, 400)) + { + motorStep = 4; + } + break; + + case 4: + consigne=20000 ; //1 tour + slope_time=0.25;//t=ms + start_slope=true; + { + motorStep = 5; + } + break; + + case 5: + if(true == Wait2(0, 400)) + { + motorStep = 6; + } + break; + + case 6: + consigne=30000 ; //1 tour + slope_time=0.25;//t=ms + start_slope=true; + { + motorStep = 7; + } + break; + + case 7: + if(true == Wait2(0, 400)) + { + motorStep = 8; + } + break; + + case 8: + consigne=40000 ; //1 tour + slope_time=0.25;//t=ms + start_slope=true; + { + motorStep = 9; + } + break; + + case 9: + if(true == Wait2(0, 400)) + { + motorStep = 10; + } + break; + + case 10: + consigne=50000 ; //1 tour + slope_time=0.25;//t=ms + start_slope=true; + { + motorStep = 11; + } + break; + + case 11: + if(true == Wait2(0, 400)) + { + motorStep = 12; + } + break; + + case 12: + consigne=60000 ; //1 tour + slope_time=0.25;//t=ms + start_slope=true; + { + motorStep = 13; + } + break; + + case 13: + if(true == Wait2(0, 400)) + { + motorStep = 14; + } + break; + + case 14: + consigne=70000 ; //1 tour + slope_time=0.25;//t=ms + start_slope=true; + { + motorStep = 15; + } + break; + + case 15: + if(true == Wait2(0, 400)) + { + motorStep = 0; + } + break; + + } + break; + + + case 'c'://arret a la position actuelle + //qei.Reset(0); + switch(motorStep) + { + case 0: + consigne=70000 ; //1 tour + slope_time=0.5;//t =0.ms + start_slope=true; + { + motorStep = 1; + } + break; + + case 1: + if(true == Wait2(0, 1000)) + { + motorStep = 2; + } + break; + + case 2: + consigne=0 ; //1 tour + slope_time=0.5;//t=ms + start_slope=true; + { + motorStep = 3; + } + break; + + case 3: + if(true == Wait2(0, 1000)) + { + motorStep = 0; + } + break; + } + break; + + case 'd'://arret a la position actuelle + //qei.Reset(0); + position_a_cmd_darret=(LPC_QEI->QEIPOS);//sauvegarde position d'arret + consigne=position_a_cmd_darret ; //arret a la position + slope_time=0.25;//t =2000ms start_slope=true; - wait(3.5); - + Wait2(0, 500); + break; - + } - - - - - + /*if(device2.readable())//ici on utilise une seconde com rs avec un autre ecrant nextion { c2 = device2.getc(); @@ -1090,5 +1684,5 @@ }*/ //wait(0.05); -} + } } \ No newline at end of file