Applications diverses à base de PICBASIC 

Vous trouverez ci-dessous de très nombreuses notes d'applications mais aussi des exemples de programmes et des descriptions de réalisations conçues sur la base des modules PICBASIC, lesquelles vous permettront d'accélérer et de faciliter le développement de vos propres projets. Certains des programmes sources présentés dans ces notes d'applications sont téléchargeables via ce lien.
  


Les PICBASIC en milieu scolaire - 14/05/2005   -  Mr Rodolphe Waline


Disponible dans le fichier (.zip) de nos notes d'applications, ce document extrêmement complet et très didactique (PicbasicXPv52.pdf) a été remis aux étudiants du Lycée Modeste Leroy Evreux qui étudient les "PICBASIC-3B" et "PICBASIC-3H". Cette nouvelle version du document permet de travailler sous XP (avec le nouveau cordon) et fait une étude des interruptions du picbasic (comment les arrêter, les remettre en route, en utiliser de différents types,...) ce qui n'est pas prévu dans la doc constructeur. Ce document a servi pour réaliser les projets 2005/2006 de BTS électronique pour la haute et basse Normandie. 
  
  


Automate de gestion de biosphère - 13/05/2005   -  Mr Rodolphe Waline 


  

  
Cette application est issue du sujet de BTS électronique 2005 qui consistait en la fabrication pour les étudiants d'un système automatique de gestion d'une biosphère (élevage de criquets par exemple). 
    
