Electromag1 Circuits électroniques et Picaxes

Petit site pour ceux qui bricolent en électronique en général et sur les PICAXES en particulier.
Les PICAXES sont des microprocesseurs (PIC de Microship) programmables en BASIC. Pleins de qualités, pas chers, ultra faciles à programmer.
Tout (ou presque) est sur le site du distributeur Gotronic (voir les liens).
Les pages  seront ajoutées ou modifiées petit à petit.
Dans le but d'améliorer ce blog, communiquez moi vos remarques et les erreurs que vous pouvez constater.
Pour me contacter: Envoyez un mail à l'adresse : mag1mic@free.fr .  Tout message reçoit une réponse
Pour retourner au menu, Cliquer sur "LISTE DES PAGES", ici ou en haut de la colonne de gauche
Pour laisser un message, allez dans le "LIVRE D'OR"
Bonne visite
 
 

Les picaxes

et leur basic


Présentation:

Les picaxes ne sont pas destinés aux professionnels de la programmation, mais aux élèves débutants et aux bricoleurs voulant développer simplement et facilement une petite application dans les domaines de la robotique, domotique, animation de leds, temporisations et toutes les applications ne demandant pas une vitesse de traitement élevée.

Prérequis recommandés pour continuer la lecture:
Cette page ne remplace pas la lecture de la doc officielle.
Lire les trois tomes de la documentation picaxe en téléchargement ci dessous:
http://www.picaxe.com/Getting-Started/PICAXE-Manuals/

Le tome 1 a été traduit en français:
http://www.picaxe.com/docs/picaxe_manual1_fr.pdf

Le tome 2 sur les commandes est aussi traduit en français.
http://www.picaxe.com/docs/picaxe_manual2_fr.pdf

Il n'est pas question d'appendre toute cette doc par coeur, mais d'avoir une idée du contenu.

Je recommande aussi la lecture de ce tutoriel, écrit par BESQUEUT, intervenant actif sur le forum français:
PDF en téléchargement  ICI
Un autre tuto bien fait (avec PE5) ICI
Une trduction en français d'une documentation originale ICI
 
Installer le logiciel gratuit "Programming Editor 5":
http://www.picaxe.com/Software/PICAXE/PICAXE-Programming-Editor/
Ce logiciel est un éditeur de texte, un simulateur et charge le programme dans le picaxe.
Il permettra de manipuler les programmes d'exemple.
Un nouvel éditeur, PE6 est sorti, plus puissant, avec de nouvelles fonctionnalités (par ex les macros), intégrant le logiciel de programmation graphique FLOWCHART (pour ceux qui aiment...), et maintenant BLOCKLY, pour une utilisation extrèmement simple des picaxes par les collégiens.

Voici un excellent tuto d'Alain sur PE6 ICI
Doc sur PE6 ICI

Voir aussi ce superbe tuto en français:
http://www.picaxe.com/docs/picaxe_manual1_fr.pdf

PE6 est aussi beaucoup plus "lourd" et les exemples ci dessous utilisent PE5
Les picaxes sont classés en deux séries
La série M2, du 08M2 au 20M2
La série X2, du 20X2 au 40X2, plus performante que la série M2.

Les exemples s'appuieront sur le 20M2, le plus gros de la série M2.
 
Voyons un peu...
  • Broches 1 et 20, c'est l'alimentation.
En général fixée à 5 v, mais la plage de fonctionnement descend aux environs de 2 v.
Fonctionnement sur pile sans problème. Ne jamais dépasser 5,5 volts!
 
  • Broches 2 et 19, pour la programmation
C'est ici que se connecte le câble de programmation série: RX sur Serial IN et TX sur Serial Out.
Sur le 20M2, la broche 19 est aussi une sortie DAC (Convertisseur Numérique Analogique), la valeur "analoqique" comporte 32 niveaux, c'est déjà ça...
Mais, Fragman (merci!) m'a fait découvrir que cette broche "serial out" pouvait aussi être programmée en sortie "out" sous la dénomination "A.0", comme sur le 20X2, mais non accessible par un numéro (16 sur le X2)
 
  • Les broches B et les broches C.
Il y a deux groupes de broches:
D'un côté : de 3 à 10, les broches C, nommées  C.0 à C.7
De l'autre côté, de 11 à 18, les broches B, nommées B.0 à B.7.

Toutes ces broches sont configurables en entrée (In) ou en sortie (Out), sauf  C.6, qui ne peut être qu'une entrée (il faut bien une exception), on retrouve cette distinction sur les broches C.3 ou C.5 des autres picaxes M2 (je vous laisse vérifier).

De plus, ces broches sont utilisées par des commandes basic plus évoluées:
Des ADC, convertisseur Analogique - Digital, qui transforment des tensions en nombres, (lecture de capteurs, etc)
Des PWM, modulation de largeur d'impulsion, qui donnent en tache de fond des signaux de fréquences et de rapports cycliques variables, (variation de vitesse moteur, dimmage d'éclairage, etc )
Des liaisons séries protocole 12C.
Pour le reste, lisez un peu la doc.
 
