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
 
 

Allumer une led avec un poussoir
Les rieurs diront qu'on peut le faire sans µC, ils auront raison. Toutefois, l'exercice n'est pas sans intérêt.
Il va falloir tester la valeur de la broche entrée, alimentée par le poussoir.
En premier lieu, on pense à un programme de ce genre:
 

Si le poussoir positionne C.6  au niveau haut (jaune) , alors, la sortie B.3 passe au niveau haut (vert) et la diode s'allume, sinon, elle passe au niveau bas (noir)

Autre méthode:
Comme pour les entrées, les valeurs des broches configurées en sorties peuvent être désignées par pin (ou outpin, si on veut faire la distinction entre entrées et sorties).
Ex : Aprés avoir configurer la broche B.3 en sortie, on peut écrire que la valeur d'une sortie est égale à la valeur d'une entrée.


 
Le "if then" a disparu et il n'y a plus qu'une seule ligne, la diode en B.3 s'allume si on appuie sur le poussoir en C.6

Plus fort: 8 poussoirs et 8 leds
 dirsB = %11111111 configure les 8 broches B en sorties.
pinsB (ou outpinsB) désigne les 8 sorties sous la forme d'un octet
pinsC fait de même avec les entrées C

 

En appuyant sur les poussoirs C.1, C.5,C.6 les leds correspondantes B.1, B.5, B.6, s'allument.
 

Le chenillard

En plus des dénominations visibles sur cette simulation en B.x ou C.x, chaque broche est représentée par un simple numéro.
Ainsi, les broches :
B0 à B7 sont numérotées de 0 à 7
C0 à C7 sont numérotées de 8 à 15
Pour les picaxes de la série X2:
A0 à A7sont numérotées de 16 à 23
D0 à D7 sont numérotées de 24 à 31
Cela facilite la programmation d'un chenillard
 

 
Une bouche For / next incrémente le compteur "led" de 0 à 15, allume chaque broche pendant une seconde, jusqu'à la dernière, et le cycle recommence.
Ici, toutes les broches ont été positionnées en sorties pendant le premier cycle de la simulation (par les commandes HIGH et LOW), sauf  C.6.
Aucune erreur à la vérification de syntaxe. Lorsque le compteur est arrivé sur C.6, il y a eu une pause de 1 seconde, la broche a été ignorée et le compteur a continué, ...tranquillement.
Pour éviter la pause de trop, il faut faire un test sur led=14 et avancer d'un cran.


Faire varier la vitesse:
"pause 1000" allume les leds pendant 1000 ms. Cette valeur peut varier entre 0 et 65535.
Avec un potentiomètre et un ADC, il est facile de modifier la valeur de cette pause.
l'ADC ou "Analogique to Didital Converter" ou CAD en français, convertit une tension variable,
par ex  entre 0 à 5 v (tension d'alimentation), en un nombre
Il y a deux commandes ADC:
ADC 8 bits: "readadc", convertit une tension de 0 à 5 v en un nombre de 0 à 255
ADC 10 bits: "readadc10", convertit une tension de 0 à 5 v en un nombre de 0 à 1023
Il faut sacrifier une broche (qui supporte la commande ADC, voir le 20M2 au début) pour brancher ce potentiomètre. La broche C.7 semble toute désignée, elle est la dernière, après C.6, nous tournerons sur 14 broches et le test n'est plus utile. 
Les commentaires: Les caractères suivant ";" ou "'" sont des commentaires, expliquant le programme, l'idéal est de commenter chaque ligne. Le grand bénéficiaire est encore l'auteur lui même. Le texte est de couleur différente, en vert ici.
Les commentaires et la désignation de "symbol" n'occupent pas de place en mémoire. L'abus ne nuit pas.
Si le µC n'est pas programmé sur site, la broche "serial in " doit être reliée au 0 Volt.

 
Le schéma correspondant

Un peu de hasard

A la longue, le chenillard est un peu lassant, et on connait exactement la suite des évènements. La commande random permet de générer des nombres au hasard, enfin presque.
Cette fonction donne toujours la même suite de nombres si elle est initialisée toujours de la même façon. La suite n'est pas aléatoire , mais "pseudo" aléatoire. La simulation n'est pas très réaliste, elle est meilleure que la réalité, les PC peuvent initialiser les fonctions aléatoires avec la date et l'heure en cours qui est en perpétuelle évolution.
Si on veut améliorer le côté aléatoire de random (ce qui n'est pas toujours utile), l'initialisation peut se faire, avec la variable système time ou avec une boucle que l'on interrompt manuellement.
L'argument de random doit être une variable word, qui peut donner deux variables aléatoires de type byte.
Pour allumer nos leds, il nous faut un nombre compris entre 0 et 15. Pour cela nous utiliserons l'opérateur modulo, "//", qui n'est autre que le reste (r) de la division euclidienne a = bq + r
où a est le dividente, b le diviseur, q le quotient. Le quotient est donné par l'opérateur "/".

La commande "toggle" configure la broche en sortie  et inverse sa valeur

Un exemple pour illustrer celà:
 


Deux fois plus d'animation avec cette variante:
La boucle d'initialisation est supprimée. Vous pouvez vérifier que en simulation sur PC, random fournit des animations différentes à chaque démarrage, 


Le pseudo multitâches

Ces µcontrôleurs ne savent faire qu'une chose à la fois et lorsque le programme arrive sur une commande "pause", il s'arrête, le temps de la pause.
Le pseudo multitaches, présent sur la série M2, offre une solution à ce blocage, en sautant d'une tâche à une autre, assez rapidement pour nous donner l'illusion de les faire en même temps.
En contre partie, la vitesse de l'horloge interne est gérée par le µC, et la commande "setfreq "est rejettée. L'arrêt d'un seul des  programmes arrête tout.
Chaque tâche commence par une étiquette "startx:", de start0 à start7
Les picaxes M2 gèrent jusqu'à 8 tâches (4 seulement pour le 08M2).
Voici un exemple:


 

Trois tâches se partagent les broches et les variables.
start0 modifie la variable binaire flag et allume la led 1.
En fonction de la valeur de flag, start1 allume la led 2 et start 2 allume la led 3.
start1 et start2 donnent deux façons différentes de faire la même chose.

Voir suite page 3
 



Créer un site
Créer un site