finite state machine / C12832_copy

Dependents:   Machine_a_etat_3

Committer:
burgerking
Date:
Sun May 03 11:37:39 2020 +0000
Revision:
21:39815fb7e4f5
Parent:
20:fa411d58e3ee
Child:
22:64fa6f501426
fdff

Who changed what in which revision?

UserRevisionLine numberNew contents of line
burgerking 19:c3d287239c9c 1 #include "mbed.h"
burgerking 19:c3d287239c9c 2 #include "C12832.h"
burgerking 19:c3d287239c9c 3 #include "moteur.h"
burgerking 19:c3d287239c9c 4 #include "emissionIR.h"
burgerking 17:db154d50ab1f 5
burgerking 17:db154d50ab1f 6 /* Déclaration des objets glogaux ***************************/
burgerking 17:db154d50ab1f 7
burgerking 17:db154d50ab1f 8 C12832 lcd(D11, D13, D12, D7, D10);
burgerking 17:db154d50ab1f 9
burgerking 17:db154d50ab1f 10 AnalogIn pot1(A0);
burgerking 17:db154d50ab1f 11 AnalogIn pot2(A1);
burgerking 17:db154d50ab1f 12
burgerking 17:db154d50ab1f 13 DigitalOut LED_rouge(D5,1);
burgerking 17:db154d50ab1f 14 DigitalOut LED_verte(D9,1);
burgerking 17:db154d50ab1f 15 //DigitalOut LED_bleue(D8,1); // NE PAS UTILISER LA LED BLEUE
burgerking 17:db154d50ab1f 16
burgerking 17:db154d50ab1f 17 DigitalIn up(A2);
burgerking 17:db154d50ab1f 18 DigitalIn down(A3);
burgerking 17:db154d50ab1f 19 DigitalIn left(A4);
burgerking 17:db154d50ab1f 20 DigitalIn right(A5);
burgerking 17:db154d50ab1f 21 DigitalIn fire(D4);
burgerking 17:db154d50ab1f 22
burgerking 17:db154d50ab1f 23
burgerking 17:db154d50ab1f 24 // Détecteurs d'obstacles
burgerking 17:db154d50ab1f 25 AnalogIn IR_G(PB_1);AnalogIn IR_D(PC_2);
burgerking 17:db154d50ab1f 26
burgerking 17:db154d50ab1f 27 DigitalIn jack(PD_2);
burgerking 17:db154d50ab1f 28 DigitalIn bumpers(PB_7);
burgerking 17:db154d50ab1f 29 DigitalOut LED(PA_13);
burgerking 17:db154d50ab1f 30
burgerking 17:db154d50ab1f 31 // Détecteur de zone blanche
burgerking 17:db154d50ab1f 32 BusIn Arrivee(PC_9,PC_10,PC_11,PC_12,PA_12,PA_14);
burgerking 17:db154d50ab1f 33
burgerking 17:db154d50ab1f 34 Serial uartWifi(SERIAL_TX, SERIAL_RX);
burgerking 17:db154d50ab1f 35 //Serial uartWifi(PA_9, PA_10);
burgerking 17:db154d50ab1f 36
burgerking 17:db154d50ab1f 37 /* Déclaration des variables globales ****************************************/
burgerking 17:db154d50ab1f 38
burgerking 17:db154d50ab1f 39
burgerking 17:db154d50ab1f 40 /* Définition des fonctions gérant la machine à états ************************/
burgerking 17:db154d50ab1f 41
burgerking 17:db154d50ab1f 42 // définition des fonctions
burgerking 17:db154d50ab1f 43 void gestionEtat(){
burgerking 17:db154d50ab1f 44 }
burgerking 17:db154d50ab1f 45
burgerking 17:db154d50ab1f 46 void gestionAction(){
burgerking 17:db154d50ab1f 47 }
burgerking 17:db154d50ab1f 48
burgerking 17:db154d50ab1f 49 /******************************************************************************/
burgerking 18:da2e22a3b09a 50 enum Machine_A_Etat
burgerking 18:da2e22a3b09a 51 {
burgerking 21:39815fb7e4f5 52 Depart,Navigation,Arrive,Evitement,Rotation
burgerking 18:da2e22a3b09a 53 };
burgerking 18:da2e22a3b09a 54
burgerking 19:c3d287239c9c 55 int main() {
burgerking 20:fa411d58e3ee 56 int iState=Depart;
burgerking 21:39815fb7e4f5 57 int distObsGauche=pot1.read();
burgerking 21:39815fb7e4f5 58 int distObsDroite=pot2.read();
burgerking 21:39815fb7e4f5 59 int bumpers=bumpers.read();
burgerking 21:39815fb7e4f5 60 int up=up.read();
burgerking 21:39815fb7e4f5 61 int jack=jack.read();
burgerking 21:39815fb7e4f5 62 int fire=fire.read();
burgerking 17:db154d50ab1f 63 lcd.cls();
burgerking 17:db154d50ab1f 64 lcd.locate(32,16);
burgerking 17:db154d50ab1f 65 lcd.printf("Module ER2 : template");
burgerking 17:db154d50ab1f 66 while(true){
burgerking 17:db154d50ab1f 67 wait(.5);
burgerking 19:c3d287239c9c 68 switch(iState){
burgerking 19:c3d287239c9c 69 case Depart :
burgerking 19:c3d287239c9c 70 LED_verte.write(1);
burgerking 20:fa411d58e3ee 71 //printf.lcd("Depart");
burgerking 19:c3d287239c9c 72 break;
burgerking 19:c3d287239c9c 73 case Navigation :
burgerking 20:fa411d58e3ee 74 //No Yellow LED
burgerking 20:fa411d58e3ee 75 commandeMoteurs(50,50);
burgerking 20:fa411d58e3ee 76 //printf.lcd("Navigation");
burgerking 20:fa411d58e3ee 77 break;
burgerking 21:39815fb7e4f5 78 case Arrive :
burgerking 20:fa411d58e3ee 79 LED_verte.write(!LED_verte.read());
burgerking 20:fa411d58e3ee 80 commandeMoteurs(0,0);
burgerking 20:fa411d58e3ee 81 //printf.lcd("Arrive");
burgerking 20:fa411d58e3ee 82 break;
burgerking 19:c3d287239c9c 83 case Evitement :
burgerking 20:fa411d58e3ee 84 LED_rouge.write(1);
burgerking 20:fa411d58e3ee 85 if(distObsDroite>distObsGsuche)
burgerking 20:fa411d58e3ee 86 comandeMoteur(100,0);
burgerking 20:fa411d58e3ee 87 //printf.lcd("Evitement1");
burgerking 20:fa411d58e3ee 88 else
burgerking 20:fa411d58e3ee 89 commandeMoteur(0,100);
burgerking 20:fa411d58e3ee 90 //printf.lcd("Evitement2");
burgerking 20:fa411d58e3ee 91 break;
burgerking 19:c3d287239c9c 92 case Rotation :
burgerking 20:fa411d58e3ee 93 LED_rouge.write(!LED_rouge.read());
burgerking 20:fa411d58e3ee 94 if(distObsDroite>distObsGsuche)
burgerking 20:fa411d58e3ee 95 comandeMoteur(100,0);
burgerking 20:fa411d58e3ee 96 //printf.lcd("Rotation1");
burgerking 20:fa411d58e3ee 97 else
burgerking 20:fa411d58e3ee 98 commandeMoteur(0,100);
burgerking 20:fa411d58e3ee 99 //printf.lcd("Rotation2");
burgerking 20:fa411d58e3ee 100 break;
burgerking 17:db154d50ab1f 101 }//switch
burgerking 20:fa411d58e3ee 102
burgerking 20:fa411d58e3ee 103 while(iState=Depart)
burgerking 20:fa411d58e3ee 104 {
burgerking 20:fa411d58e3ee 105 if(jack==0||fire==1)
burgerking 20:fa411d58e3ee 106 iState=Navigation;
burgerking 20:fa411d58e3ee 107 if(up==1)
burgerking 21:39815fb7e4f5 108 iState=Arrive;
burgerking 20:fa411d58e3ee 109 }
burgerking 20:fa411d58e3ee 110
burgerking 20:fa411d58e3ee 111 while(iState=Navigation)
burgerking 20:fa411d58e3ee 112 {
burgerking 20:fa411d58e3ee 113 if(//distObsGauche>20cm||distObsDroite>20cm)
burgerking 20:fa411d58e3ee 114 iState=Rotation;
burgerking 20:fa411d58e3ee 115 if(//20cm<distObsGauche<40cm&&20cm<distObsDroite<0cm)
burgerking 20:fa411d58e3ee 116 iState=Evitation;
burgerking 20:fa411d58e3ee 117 if(/*white tested*/||bumpers==1)
burgerking 21:39815fb7e4f5 118 iState=Arrive;
burgerking 20:fa411d58e3ee 119 }
burgerking 20:fa411d58e3ee 120
burgerking 20:fa411d58e3ee 121 while(iState=Arrivee)
burgerking 20:fa411d58e3ee 122 {
burgerking 20:fa411d58e3ee 123 if(up==1)
burgerking 20:fa411d58e3ee 124 iState=Depart;
burgerking 20:fa411d58e3ee 125 }
burgerking 20:fa411d58e3ee 126
burgerking 20:fa411d58e3ee 127 while(iState=Evitement)
burgerking 20:fa411d58e3ee 128 {
burgerking 20:fa411d58e3ee 129 if(//distObsGauche<20cm||distObsDroite<20cm)
burgerking 20:fa411d58e3ee 130 iState=Rotation;
burgerking 20:fa411d58e3ee 131 if(//distObsGauche>40cm&&distObsDroite>40cm)
burgerking 20:fa411d58e3ee 132 iState=Navigation;
burgerking 20:fa411d58e3ee 133 if(/*white tested*/||bumpers==1)
burgerking 21:39815fb7e4f5 134 iState=Arrive;
burgerking 20:fa411d58e3ee 135 }
burgerking 20:fa411d58e3ee 136
burgerking 20:fa411d58e3ee 137 while(iState=Rotation)
burgerking 20:fa411d58e3ee 138 {
burgerking 20:fa411d58e3ee 139 if(//distObsGauche>40cm&&distObsDroite>40cm)
burgerking 20:fa411d58e3ee 140 iState=Navigation;
burgerking 20:fa411d58e3ee 141 if(/*white tested*/||bumpers==1)
burgerking 20:fa411d58e3ee 142 iState=Evitement;
burgerking 20:fa411d58e3ee 143 }
burgerking 20:fa411d58e3ee 144
burgerking 20:fa411d58e3ee 145
burgerking 20:fa411d58e3ee 146
burgerking 20:fa411d58e3ee 147
burgerking 17:db154d50ab1f 148 }//while
burgerking 17:db154d50ab1f 149 }