Détail technique: le courant max pour une sortie est de 20 mA. Mais le courant total délivré par les broches est limité à 90 mA.
Il faut tenir compte de ces limitations pour l'application  réelle des exercises ci dessous.
Au delà des limitations, le courant devra être amplifié. Plusieurs possibilités: transistor, mosfet, uln2803...
Voir les détails dans le tome 3: http://www.picaxe.com/docs/picaxe_manual3.pdf
 
Les mémoires disponibles, et quelques spécifications:

Dans le système picaxe, le terme byte représente un octet (groupe de 8 bits).

Capacité mémoire : 2048 octets. C'est l'espace mémoire recevant le code du programme. Pour les X2, il y a 4096 octets.

Table de données: 512 octets. Non disponibles sur le 08M2.  Ce sont des valeurs fixes, introduites par le code du programme, non modifiables par le programme, par ex: l'enregistrement d'un texte ou la description point par point d'une courbe, etc.

mémoires EEPROM: 256 octets, accessibles en lecture et écriture à tout moment, pour sauvegarder et relire des données sur 8 ou 16 bits par ex: des résultats de calcul, des paramètres, des données, etc.

Variables RAM : 512 octets. Accessibles par les commandes "poke", "peek", et en adressage indirecte par le pointeur "@bptr" (ça, c'est pour plus tard, en page 4).
28 de ces octets sont manipulables directement, numérotés de b0 à b27 (b comme byte). Ils permettent d'enregistrer des nombres de 0 à 255

 Les bytes b0, b1, b2, b3 sont découpables en "bit" pour les variables binaires, 0 ou 1
Ex : b0 = { bit7;bit6;bit5;...;bit1;bit0}

La concaténation de deux bytes donne une variable de type "word" de 16 bits, les 28 bytes donnent alors 14 variables numérotées de w0 à w13, (w comme word), pour enregister des nombres de 0 à 65535.
w0= {b1;b0}

ATTENTION:
Rien n'empêche d'utiliser la variable b1 d'une part et la variable w0 d'autre part,  comme les deux variables se partagent le même octet b1, cela entrainera des surprises aléatoires.
Pour éviter les mésaventures, on peut:
Réserver b0 pour un découpage éventuel en variables bits
Prendre les variables bytes dans le sens croissant : b1,b2,b3...etc
Prendre les variables word dans le sens décroissant : w13,w12,w11...etc

Toutes ces variables ne contiennent que des nombres entiers positifs (et pas tous)
l'incrémentation d'une variable "byte" donne une boucle de 256 nombres .
255+1 = 0 (sans avertissement). Les variables "word" bouclent sur 65536 nombres.
 

Les particularités du basic (picaxe)

Le signe =
 
En mathématiques, le signe = signifie que, ce qu'il y a de chaque côté, représente exactement la même entité. Si a=b on peut écrire b=a, c'est pareil.

En basic, ce n'est généralement pas le cas:
Ce qu'il y a à gauche est une mémoire, comme b0. Ce qu'il y a à droite est son contenu, un nombre.
Comme si on disait qu'une bouteille est égale au liquide qu'elle contient.

Le signe = n'est pas ici un signe d'égalité, mais d'attribution. Cette confusion des genres entre contenant et contenu agace les esprits les plus rigoureux, d'autres langages dissocient les signes d'égalité et d'attribution (= et ==).
En basic:
b2 = 5    à une signification.
5 = b2  ne veut rien dire et donne une erreur.
 
La hiérarchie des opérateurs:

"Normalement":       3 + 2 x 6 = 15    On fait la multiplication avant l'addition.
En basic picaxe:       3 + 2 x 6 = 30    Les opérations se font de gauche à droite, stritement.

La vitesse horloge:
Sur la série M2, elle est de 4MHz par défaut.
Elle est modifiable par la commande "setfreq" et grimpe jusquà 32 MHz sur cette série.
Sur les X2, la fréquence max est de 64MHz, avec ou sans quartz, suivant le modèle.
Attention, les commandes liées au temps sont affectées par le changement de fréquence.
Ex: "pause 1000"  correspond à une pause de 1000 ms pour une fréquence de 4 MHz, mais à 8 MHz, ce n'est plus que 500 ms, etc...

Les signes particuliers:
Les caractères " ; " et " ' "  indiquent que le texte qui suit n'est pas du code à exécuter, mais un commentaire.
Le caractère " : "  permet de séparer plusieurs commandes sur une même ligne: Ex:  high led1 : low led2

Bon, c'est la récré, on va jouer au simulateur !

Ouvrez le Picaxe Programming Editor 5.5.5 ou 5.5.6
 

Les icones carrés donnent accès aux fonctions, dans les options, sélectionnez Picaxe-20M2

On dit d'un programme "qu'il tourne". La fenêtre du simulateur ne reste ouverte que si il y a des instructions à simuler, (ou si on a décocher une case dans les options de simulation).
La commande la plus connue du basic est le GOTO, associé à son étiquette, "ça tourne".
 

Le goto et son étiquette "debut:" sont écrits dans l'éditeur.
Remarque: le nom de l'étiquette est suivi de ":" (pas dans le goto).
La simulation est lancée en cliquant sur l'icône "Simulate", et la fenêtre s'ouvre.
Nous voyons les 16 broches du 20M2. Par défaut, toutes les Entrées/Sorties sont configurées en Entrées, au niveau bas (0) . Les entrées passent au niveau haut (1) en cliquant sur le bouton (Ex entrée C.5). Pour repasser au niveau bas, il faut cliquer une deuxième fois.
Seul problème, ce programme ne fait rien.

Trois façons de dire la même chose:
Niveau haut = + alimentation = niveau logique " 1"
Niveau bas = 0 volt = niveau logique "0"
En fait, ce n'est pas tout à fait aussi simple, les niveaux logiques 0 et 1 sont définis par des normes:
Norme TTL: Pour une alimentation > 4,5 v , une tension < 0,8 v est un 0     et > 2 v , c'est un 1
Pour plus d'infos, voir la commande Inputtype du manuel
 
Trois façons d'écrire le même nombre:
En décimal                   : 1252 = 1252  (normal...)
En binaire                    : 1252 = %10011100100  (% pour binaire)
En hexadécimal           : 1252 = $4E4  ($ pour hexadécimal)
On peut écrire un nombre sous une forme ou une autre, aucune importance.

Allumons des leds
Traditionnellement, le premier programme fait clignoter une led, le voici:


Remarques:
Toutes les broches, les variables et les constantes peuvent être nommées par une commande "symbol", le programme est beaucoup plus lisible, le premier bénéfiaire est l'auteur lui-même.
Ici, la broche B.3 s'appelle "led".
Parfois utile, le goto a mauvaise réputation. La boucle goto et son étiquette est remplacée par une boucle do : loop. De plus, la possibilité d'ajouter des conditions (while , until) au début ou en fin de boucle est très intéressante.
Les commandes "high" et "low" sont, sous leur aspect anodin,  un concentré d'informations, "high led" signifie:
Que la broche concernée est B.3
Que cette broche sera configurée en sortie (automatiquement).
Que cette sortie sera au niveau haut (+ alimentation)
Rem:C.6 ne peut être qu'une entrée, high C.6 provoque (généralement) une erreur de syntaxe.
 
Le dessin de la broche B.3 a changé, c'est un rectangle noir pour le niveau bas ou vert pour le niveau haut, il suffit de  relier une led avec sa résitance de limitation (max 20 mA) à cette broche pour la faire clignoter, une seconde on, une seconde off.
 
La fonction spéciale "dir"
Cette fonction spéciale permet de configurer les broches en Entrées ou en Sorties, en fonction des circuits branchés sur les broches.
Le picaxe 20M2 distingue les broches B et les broches C. Il y a une fonction spéciale pour chaque groupe de broches : dirsB et dirsC.
Ex: Pour que la broche B.3 soit configurée en sortie, il faut écrire:
DirB.3=1
ou:
dirsB= %00001000    
Les 8 broches sont représentées dans un octet, de B.0 à droite à B.7, à gauche
Rem: C.6 ne peut être qu'une entrée, mais, dirC.6 =1 ne provoque aucune erreur, la commande est simplement ignorée, idem pour dirsC = %01000000

La fonction spéciale "pin"
Le basic fait la distinction entre une broche, et sa valeur logique (0 ou 1) .
Ex : C.6 représente la broche ; pinC.6 représente sa valeur logique.
Contrairement à Low ou High, cette fonction ne désigne pas la broche en entrée ou sortie (en entrée par défaut), il faut donc associer la fonction "dir" pour que la broche fonctionne en sortie.
Dans un test, il ne faut pas considérer une broche, mais sa valeur.
Les groupes des 8 broches B et C sont nommés pinsB et pinsC
Ex : Les 8 broches B sont représentées par un octet, de B.0 à droite à B.7, à gauche.
Pour fixer la valeur de la broche B.3 au niveau logique 1, il faut écrire:
pinB.3 = 1
ou
pinsB= %00001000  (c'est un octet, en binaire)

pinsB est donc un octet, mais la commande  pinsB a deux fonctions distinctes:
  • A gauche du signe "=", l'octet représente respectivement le niveau des broches "B" en sorties, mais uniquement pour les broches définies précédemment comme une sortie par une commande "dir".
  • A droite du signe "=", l'octet représente respectivement les niveaux des entrées lus sur les broches "B".
Résumé:
dirsB = %11111111        (les  huit broches B sont définies en SORTIES)
pinsB = pinsC              (les broches B prendront broche à broche les niveaux lus sur les broches C)
Voir les exemples dans la suite
 
Voir suite page n°2.

 



Créer un site
Créer un site