PROGRAMME NEWAROBOT
Le programme, a été effectué a l'ide du logiciel, CBOY3.
Voici le programme, ainsi que quelques indications sur les différentes commandes utilisées, ainsi que les commentaires du programme.
| ' programme
AROBOT NEW commandé par récepteur 27Mhz ' 02-12-2002 ' #include "start.bas" BYTE n,nt BYTE T INT comp,comp2,mb DDRD = 0 ' PD5=PD4=PD3=PD2=input SCONF = 0x4C ' B,C = sorties lcdinit() PACTL.7=0 PACTL.5=1 PACTL.4=0 PACTL.6=1 TMSK2.1=0 TMSK2.4=1 TMSK2.6=0 TFLG2.6=0 n=150 nt=180 PORTB.2 = 0 cli ' autoriser les inter print " arobot 2 " do PACNT=0 wai comp=PACNT 'on a comp= voie 2 et comp2= voie1. la largeur d'impulsion est mesurer par le micro-controleur print "comp=",comp 'comp pour gauche / droite if comp2>90 and comp2<110 then 'contrôle de la largeur d'impulsion sur la voie 1 'si largeur d'impulsion comprise entre 90 et 110 l'Arobot avance gosub AVANCER end if if comp2>160 and comp2<185 then ' si comprise entre 160 et 185 l'Arobot recule gosub RECULER end if if comp>55 and comp<67 then 'contrôle de la largeur d'impulsion sur la voie 2 'si largeur d'impulsion comprise entre 55 et 67 l'Arobot tourne à droite gosub DROITE end if if comp>30 and comp<40 then 'si comprise entre 30 et 40 l'Arobot tourne à gauche gosub GAUCHE end if if comp>45 and comp<54 then 'si comprise entre 45 et 54 les roues restent droites gosub TOUTDROIT end if if comp2>130 and comp2<150 then 'si comprise entre 130 et 150 l'Arobot s'arrête gosub STOP end if loop ' sous programme STOP: PORTB.2 = 0 'le moteur n'est plus alimenter tempo(5) mb=0 RETURN RECULER: if mb = 0 or mb=1 then 'on recule si on est arrêt ou avance PORTB.2=0 ' ON ARRETE (Puissance OFF) tempo(5) PORTB.0=0 ' Inversion sens rotation PORTB.1=0 tempo(5) PORTB.2=1 ' Puissance ON mb=2 end if RETURN AVANCER: if mb = 0 or mb = 2 then 'on avance si on est arrêt ou recule PORTB.2=0 tempo(5) PORTB.0=1 'inversion sens de rotation PORTB.1=1 tempo(5) PORTB.2=1 mb=1 end if RETURN 'odre pour le servo moteur DROITE: n=100 'si largeur d'impulsion=100 le servo moteur braque à droite RETURN TOUTDROIT: n=150 'si largeur d'impulsion=150 le servo moteur reste dans son axe RETURN GAUCHE: n=200 'si largeur d'impulsion=200 le servo moteur braque à gauche RETURN TOURELLEGAUCHE: 'les programmes suivants permettent de commander la tourelle caméra nt=nt+2 if nt>230 THEN nt=230 RETURN TOURELLEDROITE: nt=nt-2 if nt<130 THEN nt=130 RETURN TOURELLECENTRE: nt=160 RETURN function tempo(cnt) int i, k for cnt=cnt to 0 step -1 for i=0 to 1000 next next end function interrupt function rtiint at $FFDA 'sous programme qui permet de mesurer la largeur d'impulsion sur la voie1 comp2=0 do comp2=comp2+1 loop until PORTA.0=0 PORTA.4 = 1 FOR T = 1 to n NEXT T PORTA.4 = 0 PORTA.5 = 1 FOR T = 1 to nt NEXT T PORTA.5 = 0 TFLG2.6 = 1 ' autoriser ints a nouveau end function #include "lcd.bas" |