Aide prog en PICBASIC
Répondre à la discussion
Affichage des résultats 1 à 11 sur 11

Aide prog en PICBASIC



  1. #1
    sosointello

    Aide prog en PICBASIC


    ------

    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 . 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.

    -----

  2. #2
    Ouk A Passi

    Re : Aide prog en PICBASIC

    Bonjour,

    Je ne connais rien au "basic" de Comfile, mais je m'interroge:
    IF I(0)=01 THEN
    IF I(1)=07 THEN
    IF I(2)=7F THEN
    IF I(3)=D9 THEN
    L'instruction THEN n'appelle pas un branchement quelconque, ou affecter une valeur à une variable ?

  3. #3
    sosointello

    Re : Aide prog en PICBASIC

    Franchement je n'en ai aucune idée, mais le copier coller du programme ne fait pas le decalage tel qu'il devrait etre pour les IF..ENDIF, nous avions l'intention de faire une chaine de IF du genre IF le 1er octet est bon verifié le 2eme soit IF puis ainsi de suite mais bon nous ne savons pas vraiment comment le faire :/.
    Désolé de ne pas pouvoir répondre plus.

  4. #4
    Ouk A Passi

    Re : Aide prog en PICBASIC

    Bonjour,

    ...mais le copier coller du programme ne fait pas le decalage...
    Il serait sans doute utile de connaître le programme initial.
    Donc soit tu fais un copier coller de ce tu a mis dans le premier post, mais en rectifiant les erreur, soit tu nous donnes un lien si ton programme originel est accessible.

    Une autre remarque:
    je ne comprends pas pourquoi certaines lignes ont des numéros et d'autres n'en ont pas

    @+

  5. A voir en vidéo sur Futura
  6. #5
    Gérard

    Re : Aide prog en PICBASIC

    Il serait bien aussi que tu lises la doc du compilateur.
    En #3 tu dis ne pas savoir comment fonctionne IF THEN ..., c'est pourtant une instruction très importante.

  7. #6
    sosointello

    Re : Aide prog en PICBASIC

    Me revoila, je voudrais désormais savoir comment affecter une valeur a une constante pour par exemple I(0)=9D I(1)=01 etc..
    Ainsi dans la suite de mon programme je pourrais les verifier a l'aide du pic.
    Voici le lien ou se trouve le fichier de la prog en question :
    http://www.megaupload.com/?d=DSEQBL4F

    Merci a tous

  8. #7
    Ouk A Passi

    Re : Aide prog en PICBASIC

    Bonjour,

    Pour utiliser un langage, il est important de connaître le sens des mots et la syntaxe.
    As-tu regardé la documentation Picbasic (manuel de référence)?

    Les instructions et commandes y sont décrites au chapitre 5, à partir de la page 39.

    Au début du programme, dans les déclarations, je vois:

    DIM I(10) AS BYTE
    Ce qui signifie que la variable I peut prendre toutes les valeurs comprises entre 0 et 255.

    Or il semble que tu cherches à attribuer à I une valeur hexadécimale

    Ou bien devons nous considérer que <<9D>> et <<01>> sont des chaînes de caractères ?

    Dans ce dernier cas tu pourrais déclarer DIM I(10) AS STRING.

    Mais je n'ai pas compris comment tu parvenais à identifier les chats nommés 01, 07, 7F, D9 et 9D

  9. #8
    Gérard

    Re : Aide prog en PICBASIC

    Ouk A Passi a raison.
    Je viens de consulter le lien qu'il donne et tout est expliqué. ya+kalir !

    Et c'est en français !

  10. #9
    sosointello

    Re : Aide prog en PICBASIC

    Merci de ta réponse mais vois-tu "Nous prenons pour l'identification uniquement une puce RFID dont les 5 1er octets sont 01 07 7F D9 9D" ainsi nous voulons lire le 1er octet qui rentre puis voire si c'est le bon, si c'est le bon on poursuit sinon on stoppe la lecture.
    J'ai mit a jour le programme qui donne ceci a présent:
    http://www.megaupload.com/?d=8H8Z62O4

    Le seul probleme c'est que lors de la verification du programme une erreur du type "Invalid label : TIMEOUT" apparait :/
    Merci a vous

  11. #10
    Ouk A Passi

    Re : Aide prog en PICBASIC

    Oups !

    J'avais seulement regardé le programme hébergé sur un serveur extérieur, sans relire le premier message sur FS (sinon j'aurais capté )

    Je vais examiner la nouvelle mouture...
    Mais à première vue, la manière de lire <<01 07 7F D9 9D>> ne me plaît pas, car ce n'est pas une chaîne de caractères

  12. #11
    Ouk A Passi

    Re : Aide prog en PICBASIC

    Pas encore regardé la modification du programme, mais l'instruction SER IN.

    As-tu de quoi visualiser (écran ou led clignotante) ce que contient ton tableau I( ) ?
    Je verrais bien juste après la ligne SERIN 18, 207 ...
    une petite vérification de ce que contient ton tableau:
    for i=1 to 5
    read i
    print i (ou faire clignoter led autant de fois que..., et avec boucle de délai)
    next (à traduire en langage picbasic, bien entendu).

    C'est tout pour l'instant.

    Nooonnn:
    SERIN ---> le denier octet doit être un Zéro !

    Il y a bien un spécialiste du basic dans la salle
    Dernière modification par Ouk A Passi ; 10/04/2009 à 19h01.

Discussions similaires

  1. de l' aide sur picbasic studio
    Par invite83d28800 dans le forum Technologies
    Réponses: 0
    Dernier message: 08/04/2008, 12h09
  2. Aide pour prog. de PIC
    Par lafritte57 dans le forum Électronique
    Réponses: 5
    Dernier message: 12/03/2008, 18h31
  3. AIde sur Prog simple en basic
    Par invite8e8b3404 dans le forum Électronique
    Réponses: 6
    Dernier message: 12/09/2006, 22h24
  4. aide prog
    Par invitee43ac54a dans le forum Électronique
    Réponses: 0
    Dernier message: 28/03/2005, 16h30
  5. aide fin de prog
    Par invitee43ac54a dans le forum Électronique
    Réponses: 1
    Dernier message: 17/03/2005, 20h31
Découvrez nos comparatifs produits sur l'informatique et les technologies.