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"
 

                                    Accueil