;EMETTEUR BARRIERE
;Départ ou Arrivée par sélecteur
;Cellules IR sur Entrées C.0, C.1 ,C.2
;MM 8/8/2014
;
;les capteurs barrière sont sur C.0, C.1, C.2 sur interruption
;La barrière est "depart" ou "arrivée" en ft de l'inverseur B.2. Départ si B.2=1
;Sur une barrière "Départ", le poussoir "alternate" envoie un code "Arrivée" et inversement.
;Commutation Départ / Arrivée par inverseur. DepAriv: 1=Départ ; 0=Arrivée
#picaxe 14M2
dirsB= %111000
symbol poussoir= pinC.4 ;poussoir code alternatif
symbol RAZ =pinC.3 ;poussoir code RAZ
symbol DepAriv=pinB.2 ;Inverseur barrière. Depariv =1 = barrière Départ
symbol RF=B.5 ;Emetteur Radio
symbol flash= B.3 ;témoin passage barrière
pullup %0001111100000100 ;Pullup sur B2, C.0, C;1, C.2, C.3, C.4
pwmout B.4, 25, 53 ;PWM 38k
setint OR %111,%111 ;interrupt sur Niveau haut de C.0 ou C.1 ou C.2
Do
if RAZ=0 then
high flash ; passage barrière
pause 100
rfout RF,("Z","Z","Z","Z","Z","Z","Z","Z")
pause 400
low flash
elseif poussoir=0 then
high flash ; passage barrière
pause 100
If DepAriv=1 then
rfout RF,("A","A","A","A","A","A","A","A") ;si d?part=1, le poussoir envoie "Arriv?e"
else
rfout RF,("D","D","D","D","D","D","D","D") ;sinon, il envoie "D?part"
endif
pause 400
low flash
endif
loop
interrupt:
high flash
pause 100
if DepAriv=1 then
rfout RF,("D","D","D","D","D","D","D","D") ;si "depart"=1, l'interrupt envoie "depart"
else
rfout RF,("A","A","A","A","A","A","A","A") ;sinon, l'interrupt envoie "arriv?e"
endif
pause 400
low flash
setint OR %111,%111
return