#____________ Définition des variables var Vg #Variable vitesse du moteur gauche var Vd # Variable vitesse du moteur droit var Etage #Variable nombre d'étage var NoEtage #Variable numéro d'étage var Desti #Variable de destination (No.d'étage) var Temp #Variable de temporisation No.1 var Temp2 #Variable de temporisation No.2 #___________ Gestion des diodes (éteindre toutes les diodes) call leds.top(0,0,0) call leds.bottom.left(0,0,0) call leds.bottom.right(0,0,0) call leds.circle(0,0,0,0,0,0,0,0) call leds.prox.h(0,0,0,0,0,0,0,0) call leds.prox.v(0,0) call leds.rc(0) call leds.sound(0) call leds.temperature(0,0) call leds.top(0,0,0) #__________________ Mesure du temps timer.period[0]=700 #________________ Mise à zéro des variables Vg=0 Vd=0 Etage=0 NoEtage=0 Desti=0 Temp=0 Temp2=0 #__________ Définition des routines sub NoEtage #Routine pour compter les étages Temp=0 #Mise à zéro de la temporisation pour le passage de la ligne d'étage Etage=abs(Etage-Desti) #Nombre d'étage à passer sub Rez #Routine pour descendre tous les étages Etage=7 #Définition variable étage à 7 Vg = -100 #Définition de la variable vitesse moteur gauche Vd = -80 #Définition de la variable vitesse moteur (valeur différente pour équilibre de vitesse) motor.left.target = Vg #Initialisation moteur gauche motor.right.target= Vd #Initialisation moteur sub Monter #Routine pour monter Temp=0 #Mise à zéro de la temporisation pour le passage de la ligne d'étage Vg = 100 Vd = 93 motor.left.target = Vg motor.right.target= Vd sub Descendre #Routine pour descendre Temp=0 Vg = -100 Vd = -80 motor.left.target = Vg motor.right.target= Vd sub Choix #Routine pour le choix de monter ou descendre if NoEtage>Desti then callsub Monter #Appel de la routine monter else callsub Descendre #Apelle de la routine pour descemdre end #__________ #Définition des fonction de la télécommande onevent rc5 if rc5.command==1 then #Définition du bouton No.1 NoEtage=1 #Définition de la variable NoEtage Etage=1 #Définition de la variable Etage pour le décompte callsub NoEtage #Appel de la routine NoEtage callsub Choix #Appel de la routine Choix elseif rc5.command==2 then NoEtage=2 Etage=2 callsub NoEtage callsub Choix elseif rc5.command==3 then NoEtage=3 Etage=3 callsub NoEtage callsub Choix elseif rc5.command==4 then NoEtage=4 Etage=4 callsub NoEtage callsub Choix elseif rc5.command==5 then NoEtage=5 Etage=5 callsub NoEtage callsub Choix elseif rc5.command==6 then NoEtage=6 Etage=6 callsub NoEtage callsub Choix elseif rc5.command==7 then NoEtage=7 Etage=7 callsub NoEtage callsub Choix elseif rc5.command==0 then callsub Rez NoEtage=0 #Définition de la variable NoEtage à zéro pour éteindre les diodes call leds.circle(0,0,0,0,0,0,0,0) #Eteinde les diodes elseif rc5.command==87 then #Bouton "OK" de la télécommande pour tout remettre à zéro (reset) Etage=0 NoEtage=0 Desti=0 Temp=0 Temp2=0 motor.left.target = 0 motor.right.target= 0 call leds.circle(0,0,0,0,0,0,0,0) end #___________ Définition des événements onevent timer0 #Définition de la base temps Temp=Temp+1 #Incrémentation de la variable Temp Temp2=Temp2+1 #Incrémentation de la variable Temp2 #___________ Définition des capteurs de proximités onevent prox if Temp>1 then #Test de la variable de temporisation when prox.ground.reflected[0] > 350 and Vg==100 do #Boucle de comptage Etage=Etage - 1 #Incrémentation de la variable Etage Desti=Desti+1 #Incrémentation de la variable Desti (destination) end end if Temp>1 then when prox.ground.reflected[0] > 350 and Vg==-100 do #Boucle de comptage Etage=Etage - 1 Desti=Desti-1 end end #___________ Test de variables if Etage == 0 then Vg = 0 Vd = 0 motor.left.target = Vg motor.right.target = Vd end #___________ contrôle d'allumage des diodes if NoEtage ==1 then call leds.circle(32,0,0,0,0,0,0,0) elseif NoEtage ==2 then call leds.circle(32,32,0,0,0,0,0,0) elseif NoEtage ==3 then call leds.circle(32,32,32,0,0,0,0,0) elseif NoEtage ==4 then call leds.circle(32,32,32,32,0,0,0,0) elseif NoEtage ==5 then call leds.circle(32,32,32,32,32,0,0,0) elseif NoEtage ==6 then call leds.circle(32,32,32,32,32,32,0,0) elseif NoEtage ==7 then call leds.circle(32,32,32,32,32,32,32,0) end #____________ Contrôle des buttées avant et arrière if prox.horizontal[2]>1500 then motor.left.target = 0 motor.right.target = 0 end if prox.horizontal[5]>1500 or prox.horizontal[6] >1500 then Temp2=0 motor.left.target = 10 motor.right.target = 12 end #___________ Positionnement pour le départ when Temp2>=2 do motor.left.target = 0 motor.right.target = 0 end