test des capteurs/actionneurs petit robot
Fork of mbed_tes_cpt by
Diff: main.cpp
- Revision:
- 5:7e1c328c5d50
- Parent:
- 3:43843ab8af47
--- a/main.cpp Sun May 21 16:10:38 2017 +0000 +++ b/main.cpp Thu May 25 06:35:22 2017 +0000 @@ -1,7 +1,7 @@ #include "all_includes.h" Timer t; -Ticker flipper; +Timer TimeJack; CAN can(p30,p29); // Rx&Tx pour le CAN CANMessage msgRxBuffer[SIZE_FIFO]; // buffer en réception pour le CAN @@ -18,25 +18,28 @@ PwmOut Pompe(p21); PwmOut ElectroVanne(p22); PwmOut turbine(p23); + #endif #ifdef ARRIERE PwmOut Pompe(p21); PwmOut MotLanceur(p22); + InterruptIn jack(p23); + //DigitalIn Jack(p25); #endif AnalogIn telemetre(p15); -DigitalIn Jack(p25); + DigitalOut led(LED1); DigitalOut led2(LED2); -unsigned char EtatPompe=0, EtatLanceur=0, EtatAx12=0, ChoixBras=0, ActionAx12=0, EtatTurbine=0, EtatElectroVanne=0; -unsigned char action_a_effectuer=0, ActionPompe=0; +unsigned char EtatPompe=0, EtatLanceur=0, EtatAx12=0, ChoixBras=0, ActionAx12=0, EtatTurbine=0, EtatElectroVanne=0, EtatFunnyAction=0, EtatGameEnd=0, EnvoieJack=0; +unsigned char action_a_effectuer=0, ActionPompe=0, EtatCarteAvant=0, EtatCarteArriere=0; /* @@ -56,6 +59,19 @@ PwmOut IRL_2(p22); */ +/****************************************************************************************/ +/* FUNCTION NAME: jack_ISR */ +/* DESCRIPTION : Interruption en changement d'état sur le Jack */ +/****************************************************************************************/ +#ifdef ARRIERE +void jack_ISR (void) +{ + led2=1; + SendRawId(GLOBAL_JACK); + EnvoieJack = 1; + TimeJack.start(); +} +#endif @@ -72,38 +88,98 @@ CAN2_wrFilter(TURBINE); CAN2_wrFilter(ELECTROVANNE); CAN2_wrFilter(0x123); + + CAN2_wrFilter(CHECK_CARTE_AVANT); + CAN2_wrFilter(CHECK_CARTE_ARRIERE); + CAN2_wrFilter(ACKNOWLEDGE_GLOBAL_JACK); CAN2_wrFilter(SERVO_AX12_ACTION); CAN2_wrFilter(SERVO_AX12_ACK); CAN2_wrFilter(SERVO_AX12_END); CAN2_wrFilter(CHECK_AX12); + CAN2_wrFilter(GLOBAL_FUNNY_ACTION); + CAN2_wrFilter(GLOBAL_GAME_END); - initialisation_AX12(); + + #ifdef AVANT - Pompe.period(0.001); - ElectroVanne.period(0.001); + Pompe.period(0.00005); + ElectroVanne.period(0.00005); + turbine.period(0.00005); #endif #ifdef ARRIERE - Pompe.period(0.001); - MotLanceur.period(0.001); + Pompe.period(0.00005); + MotLanceur.period(0.00005); #endif + + while(1) { led = !led; canProcessRx();//Traitement des trames CAN en attente + if (EtatGameEnd==1) { + #ifdef AVANT + Pompe.write(0); + ElectroVanne.write(0); + gerer_turbine(0); + #endif + + #ifdef ARRIERE + Pompe.write(0); + MotLanceur.write(0); + #endif + + } + + if ((EnvoieJack==1) && (TimeJack.read_ms()>100)){ + SendRawId(GLOBAL_JACK); + TimeJack.reset(); + } + + + + if (action_a_effectuer==1) { action_a_effectuer=0; if (Cote==CARTE) { + #ifdef AVANT + if (EtatCarteAvant==1) { + EtatCarteAvant=0; + initialisation_AX12(); + + AX12_automate(1); + AX12_automate(16); + AX12_automate(21); + } + #endif + + #ifdef ARRIERE + if (EtatCarteArriere==1) { + EtatCarteArriere=0; + + initialisation_AX12(); + AX12_automate(1); + AX12_automate(36); + AX12_automate(41); + jack.mode(PullDown); // désactivation de la résistance interne du jack + jack.fall(&jack_ISR); // création de l'interrupt attachée au changement d'état (front descendant) sur le jack + } + #endif + + if (EtatFunnyAction==1){ + AX12_automate(22); //Funny Action + } + + if (ActionAx12==1){ - led2=!led2; AX12_automate(EtatAx12); ActionAx12=0; } @@ -115,9 +191,9 @@ #ifdef AVANT if (EtatTurbine==1) - gerer_turbine(1); + turbine.write(1); else if (EtatTurbine==0) - gerer_turbine(0); + turbine.write(0); if (EtatElectroVanne==1) ElectroVanne.write(1); @@ -126,8 +202,38 @@ #endif #ifdef ARRIERE - if (EtatLanceur==1) + if (EtatLanceur==1) { MotLanceur.write(1); + wait(0.2); + + unsigned char i; + for(unsigned char j=1;j<10;j++) { + for(i=10;i>5;i--) { + float value=(float)i/10.; + MotLanceur.write(value); + wait(0.2); + } + } + MotLanceur.write(0); + + /* MotLanceur.write(1); + wait(0.2); + MotLanceur.write(0.27); + wait(0.1); + MotLanceur.write(1); + wait(0.1); + MotLanceur.write(0.27); + wait(0.1); + MotLanceur.write(1); + wait(0.1); + MotLanceur.write(0.27); + wait(0.1); + MotLanceur.write(1); + wait(0.1); + MotLanceur.write(0.27); + wait(3); + MotLanceur.write(0);*/ + } else if (EtatLanceur==0) MotLanceur.write(0); #endif @@ -137,3 +243,8 @@ } } + + + + +