Salut a tous, le programme PICBASIC STUDIO me dit que j'ai une erreur lors de la verification de ma programation en pic pour un PPE.
Ce PPE consiste en gros à l'aide de 2 interrupteurs (délivrant 4 combinaisons posibles) de definir 4 types d'autorisation et de refus d'entrée et sortie d'une chatiere à l'aide de 2 électroaimants. Le chat est detecé grace a son collier ou il y a une puce rfid et ce recepteur là. Grace au logiciel délivré et un circuit supplementaire nous avons reussi a lire les codes de chaque puce RFID. Nous prenons pour l'identification uniquement une puce RFID dont les 5 1er octets sont 01 07 7F D9 9D. Dans ma programmation en pic nous comptions ,une fois le code de la puce délivré par le module UM005 au pic, que celui ci verifie uniquement les 5 1er octets (ce qui est suffisant puisque la posibilité pour qu'une autre puce ait les memes 5 1er octets est mince puis prit par le temps cela nous ira ^^). Une fois les octets verifiés par le pic, le pic selon la position des interrupteurs autorisera le passage en entrée seule, en sortie seule, en entrée et sortie ou n'autorisera pas le passage tout court.
Je voulais donc savoir d'ou pouvait bien provenir l'erreur? sachant que la verification a l'aide du logiciel apparait a la ligne 16.
Voici le programme en question:
Const device = 3H
'Ouverture chatière
DIM CHAT AS BYTE 'variable pour savoir si le chat est présent ou pas
DIM TEMPO AS BYTE 'variable pour faire la temporisation d'ouverture et de fermeture
DIM CF AS BYTE 'variable pour savoir si la porte de la chatière est fermée ou pas
DIM S1 AS BYTE 'variable pour savoir si l'interrupteur S1 est ouvert ou pas pour le choix du programme
DIM S2 AS BYTE 'variable pour savoir si l'interrupteur S2 est ouvert ou pas pour le choix du programme
DIM I(10) AS BYTE 'variable pour savoir si le chat détecté est le bon
DIM BUZZ AS BYTE 'variabe pour le buzzer
CONST ouv_elec1 = 24
CONST ferm_elec1 = 25
CONST ouv_elec2 = 22
CONST ferm_elec2 = 23
CONST capt_ferm = 21
CONST capt_ant = 18
'Initialisation
Début:
01 OUT ouv_elec1,1
OUT ferm_elec1,0
OUT ouv_elec2,1
OUT ferm_elec2,0
'Début programme
'Ce programme considère qu'aux CI la chatière est fermée
10 CHAT = IN(capt_ant)
IF CHAT = 1 THEN
SERIN 18, 207, 0, 5000, TIMEOUT, [I(0)~4]
IF I(0)=01 THEN
IF I(1)=07 THEN
IF I(2)=7F THEN
IF I(3)=D9 THEN
IF I(4)=9D THEN GOTO 20
END IF
END IF
END IF
END IF
END IF
ELSE GOTO 10
END IF
30 S1 = IN(19)
S2 = IN(20)
IF S1 = 0 AND S2 = 0 THEN GOSUB 50
ELSE IF S1 = 0 AND S2 = 1 THEN GOSUB 60
ELSE IF S1 = 1 AND S2 = 0 THEN GOSUB 70
ELSE IF S1 = 1 AND S2 = 1 THEN GOSUB 80
END IF
50 OUT ouv_elec1,0
51 OUT ferm_elec1,1
52 OUT ouv_elec2,0
53 OUT ferm_elec2,1
52 RETURN
60 OUT ouv_elec1,1
61 OUT ferm_elec1,0
62 OUT ouv_elec2,0
63 OUT ferm_elec2,1
64 RETURN
70 OUT ouv_elec1,0
71 OUT ferm_elec1,1
72 OUT ouv_elec2,1
73 OUT ferm_elec2,0
74 RETURN
80 OUT ouv_elec1,1
81 OUT ferm_elec1,0
82 OUT ouv_elec2,1
83 OUT ferm_elec2,0
84 RETURN
100 CF = IN(capt_ferm)
101 IF CF = 0
102 DELAY 3000
103 OUT ouv_elec1,1
104 OUT ferm_elec1,0
105 OUT ouv_elec2,1
106 OUT ferm_elec2,0
107 ELSE IF CF = 1
108 DELAY 10000
109 OUT FOR BUZZ = 0 TO 10
110 BEEP 17
111 NEXT BUZZ
112 ENDIF
113 GOTO 10
Voila, merci a tous ceux qui se pencheraient sur le probleme.
Edit: j'ai oublié de mentionner le fait qu'un phototranistor nous indiquait si la porte etait fermé ou ouverte en fin de prog.
-----