Un module de base gère par liaison rs232 ou par liaison radio (spm2) avec un pc , les dates et heures des différentes consignes (distribution de nourriture, régulation de température, régulation d'humidité, et éclairement), le jour et la nuit. 
    
Un afficheur LCD permet d'afficher  et/ou de régler les consignes et les différentes mesures.
 
Ces consignes datées par une horloge temps réel et enregistrées en EEPROM externe sont renvoyées par liaison I2C™ sur les 4 modules périphériques qui régulent  le système grâce à des capteurs et des actionneurs.

        


Banc de test multifonctions - 31/03/2006  


 
  
  
Voici la réalisation d'un appareil de mesure à base de PICBASIC-2000 (dont le capot en plastique a été enlevé). Cet appareil dispose des modes de mesure: Volts AC / Volt DC / Testeur d'iso-lement / Testeur de continuité / Testeur d'impédance de boucle / Testeur de résistance de ter-re / Testeur de disjonction différentiel / Testeur de résistance 4 fils.
   
    
    


Le "DISKOLOR" - 30/09/2004 - Mr Champleboux E.  


Voici une réalisation extrêmement originale à base de PICbasic-3H et de pièces MECCANO™. Le  principe en est simple (du moins sur le "papier"), un moteur synchrone (env 1500 t/mn) entraîne un disque d'altuglass™ épais sur lequel sont disposées 8 LEDS trés haute luminosité de différentes couleurs.
 
   
  
Un PICbasic les alimente séquentiellement suivant un programme varié mélangeant les séquences aléatoires et produisant des effets lumineux inattendus... 2 balais assurent l'alimentation  du PICbasic pendant la rotation.
    
     
  
Une parfaite maîtrise de la mécanique et de l'électronique ont été nécessaires pour parvenir à ce petit chef-d'œuvre esthétique et ludique.
  
     
  
  
  


Customisation d'un "scooter des mers" - 05/09/2003   -  Mr M. B 



     
  
  
  


Jeu électronique - 25/10/2003   -  BMS CONCEPT 





Jeux électronique type "loterie" utilisé pour animation "évènementielle" en grande surface. La carte permet de sélectionner le nombre de joueur et de gagnants autorisés par jour. 
   
Le PICBASIC gère la "rotation" de la roulette (visualisée par des Leds ainsi que l'attribution des gains de façon aléatoire. 

    


Réalisation d'une serrure codée - 25/11/2004   -  Lextronic


Les PICBASIC offrent la possibilité d'utiliser et de "décoder" des claviers matricés 12 ou 16 touches avec une extrême facilité. La note d'application qui suit vous permet en premier lieu de vous familiariser avec l'instruction capable de réaliser cette fonction et en second lieu de réaliser une véritable serrure codée "type alarme".
 
Nous avons choisi our se faire d'utiliser le clavier "EC83" car il dispose d'un excellent rapport qualité/prix et qu'il est de plus doté de sorties sur conecteurs mâles au pas de 2,54 mm qui nous permettrons de l'enficher très facilement sur la plaque d'essai sans soudure de la platine d'évaluation "PnP Board3". Ce clavier est du type matricé, pouvant être ainsi très facilement utilisé à l'aide de l'instruction PADIN des PICBASIC. Cette instruction est capable de "scanner" automatiquement l'état d'un clavier 12 ou 16 touches et de retourner dans une variable la valeur de la touche sollicitée. 
   
 
 
 
L'utilisation de cette instruction nécessite l'emploi de résistances de "tirage" à placer sur les "lignes" du clavier matricé. Le PICBASIC faisant "passer" successivement le niveau logique de ses colonnes à "0", il en résulte que si une touche est sollicitée, la ligne correspondante (initialement au niveau logique "1" par le biais des résistances de tirage, passera alors à "0"). Afin d'éviter d'avoir à vous procurer les résistances de tirage en question, nous utiliserons simplement celles présentes sur chacun des boutons-poussoirs de la carte "PB Study Board" ! 

Le schéma ci-contre indique la correspondance des lignes et des colonnes du clavier "EC83". On remarquera qu'il conviendra de shunter 2 broches de ce dernier pour obtenir le matriçage du clavier. Du fait que le clavier ne dispose que de 12 touches, on n'utilisera pas la ligne "I/O12" qu'il conviendra tout de même de relier à la résistance de tirage afin que le "PICBASIC" n'interprète pas l'absence de niveau "1" comme une sollicitation de touche. 
 
Afin de ne pas compliquer outre mesure le raccordement du clavier au PICBASIC, nous avons quelque peu modifier l'ordre de ces connexions. ceci ayant pour seule conséquence de modifier la valeur du numéro de touche retourné par rapport au marquage indiqué sur celles-ci (voir explications ci-dessous). Pour l'heure, réalisez le montage ci-dessous à l'aide de fils de liaison. Vérifiez l'absence de court-circuit et de mauvais contacts (n'utilisez pas de fils doté d'un diamètre trop petit). Réalisez également des connexions les plus courtes possibles. On notera le retour de certains fils sur les bornes K1 à K4 afin de bénéficier des résistances de tirage présentent sur les entrées "bouton-poussoirs". N'oubliez pas enfin (si vous l'avez acquis), de connecter l'afficheur "LCD" 2 x 16 caractères "ELCD162" sur le conecteur en haut à droite (marqué "LCD") de la platine.

  
Programme 1 
Une fois le montage terminé, saisissez le programme suivant (n'oubliez pas d'ajouter à la première ligne l'instruction:   CONST DEVICE = 3B  - si vous êtes sous WindowsXP™ et que vous utilisez un PICBASIC-3B). Ce programme va générer un bip sonore par le biais de la sortie "I/O 0" (laquelle est relié au buzzer de la platine) à chaque fois qu'une touche du clavier "EC83" est sollicitée (dans ce cas, la valeur retournée n'est pas égale à "0".
    
       DIM I AS BYTE
20   I = PADIN(1)
      IF I = 0 THEN GOTO 20
      BEEP 0
      GOTO    20
                                                       
                   
Comme vous pourrez le constater si vous appuyez lentement sur une des touches du clavier, ou si vous restez appuyé sur celles-ci, le buzzer emettra une série de "bips" sonores consécutifs.
     
           
Programme 2 
Tapez alors ce second programme et exécutez-le (n'oubliez pas d'ajouter à la première ligne l'instruction:   CONST DEVICE = 3B  - si vous êtes sous WindowsXP™ et que vous utilisez un PICBASIC-3B). Ce dernier permet de ne générer qu'un seul bip sonore, même si on reste appuyé sur une des touches du clavier. En effet un second test permettant d'attendre que le clavier ne soit plus sollicité a été ajouté (On attend à partir de la ligne 30 que la valeur retournée par l'instruction PADIN ne soit plus supérieure à "0").
    
Pour rappel:
- la valeur "0" signifie que le clavier n'est pas sollicité.
- Toute valeur supérieure à "0" signifie qu'une touche est enfoncée. 
      
        DIM I AS BYTE
20   I = PADIN(1)
      IF I = 0 THEN GOTO 20
       BEEP 0
30   I = PADIN(1)
      IF I > 0 THEN GOTO 30 
      GOTO    20
                                      
          
    
Programme 3 
Tapez maintenant ce nouveau programme et exécutez-le (n'oubliez pas d'ajouter à la première ligne l'instruction:   CONST DEVICE = 3B  - si vous êtes sous WindowsXP™ et que vous utilisez un PICBASIC-3B). Ce dernier permet de connaître la valeur retournée par l'instruction PADIN en l'affichant en haut à gauche de l'écran de l'afficheur "ELCD162" à commande série. Ainsi en absence de sollicitation des touches, la valeur "00" est affichée. Lorsque vous appuyez en revanche sur les touches du clavier sa "valeur" s'affiche à l'écran.
  
Vous pourrez constater que les valeurs retournées ne correspondent pas au N° réel de la touche du clavier (en effet, comme indiqué ci-avant nous avons modifiez l'ordre "colonnes/lignes" du clavier pour simplifier le câblage et sa représentation).
  
Ainsi par exemple, la touche 1 retournera la valeur 14, la touche 2 la valeur 15, la touche 3 la valeur 16, etc... Nous vous suggérons de noter la correspondance de chaque touche afin que vous puissiez vous y retrouver lors de la réalisation des autres programmes et notamment de la serrure codée pour laquelle vous devrez composer votre code secret.
      
       DIM I AS BYTE
      SET PICBUS HIGH
      CSROFF 
      LCDINIT
      CLS 
20   I = PADIN(1)
      LOCATE 0,0
      PRINT DEC(I,2)
      GOTO    20         
        
         
Si vous ne disposez pas d'afficheur à commande série "ELCD162", vous pourrez toutefois visualiser la valeur retournée pour chaque touche à l'aide du mode "DEBUG" de l'éditeur des PICBASIC. Pour ce faire, utilisez à nouveau le programme N° 2 et ajoutez l'instruction  BREAK juste après l'instruction BEEP 0 et avant la ligne 30 (l'instruction   BREAK ne doit pas être collée complètement à gauche de l'écran). Exécutez alors le programme et appuyez sur une des touches du clavier "EC83", le programme "arrivant sur l'instruction BREAK" passe alors en mode "DEBUG" et vous affichera dans une fenêtre spéciale la valeur de la variable "I" (à la droite de l'écran du PC). Cliquez alors sur le bouton "DONE" et le programme s'exécute à nouveau. Une nouvelle sollicitation fait de nouveau afficher la fenêtre "DEBUG" et la valeur retournée par l'instruction "PADIN".
   
       
Programme 4 
Tapez maintenant ce nouveau programme et exécutez-le (n'oubliez pas d'ajouter à la première ligne l'instruction:   CONST DEVICE = 3B  - si vous êtes sous WindowsXP™ et que vous utilisez un PICBASIC-3B). Ce dernier permet la réalisation d'une serrure codée à 4 chiffres. Il vous permettra d'activer et de désactiver une sortie à chaque fois que vous taperez les 4 chiffres secret de votre code dansle bon ordre.
  
Explication du programme: l'instruction  OUT 16,0  permet d'initialiser et de désactiver l'état de la sortie de la serrure codée. La sous-routine en ligne 20 permet d'attendre l'appui et le relâchement d'une touche du clavier "EC83" (tout en sauvegardant la valeur de cette touche dans la variable "J"). Les instructions qui suivent la ligne 10  permettent d'effectuer des tests successifs sur les 4 chiffres du code (si le chiffre est "bon", on passe au test du chiffre suivant, si il n'est pas bon on reprend les vérifications à partir du début (de la ligne 10). Arrivé au dernier chiffre, on inverse l'état de la sortie de la serrure  TOGGLE 16   (sur laquelle est reliée une Led de visualisation qui va donc s'eteind et s'allumer alternativement à chaque saisie d'un bon code). De plus on génère une petite note musicale. Concernant la valeur du code secret, il vous faudra reprendre votre liste de correspondance (N° de touche réel / numéro retourné par l'instuction PADIN) pour établir ce dernier. AInsi dans l'exemple ci-dessous, les chiffres 12, 7, 3 et 14 correspondent en fait au code secret: 6, 8, 0 et 1.
           
        DIM I AS BYTE, J AS BYTE
       OUT 16,0
10    GOSUB 20
       IF J<> 12 THEN GOTO 10
       GOSUB 20
       IF J<> 7 THEN GOTO 10
       GOSUB 20
       IF J<> 3 THEN GOTO 10
       GOSUB 20
       IF J<> 14 THEN GOTO 10
       TOGGLE 16
       SOUND 0,15,3,10,3
       GOTO 10

20    I = PADIN(1)
       IF I = 0 THEN GOTO 20
       BEEP 0
       J = I
30    I = PADIN(1)
       IF I > 0 THEN GOTO 30 
       RETURN  
 
         
Programme 5 
Tapez maintenant ce nouveau programme et exécutez-le (n'oubliez pas d'ajouter à la première ligne l'instruction:   CONST DEVICE = 3B  - si vous êtes sous WindowsXP™ et que vous utilisez un PICBASIC-3B). Ce dernier est une évolution du programme précédent permettant de mémoriser le nombre de touches "erronées" saisies lorsque quelqu'un essai de trouver le bon code. Ceci est mémorisé dans la variable  FAUX   et passé un certains nombre de mauvaise touches (> 10) le clavier se bloquera complètement pendant plusieurs secondes. Au terme du "blocage", un bip sonore retenti, signifiant que le clavier est de nouveau opérationnel. A noter qu'a chaque fois que le code saisie est correct, le nombre d'erreurs de saisie est remis à zéro. 
           
        DIM I AS BYTE, J AS BYTE, FAUX AS BYTE
       OUT 16,0
       FAUX = 0
10    FAUX = FAUX+1
       GOSUB 20
       IF J<> 12 THEN GOTO 10
       GOSUB 20
       IF J<> 7 THEN GOTO 10
       GOSUB 20
       IF J<> 3 THEN GOTO 10
       GOSUB 20
       IF J<> 14 THEN GOTO 10
       TOGGLE 16
       SOUND 0,15,3,10,3    
       FAUX = 0
       GOTO 10

20    I = PADIN(1)
       IF I = 0 THEN GOTO 20

       IF FAUX > 10 THEN
         SOUND 0,90,40
         FOR J=0 TO 30
            DELAY 250
         NEXT
         FAUX = 0
       END IF
       BEEP 0
       J = I
30    I = PADIN(1)
       IF I > 0 THEN GOTO 30 
       RETURN  
 
        
Evolutions possibles... 
Ces quelques exemples de programmes vous permettent de vous donner quelques bases et notions sur la façon dont vous pouvez concevoir une serrure codé. Vous pouvez bien sûr améliorer encore cette dernière:
  
- En augmentant le nombre de n° composant votre code.
  
- En limitant la durée de composition du code suite à la première sollicitation d'une touche.
  
- En entrant dans un "mode spécial" suite à un nombre donné de touches erronés saisies. Mode
  dans lequel le clavier semble fonctionner normalement, mais n'est en fait plus capable d'actionner
  la sortie, même si on fini par taper le "bon code". Le fait de ne plus solliciter le clavier
  pendant un certain temps permettra de sortie de ce mode.
  
- En pouvant reconfigurer le code d'accès directement depuis la face avant du clavier (et non plus
  dans votre programme). Il vous faudra alors prévoir un second code qui une fois reconnu
  permettra de modifier et de sauvegarder le code d'accès dans la mémoire FLASH du PICBASIC.
  
- D'utiliser la sortie de la serrure en mode impulsionnelle temporisée (pour piloter une gâche par
   exemple).
  
- D'associer le PICBASIC à un module horloge et de permettre la commande de la sortie du clavier
  au moyen d'une seule touche du clavier dans certaines "plages horaires" et au contraire de
  devoir taper l'intégralité du code suivant d'autres tranches horaires.
  
- D''utiliser un module horloge additionnel afin de permettre l'activation automatique de la sortie
  de la serrure à certaines heures.        
   
Dans tous les cas, si vous avez réalisé une évolution intéressante de ce programme, n'hésitez pas à nous en faire part afin que nous le "publions" sur notre site Internet.
   
                   
Derniers conseils... 
Si vous passez à la réalisation "pratique" réelle de la serrure codée, il faudra impérativement que les connexions entre le clavier "EC83" (ou un autre modèle) et le PICBASIC soient les plus courtes possibles (de l'ordre du cm) afin d'éviter les retours "ESD" sur les entrées de ce dernier (qui pourrait lui être fatal - non pris en compte par la garantie). Utilisez également un montage à transistor si vous pilotez un relais de sortie (utilisez une diode de "roue" libre pour le relais). Dans le cas de commande d'une gâche électrique, utilisez également une diode de protection sur cette dernière. Soignez la régulation et le filtrage de votre alimentation et de la génération du +5V.  

    
    


Envoi de SMS - 25/10/2003   -  BMS CONCEPT 


Ces 2 programmes très intéressants vous permettrons d'envoyer et de recevoir des "sms" à l'aide d'un terminal "GSM" et d'un PICBASIC (les essais ont été réalisés avec un PICBASIC-3B et un terminal "Siemens™" réf.: "M20", vous pouvez aussi utiliser un autre modèle type "TC35" ou autre par exemple). Rien ne vous empêche également de faire appeler un Modem type PC et d'envoyer et recevoir des emails ! (programmes "SMS.BAS" et "UTISMS.BAS").
   
      
    


Orgue électronique - 10/10/2003  


 

 

Ce petit programme tout simple vous permet de transformer votre module "PICBASIC" en un petit orgue électronique.
  

 MAIN :
          IF KEYIN (0) = 0 then play 8,"C6"
          IF KEYIN (1) = 0 then play 8,"D6"
          IF KEYIN (2) = 0 then play 8,"E6"
          IF KEYIN (3) = 0 then play 8,"F6"
          IF KEYIN (4) = 0 then play 8,"G6"
          IF KEYIN (5) = 0 then play 8,"A6"
          IF KEYIN (6) = 0 then play 8,"B6"
          IF KEYIN (7) = 0 then play 8,"+C6"
          GOTO MAIN

  


Interface série 8 entrées - 02/03/2003   -  Lextronic
Les PICBASIC offrent la possibilité de pouvoir communiquer au travers d'un port RS-232. A ce titre, nous allons les utiliser pour réaliser une interface permettant à un PC de connaître l'état de 8 entrées "tout-ou-rien" du PICBASIC. Ainsi cette application vous permettra de récupérer les états de 8 entrées tout-ou-rien du PICBASIC via le port série d'un PC et de les afficher sur l'écran de votre PC. Pour ce faire, il vous faudra réaliser le montage ci-dessous et relier la platine "PB Study Board" à votre PC sur un port série de libre grâce au câble male/femelle "CW014". Les ports "I/O8" à "I/O15" seront raccordés aux boutons-poussoirs de la platine, tandis que le port "I/O16" sera relié à l'entrée "TX" (afin de pouvoir envoyer des données séries du PC).
    
Le programme ci-dessous va envoyer en continu l'état logique des entrées (I/O8 à I/O15) au PC via le port série de ce dernier. Ces informations seront expédiée par la broche (I/O16) du PICBASIC. Pour commencer l'émission des données (voir ligne 10), il vous faudra en premier lieu appuyer sur le premier bouton de la platine (K1). Afin de pouvoir afficher les valeurs sur l'écran du PC, il vous faudra préalablement disposer d'un émulateur de terminal série (vous pouvez par exemple utiliser "Hyper Terminal™", livré avec Windows™. Exécutez donc ce dernier en sélectionnant le numéro du port sur lequel vous avez connecté la platine "PnP Board3". Configurez également "Hyper Terminal™" avec un débit de communication de 9600 bds, 8 bits, 1 stop , aucune parité et aucun contrôle de flux (ce dernier paramètre st important). Plutôt que de renvoyer un octet correspondant au "reflet" des 8 entrées (ce qui ne sera pas très explicite à l'écran), le programme va envoyer l'état successif des 8 entrées ("0" si la touche relative à l'entrée est sollicitée et "1" si la touche relative à l'entrée n'est pas sollicitée). On se retournera alors avec 8 chiffres à l'écran (correspondant ainsi à la représentation binaire de ces entrées). Un caractère "13" est envoyé en fin de chaîne afin que le curseur revienne en début de ligne afin que le PC ré-écrive les chiffres les uns par dessus les autres. Pour récupérer l'état de chaque bit de l'octet correspondant aux 8 entrées, on mémorise dans la variable     k=1.0   l'état de l'octet de poids faible (auxquels on ajoute la valeur &h30 afin d'envoyer la représentation du chiffre "0" (&h30), si l'octet = 0 ou "1" (&h31) si l'octet = "1". Il suffit ensuite d'effectuer une successivement une rotation des bits de l'octet des entrées   i=i>>1  afin de connaître l'état de toutes les entrées.
     
       dim i as byte, J as byte, k as byte
10   i=in(8)
      if i=1 then goto 10    
20   i=bytein(1)
       for j=1 to 8 
          k=i.0
          k=k+&h30
          serout 16,103,0,1,[k]
          i=i>>1
       next
       serout 16,103,0,1,[13]
       goto 20    
 
        
Evolutions possibles... 
Cet exemple de programme vous permet de vous donner quelques bases et notions sur la façon dont vous pouvez concevoir une interface série. L'état des entrées pourront également être traités au sein de n'importe quelle application capable de gérer une liaison série: Delphi™, langage "C", langage "pascal", Visual Basic™, Windev™, Profilab Expert™... Il conviendra dans ce cas d'envoyer directement un seul octet et de faire le traitement de séparation des "bits" au niveau du PC. Pensez à protéger les entrées du PICBASIC devant recevoir les capteurs tout-ou-rien. Ne connectez jamais de grand fils tels quels sur le PICBASIC - utilisez des dispositifs de protection (optocoupleurs, montage écréteur à diode zener, etc...). 
    
  
  

Interface série 8 sorties - 02/03/2003   -  Lextronic
Cette application vous permettra de piloter les 8 Leds de la platine "PB Study Board" à partir de commandes en provenance du clavier de votre PC. Pour ce faire, il vous faudra réaliser le montage ci-dessous et relier la platine "PnP Board3" à votre PC sur un port série de libre grâce au câble male/femelle "CW014". Les ports "I/O8" à "I/O15" seront raccordés aux Leds de la platine, tandis que le port "I/O17" sera relié à l'entrée "RX" (afin de pouvoir réceptionner les ordres séries du PC avec des niveaux logiques 0/5 V).
  
Le programme très simple ci-dessous est en attente permanent d'un octet sur le port série (I/O 17) du PICBASIC. Si au bout de 5 sec. aucun caractère n'est détecté, le programme retourne en attente en ligne 10. Afin de pouvoir envoyer des ordres à la platine, il vous faudra préalablement disposer d'un émulateur de terminal série (vous pouvez par exemple utiliser "Hyper Terminal™", livré avec Windows™. Exécutez donc ce dernier en sélectionnant le numéro du port sur lequel vous avez connecté la platine "PB Study Board". configurez également "Hyper Terminal™" avec un débit de communication de 9600 bds, 8 bits, 1 stop , aucune parité et aucun contrôle de flux (ce dernier paramètre st important). Le programme est fait de telle sorte que vous puissiez commander ("marche / arrêt) les 8 sorties Leds de la platine "PB Study Board" à l'aide des touches "1" à "8" du clavier numérique de PC. Les touches "0" et "9" permettant respectivement d'éteindre toutes les Leds ou d'allumer toutes les Leds en même temps. Cette possibilité est rendu possible en enlevant la valeur décimale 41 du code retourné par le PC, dès lors en tapant sur la touche 1, la variable I sera égale à la valeur décimale "8" (correspondant au port capable de piloter la Led 1), en tapant la touche 2, la variable I prendra alors la valeur "9" (correspondant au port capable de piloter la Led 2), et ainsi de suite... Un test sera effectué pour vérifier que la valeur de l'octet reçu reste dans les ports attribués à la commande des Leds (ainsi toutes les autres touches seront tout simplement ignorées). 
     
       DIM I AS BYTE
       BYTEOUT 1,0
10  SERIN 17,103,0,5000,10,[I]
      I=I-41
      IF I>7 AND I<16 THEN
         TOGGLE I
      END IF
      IF I=7 THEN BYTEOUT 1,0                      ' éteind toutes les Leds en même temps
      IF I=16 THEN BYTEOUT 1,255                 ' Allume toutes les Leds en même temps
      GOTO 10                                        
 
    
Evolutions possibles... 
Cet exemple de programme vous permet de vous donner quelques bases et notions sur la façon dont vous pouvez concevoir une interface série. Les ordres issus de votre PC pourront également être générés au sein de n'importe quelle application capable de gérer une liaison série: Delphi™, langage "C", langage "pascal", Visual Basic™, Windev™, Profilab Expert™... Vous pourrez dès lors définir vous même les codes séries reconnus ou non par la carte PICBASIC. Vous pourrez également utiliser plus que 8 sorties (passez sur un PICBASIC-3H si nécessaire). Les Leds pourront être remplacées par des relais (en utilisant un montage à transistor pour les piloter). 
    
  
  

Interface série 4 entrées / 4 sorties - 02/03/2003   -  Lextronic
Cette application vous permettra de piloter les 4 Leds de la platine "PB Study Board" à partir de commandes en provenance du clavier de votre PC. Vous pourrez également conaître l'état logique de 4 entrées du PICBASIC à partir du PC. Pour ce faire, il vous faudra réaliser le montage ci-dessous et relier la platine "PB Study Board" à votre PC sur un port série de libre grâce au câble male/femelle "CW014". Les ports "I/O12" à "I/O15" seront raccordés aux Leds de la platine, tandis que les ports "I/O8 à I/O11" seront raccordés aux boutons-poussoirs de la "PB Study Board". Enfin les ports "I/O16" et "I/O17" seront respectivement raccordés aux broches "TX" et "RX" (afin de pouvoir envoyer et réceptionner des données séries vers/depuis le PC avec des niveaux logiques 0/5 V).
  
Le programme ci-dessous est en attente permanent d'un octet sur le port série (I/O 17) du PICBASIC. Si au bout de 5 sec. aucun caractère n'est détecté, le programme retourne en attente en ligne 10. Afin de pouvoir envoyer des ordres à la platine, il vous faudra préalablement disposer d'un émulateur de terminal série (vous pouvez par exemple utiliser "Hyper Terminal™", livré avec Windows™. Exécutez donc ce dernier en sélectionnant le numéro du port sur lequel vous avez connecté la platine "PB Study Board". configurez également "Hyper Terminal™" avec un débit de communication de 9600 bds, 8 bits, 1 stop , aucune parité et aucun contrôle de flux (ce dernier paramètre st important). Le programme est fait de telle sorte que vous puissiez commander ("marche / arrêt) les 4 premières Leds de la platine "PB Study Board" à l'aide des touches "1" à "4" du clavier numérique de PC. Les touches "0" et "9" permettant respectivement d'éteindre toutes les Leds ou d'allumer toutes les Leds en même temps. Cette possibilité est rendu possible en enlevant la valeur décimale 37 du code retourné par le PC, dès lors en tapant sur la touche 1, la variable I sera égale à la valeur décimale "12" (correspondant au port capable de piloter la Led 1), en tapant la touche 2, la variable I prendra alors la valeur "13" (correspondant au port capable de piloter la Led 2), et ainsi de suite... Un test sera effectué pour vérifier que la valeur de l'octet reçu reste dans les ports attribués à la commande des Leds (ainsi toutes les autres touches seront tout simplement ignorées). Toutefois si vous sollicitez la touche "7" du clavier du PC, dans ce cas le PICBASIC va retourner un à un l'état logique ("0" ou "1") des 4 ports "I/O8" à "I/O11" reliés aux boutons-poussoirs de la platine "PB Study Board" afin de les afficher sur l'écran d'Hyper terminal™ du PC (un caractère "13" est envoyé en fin de chaîne afin que le curseur revienne en début de ligne pour re-écrire par dessus les même chiffres lors de l'interrogation suivante). On notera toutefois que si l'état des poussoirs changent, vous ne verrez pas évoluer ces derniers en temps réel à l'écran du PC (vous ne connaissez l'état des poussoirs de la carte "PnP Board" que sur "interrogation" via la touche "7" du clavier du PC).
           
       DIM I AS BYTE,J AS BYTE, K AS BYTE
10  SERIN 17,103,0,5000,10,[I]
      I=I-37
      IF I>11 AND I<16 THEN
        TOGGLE I
      END IF
      IF I=11 THEN BYTEOUT 1,0 ' éteind toutes les Leds en même temps
      IF I=20 THEN BYTEOUT 1,255 ' Allume toutes les Leds en même temps
      IF I=18 THEN ' Demande de lecture des 4 entrées
         I=IN(8)+&H30         
         SEROUT 16,103,0,1,[I]
         I=IN(9)+&H30         
         SEROUT 16,103,0,1,[I] 
         I=IN(10)+&H30         
         SEROUT 16,103,0,1,[I]
         I=IN(11)+&H30         
         SEROUT 16,103,0,1,[I]
         SEROUT 16,103,0,1,[13]
      END IF 
      GOTO 10  
 
    
Evolutions possibles... 
Cet exemple de programme vous permet de vous donner quelques bases et notions sur la façon dont vous pouvez concevoir une interface "entrées/sorties" séries. Les ordres issus et recus vers/par le PC pourront également être générés au sein de n'importe quelle application capable de gérer une liaison série: Delphi™, langage "C", langage "pascal", Visual Basic™, Windev™, Profilab Expert™... Vous pourrez dès lors définir vous même les codes séries reconnus ou non par la carte PICBASIC. Vous pourrez également utiliser plus que 4 entrées et 4 sorties (passez sur un PICBASIC-3H si nécessaire). Les Leds pourront être remplacées par des relais (en utilisant un montage à transistor pour les piloter). En ce qui concerne les entrées, ne connectez jamais de grand fils tels quel sur le PICBASIC - utilisez des dispositifs de protection (optocoupleurs, montage écréteur à diode zener, etc...).