Demande d'aide pour animation de LEDS

abalone59

Member
Bonsoir à tous, voila plusieurs mois que j'essaie de créer des animations de leds, apres 15 jours, je parvenais à réaliser un chenillard à base de 4017 et ne555...jusque là j'etais content, je pensais que de la meme maniere, je pourrais créer d'autres effets...

En réalité non, comme vous le savez mieux que moi, j'ai donc parcouru différents forums, jusqu'à en arriver à celui ci, pour utiliser les picaxes

le but etant de reproduire le meme type d'animation que sur cette vidéo: http://www.youtube.com/watch?v=bfQf2Pk9SbI en 12 et 24Volts

Si des personnes sont pretes à m'aider dans ma démarche, ou meme à me proposer une solution technique, je leur en serais tres reconnaissant avec une contre partie....

Merci pour votre réponse
 

PapyJP

Senior Member
Si des personnes sont pretes à m'aider dans ma démarche ...
Bien sûr !
Mais votre vidéo ne nous dit rien sur ce que vous voulez faire !
Soyez plus précis svp.
Exposez clairement le nombre de blocs de LEDs, le nombre de LEDs par bloc, la fréquence de clignotement, l' ordre dans lequel vous souhaitez les faire clignoter, etc
Bref, il nous faut un scénario.
 

MGU

Senior Member
Bonjour,

Je vois que vous avez migré vers le forum Picaxe.

Les animations de cette vidéo sont réalisables avec un picaxe.
Il faut définir un cahier des charges plus précis.
Pour cette vidéo, il faut apparemment une dizaine de sorties pour le cadre, pour l'inscription, une ou deux.
Ensuite, il faut un petit sous programme pour chaque animation.
Un test sur un poussoir pour sortir de sous programme et passer au suivant etc...
Facile aussi de mixer les animations avec du temps partagé.
Mais c'est à vous de donner vos idées!

Un 20M2 par ex. devrait faire l'affaire.

MM
 

fuse

Senior Member
Bonjour,
Pour obtenir de nombreuses sorties, je préconise l'utilisation de circuits i2c comme le PCF8574. Celui ci dispose de 8 sorties logiques. Il est possible de raccorder 8 circuits PCF en parallèle... Cela permet donc de disposer de 8 x 8 = 64 leds...
Si c'est trop juste l'utilisation des PCF8574A permet encore de rajouter 8 autres circuits (l'adresse i2c est différente).
Ces circuits i2c peuvent être commandés par des commandes simples avec un picaxe disposant d'une sortie i2c (par exemple le 08M2). Le seul problème sera l'impossibilité de régler la luminosité, l'allumage des leds s'effectuant en tout ou rien...
Le programme picaxe se chargera de l'animation et seuel la taille du programme limitera le nombre d'effets.
 
Last edited:

PieM

Senior Member
Bonjour et bienvenue,

Afin de bénéficier de la variation de luminosité une solution pourrait être celle ci:

en supposant l'entourage animé par 8 segments de N leds, 8 sorties d'un Picaxe connectées à 8 entrées de portes AND, toutes les autres entrées étant reliées à une sortie PWM du Picaxe.

les sorties des portes AND reliées à un buffer type ULN2803 dont chaque sortie serait reliée à un réseau de X leds en série, avec Y branches en parallèles. X fois Y représentant les N leds d'un groupe.
Pour le texte, un Mosfet N attaqué par une seconde sortie pwm commanderait également Z branches de T leds en série .
Les variations de luminosité seraient réglables pour le texte indépendamment du pourtour à tout instant.

Je ne sais si c'est clair; sinon, je prendrais éventuellement le temps de faire un petit schéma de principe
 

MGU

Senior Member
Pour animer un peu, en voilà déjà 2, à simuler sur PE

Code:
#picaxe 20M2

symbol  vitesse=	w13
symbol  suite = bit0

vitesse= 100

setint %00000010,%00000010 'sur C.1

Anim1:
	suite =0	
	Do
	high B.0
	pause vitesse
	low B.0
	high B.1
	pause vitesse
	low B.1
	high B.2
	pause vitesse
	low B.2
	high B.3
	pause vitesse
	low B.3
	high B.4
	pause vitesse
	low B.4
	high B.5
	pause vitesse
	low B.5
	high B.6
	pause vitesse
	low B.6
	high B.7
	pause vitesse
	low B.7
	high C.2
	pause vitesse
	low C.2
	high C.3
	pause vitesse
	low C.3
	if suite=1 then exit
	
	loop
Anim2:
	suite=0
	Do
	high B.0:high C.3
	pause vitesse
	low B.0:low C.3
	high B.1:high C.2
	pause vitesse
	low B.1:low C.2
	high B.2:high B.7
	pause vitesse
	low B.2:low B.7
	high B.3:high B.6
	pause vitesse
	low B.3:low B.6
	high B.4:high B.5
	pause vitesse
	low B.4:low B.5	
	if suite=1 then exit
	loop
Anim3:	
	
	goto Anim1
	
	
interrupt:
	suite =1
	
	setint %00000010,%00000010 'sur C.1
	return

MM
 

westaust55

Moderator
Certains autres IC prendre en compte est :

MCP23017 - expandeur de IO i2c fournissant 16 broches d'e/s dans deux ports de 8 bits qui peuvent conduire directement de LED si actuel n'est pas trop grand.

SAA1064 - i2c 4 digits 7 segments LED pilote qui peut être utilisé pour contrôler les 23 LEDs et fournit un niveau de contrôle de la luminosité.

MAX7219 - SPI interface 8 digits 7 segments LED pilote pouvant piloter avec 16 niveaux de réglage de la luminosité des 64 LED
 

PapyJP

Senior Member
En amont de tous les composants proposés ci-dessous, il pourrait être intéressant d' utiliser un ou plusieurs registres à décalage montés en série pour enchaîner les séquences.

Un ou plusieurs CD4094 ( ou 74Hc595 ) avec " STROBE " validé en permanence ne nécessitent que deux sorties d' un 08M2 ( DATA et CLOCK ). Voir les réponses au post d' Electric5 du 8/12/2012
Eventuellement quelques portes OR/NOR en plus (si nous connaissions le scénario qu' imagine Abalone59 ... !)
 

BESQUEUT

Senior Member
si nous connaissions le scénario qu' imagine Abalone59 ... !)
Oui : il faudrait effectivement que ce cher Abalone59 nous en dise plus si il souhaite réellement obtenir de l'aide.
Personellement, je n'ai pas accès à youtube, donc aucune idée de ce qui est démontré...
 

PieM

Senior Member
Oui : il faudrait effectivement que ce cher Abalone59 nous en dise plus si il souhaite réellement obtenir de l'aide.
ça devient de plus en plus fréquent les posteurs qui demandent un coup de main, puis qui ne répondent jamais aux questions, et qu'on ne voit finalement plus !
C'est hélas classique dans tous les forums, donc il est urgent de ne pas cogiter dans le vide, même si c'est bon pour les neurones :rolleyes:
 

PapyJP

Senior Member
@ PIEM
Mille fois d' accord !
C' est très frustrant pour nous qui nous donnons la peine de répondre.
La plus élémentaire courtoisie est inconnue de ces posteurs.
Faudra-t-il créer une liste " d' indésirables " pour bloquer leurs posts ?

il est urgent de ne pas cogiter dans le vide, même si c'est bon pour les neurones
Sûr !!!!!!!!!!!!
Mais comment ne pas répondre à la première demande ?
 

abalone59

Member
Bonsoir à tous,

désolé de n'avoir pu vous répondre avant, et oui, je n'ai pas pour habitude de demander de l'aide aux gens pour m'enfuir comme un voleur!!

je dois "simplement" faire face à des problemes de santé tres contraignants...

Je tiens à tous vous remercier pour votre participation, j'ai été tres surpris de voir qu'il y avait deja 2 pages de réponses à ma question

Aussi, je vous précise que j'ai eu par le passé une petite formation en electronique ( fonction ET-OU etc etc...)mais j'ai malheureusement tout perdu faute de pratique, j'ai aussi fais un peu de programmation en Visual basic mais a part le IF THEN ELSE et autre... j'ai plus aucun souvenir,

J'ai une bonne capacité à comprendre le fonctionnement de systeme, et je lis tres bien les schémas electriques

Je souhaite avant tout une solution la moins couteuse possible mais aussi si possible peu encombrante, pour entrer dans un caisson de 13mm d'epaisseur, les autres dimensions n'etant pas restreintes,

Je souhaiterais aussi comprendre la solution technique pour eventuellement la faire evoluer par le futur

Je vais essayer de vous en dire plus: le premier projet est composé de 98 LEDS ( nombre ajusté de maniere à obtenir des séries de leds equivalentes, par exemple pour les leds oranges, je fais des séries de 13 leds en 24Volts, je dois alors dissimuler des leds pour faire 13*8=104Leds) mais j'aimerais qu'il puisse par la suite etre adapté à un nombre de leds différents, j'ai cru comprendre que l'ideal resterait de se servir des sorties du picaxe pour récupérer le signal de sortie, et obtenir la puissance via un transistor...(ahhhh le transistor, mon grand ennemi de l'epoque, jamais je n'ai su le comprend..BCE,BEC, NPN PNP...dur dur ces souvenirs); ainsi par la suite, je pourrais obtenir par exemple, l'affichage d'un prénom, lettre par lettre...

Aussi, pour ce qui est de créer les différents sous programmes, je pourrais les créer petit a petit, si deja je pouvais obtenir rien qu'un exemple de chenillard, ca serait pas mal,

De meme, j'ai cru comprendre qu'on peut utiliser un logiciel pour programmer/simuler l'animation, pouvez vous m'en dire plus sur le logiciel a utiliser? eventuellement comment se le procurer

Bref, vous aurez compris que je suis débutant et qu'il faut donc me donner les grands axes pour pouvoir avancer progressivement

Merci à vous, je reste désormais à votre disposition pour davantage de réponse à vos questions, qui repondront, j'en suis sur, à mon probleme
 

abalone59

Member
Bien sûr !
Mais votre vidéo ne nous dit rien sur ce que vous voulez faire !
Soyez plus précis svp.
Exposez clairement le nombre de blocs de LEDs, le nombre de LEDs par bloc, la fréquence de clignotement, l' ordre dans lequel vous souhaitez les faire clignoter, etc
Bref, il nous faut un scénario.
Bonsoir,

merci pour votre aide,

Je dois animer 92 LEDS, le nombre de blocs de leds dependra de la couleur des leds et de la tension, puisque je fais des séries de 4 leds blanches en 12 volts et des series de 9 leds blanches en 24volts par exemple..je voudrais que visuellement on est des blocs

pour la fréquence, je suis désolé , j'ai pas idée de ce que représente les differentes vitesses de fréquence

voici par exemple une possibilité d'animation:

soit les blocs de 1 a 8...

1-2-3-4-5-6-7-8
8-7-6-5-4-3-2-1
1,5-2,6-3,7-4,8 ( 1,5 signifie allumage simultané du bloc 1 et 5) et le "-" signifie l'extinction du bloc précedent pour passer a l'allumage du bloc suivant
4,8-3,7-2,6-1,5
2,3-1,4-8,5-7,6
7,6-8,5-1,4-2,3

etc...

Merci de votre aide!
 

abalone59

Member
Bonsoir,

oui je suis venu sur ce forum sous recommandation d'une personne sur un autre forum, je ne regrette pas, l'accueil ici est tres appréciable!

je ne vois aucun inconvénient à séparer le controle de l'inscription et celui du cadre, car dans la réalité, il est tres peu probable que j'utilise ces animations à la fois pour l'entourage et pour l'inscription

"Facile aussi de mixer les animations avec du temps partagé." ==> cela signifie t il qu'on pourrait envisager un mode "automatique" qui ferait défiler les sous programmes les uns apres les autres?

Merci de votre aide!
 

abalone59

Member
Bonsoir,

merci pour votre participation,

j'avoue avoir du mal à tout comprendre, je comprend le principe de la multiplication des sorties, mais je dois gérer davantage de leds encore, notamment 92 leds pour un entourage, mais je pourrais arriver a 200 leds pour une inscription, avec un nombre de leds différents pour chaque lettre de l'inscription..

Actuellement pour régler la luminosité des leds, j'utilise de simples potentiometres piochés au hasard dans un stock composé de chaque valeur vendu par mon revendeur de materiel electronique... il est pour moi tres important de conserver ce reglage de luminosité pour une lecture correcte de l'inscription sans eblouir ou avoir un effet "brouillard" créé par les leds
 

abalone59

Member
Bonjour et bienvenue,

Afin de bénéficier de la variation de luminosité une solution pourrait être celle ci:

en supposant l'entourage animé par 8 segments de N leds, 8 sorties d'un Picaxe connectées à 8 entrées de portes AND, toutes les autres entrées étant reliées à une sortie PWM du Picaxe.

les sorties des portes AND reliées à un buffer type ULN2803 dont chaque sortie serait reliée à un réseau de X leds en série, avec Y branches en parallèles. X fois Y représentant les N leds d'un groupe.
Pour le texte, un Mosfet N attaqué par une seconde sortie pwm commanderait également Z branches de T leds en série .
Les variations de luminosité seraient réglables pour le texte indépendamment du pourtour à tout instant.

Je ne sais si c'est clair; sinon, je prendrais éventuellement le temps de faire un petit schéma de principe
Bonsoir et merci à vous!

En effet, je pense que de partir sur 8 segments ca serait pas mal, je comprends bien le fait que le Picaxe enverra à tour de role suivant les sous programmes, la commande à un autre element, ensuite, les portes AND, je me souviens de leur principe de fonctionnement mais je comprend pas comment elles sont utiles dans le cas présent, désolé, ensuite la sortie PWM du Picaxe, j'ai aucune idée de ce que c'est, le PICAXE est quelque chose de completement nouveau pour moi

Pour le principe, je pense que ca correspond parfaitement à ce que je recherche, mais la transposition en langage electronique reste difficile pour moi

la possibilité de varier la luminosité indépendamment pour le contour et l'inscription serait réelle interessante!!

Merci pour votre contribution, je pense qu'il s'agit là de la bonne direction!
 

abalone59

Member
Pour animer un peu, en voilà déjà 2, à simuler sur PE

Code:
#picaxe 20M2

symbol  vitesse=	w13
symbol  suite = bit0

vitesse= 100

setint %00000010,%00000010 'sur C.1

Anim1:
	suite =0	
	Do
	high B.0
	pause vitesse
	low B.0
	high B.1
	pause vitesse
	low B.1
	high B.2
	pause vitesse
	low B.2
	high B.3
	pause vitesse
	low B.3
	high B.4
	pause vitesse
	low B.4
	high B.5
	pause vitesse
	low B.5
	high B.6
	pause vitesse
	low B.6
	high B.7
	pause vitesse
	low B.7
	high C.2
	pause vitesse
	low C.2
	high C.3
	pause vitesse
	low C.3
	if suite=1 then exit
	
	loop
Anim2:
	suite=0
	Do
	high B.0:high C.3
	pause vitesse
	low B.0:low C.3
	high B.1:high C.2
	pause vitesse
	low B.1:low C.2
	high B.2:high B.7
	pause vitesse
	low B.2:low B.7
	high B.3:high B.6
	pause vitesse
	low B.3:low B.6
	high B.4:high B.5
	pause vitesse
	low B.4:low B.5	
	if suite=1 then exit
	loop
Anim3:	
	
	goto Anim1
	
	
interrupt:
	suite =1
	
	setint %00000010,%00000010 'sur C.1
	return

MM
Bonsoir, merci pour votre participation,

Meme si certains elements m'echappent, je comprend qu'on affecte une sortie a chaque bloc de leds,

je comprends aussi le passage a l'etat haut puis bas pour allumer et eteindre les blocs de leds, ainsi que le principe de changement d'animation via une action et à défaut une boucle si aucune action

Aussi, vous parlez de simuler sur PE, je suppose qu'il s'agit d'un logiciel, quel est son nom exact?

Merci à vous!
 

abalone59

Member
Bonsoir et merci pour votre aide,

malheureusement je maitrise que trop peu ces elements pour comprendre ce que vous me proposez, je prend note de la possibilité de controler la luminosité mais limité a 64 leds,

peut on alors mettre un "element" a la suite d'un autre pour créer un effet de "cascade" qui sur la derniere sortie du premier "element" enverrait sur l'entrée d'un deuxieme "element" ?
 

abalone59

Member
En amont de tous les composants proposés ci-dessous, il pourrait être intéressant d' utiliser un ou plusieurs registres à décalage montés en série pour enchaîner les séquences.

Un ou plusieurs CD4094 ( ou 74Hc595 ) avec " STROBE " validé en permanence ne nécessitent que deux sorties d' un 08M2 ( DATA et CLOCK ). Voir les réponses au post d' Electric5 du 8/12/2012
Eventuellement quelques portes OR/NOR en plus (si nous connaissions le scénario qu' imagine Abalone59 ... !)

Bonsoir,

en effet, je pensais utiliser un principe d'elements montés en série, un peu comme un chenillard pour controler 20 leds et les allumer les unes a la suite des autres avec plusieurs 4017 branchés en série.. mais est ce vraiment le mieux adapté vu le nombre de leds?
 

abalone59

Member
ça devient de plus en plus fréquent les posteurs qui demandent un coup de main, puis qui ne répondent jamais aux questions, et qu'on ne voit finalement plus !
C'est hélas classique dans tous les forums, donc il est urgent de ne pas cogiter dans le vide, même si c'est bon pour les neurones :rolleyes:
@ PIEM
Mille fois d' accord !
C' est très frustrant pour nous qui nous donnons la peine de répondre.
La plus élémentaire courtoisie est inconnue de ces posteurs.
Faudra-t-il créer une liste " d' indésirables " pour bloquer leurs posts ?


Sûr !!!!!!!!!!!!
Mais comment ne pas répondre à la première demande ?
Il me semble que le post #2 était suffisant.
En l'absence de suivi de la part du requérant, les autres posts ne sont là que pour l'entretien des neurones.
Je comprends votre déception d'accorder de votre temps pour venir en aider, et de rester sans réponse, je suis moi meme confronter à ce genre de probleme dans d'autres domaines; malheureusement pour moi, j'aurais préféré vous répondre avant mais la santé en veut autrement...

Merci de votre compréhension
 

abalone59

Member
J'ai téléchargé le logiciel, super de pouvoir vérifier son programme via la petite interface!

par contre, je ne suis pas parvenu à basculer sur le deuxieme sous programme??

Merci en tout cas à tous pour votre aide, je sens que nous allons y arriver!
 
Last edited:

MGU

Senior Member
J'ai téléchargé le logiciel, super de pouvoir vérifier son programme via la petite interface!

par contre, je ne suis pas parvenu à basculer sur le deuxieme sous programme??

Merci en tout cas à tous pour votre aide, je sens que nous allons y arriver!
Bonjour,

Si il s'agit du programme fournit en#7, c'est simple, il faut cliquer deux fois sur C.1 pour simuler l'appui sur un poussoir.
L'interruption mémorise l'info qui est prise en compte à la fin de chaque sous programme pour sortir de la boucle et passer au programme suivant
Il y a deux exemples, on peut ajouter d'autres.

MM
 

BESQUEUT

Senior Member
Tout d'abord, je vous souhaite au nom des divers participants du forum une bonne année et surtout une santé aussi bonne que possible.
Pour le coup, on ne manque pas de renseignements !
je dois gérer davantage de leds encore, notamment 92 leds pour un entourage, mais je pourrais arriver a 200 leds pour une inscription, avec un nombre de leds différents pour chaque lettre de l'inscription..
Attention : il y a dans les posts précédents différentes approches :
1) approche par blocs (LEDS pilotées en séries avec une tension de 12 ou 24 V)
2) approche individuelle (Chaque LED peut être allumée ou éteinte individuellement)
3) approche mixte (Chaque LED est pilotée individuellement, mais la tension de chaque bloc peut en plus être réglée individuellement.)

Ces différentes approches correspondent à des montages électroniques bien différents.

Les animations décrites en #15 sont réalisables avec un montage de type 1.
Par contre, l'écriture d'un texte nécessite une commande individualisée, donc une approche de type 2 ou 3.
Le terme "inscription" est assez flou. S'agit-il de chiffres ou de lettres ?
Pour des chiffres, on utilise courement une matrice à 7 segments (chaque segment pouvant être constitué d'un bloc de LEDS)
On peut aussi dessiner certaines lettres dans cette matrice à 7 segments.
Pour les panneaux d'affichage comme on voit dans les vitrines, on utilise une matrice carrée. Chaque lettre nécessite 8*6=48 LEDs.
Donc, avec 96 LEDs, vous pourrez afficher au plus 2 lettres.

Une fois la partie "électronique" définie, vous pourrez envisager le pilotage.
Avec une approche de type 1, le nombre de sorties est très limité et un Picaxe fait largement l'affaire.
Comme chaque bloc est en série, le courant est faible, mais la tension est élevée.
En 12V, un ULN2803 est adapté, (sauf pour des LEDS de forte puissance, mais j'ai cru comprendre que votre budget est limité)

Pour une approche de type 2, on peut piloter directement des LEDs faible consommation depuis le Picaxe (jusqu'à 3 en série maxi) ou utiliser des ULN2803 qui ne sont pas trop couteux.
Pour avoir suffisement de sorties, et compte tenu du faible coût d'un Picaxe, on peut envisager plusieurs Picaxes esclaves pilotés par un maitre.

Sinon, diverses approches électroniques permettent de créer un grand nombre de sorties pilotées par un seul processeur.

Je ne suis pas trop pour les solutions I2C en raison du coût des composants et de la difficulté de régler l'intensité lumineuse. La vitesse de rafraichissement est limitée par celle du BUS I2C.
Les circuits spécialisés pour piloter des affichages 7 segments peuvents être détournés pour un pilotage matriciel.
Le moins couteux est d'utiliser des convertisseurs série parallèle qui permettent sur une seule sortie du Picaxe de piloter 8 ou 16 leds.

C'est cette dernière solution que j'utiliserais dans votre cas :
12 sorties d'un picaxe pilotant chacune un convertisseur série parallèle de 8 bits (chaque bit est associé à une LED)
Ce type de circuit permet de réaliser facilement des défilements comme évoqués plus haut.
Ils permettent aussi un contrôle individuel de chaque LED.
Et en jouant sur l'entrée Enable via un PWM, on doit pouvoir régler l'intensité lumineuse.
Cordialement,
 
Last edited:

abalone59

Member
Tout d'abord, je vous souhaite au nom des divers participants du forum une bonne année et surtout une santé aussi bonne que possible.
Pour le coup, on ne manque pas de renseignements !

Attention : il y a cdans les posts précédents différentes approches :
1) approche par blocs (LEDS pilotées en séries avec une tension de 12 ou 24 V)
2) approche individuelle (Chaque LED peut être allumée ou éteinte individuellement)
3) approche mixte (Chaque LED est pilotée individuellement, mais la tension de chaque bloc peut en plus être réglée individuellement.)

Ces différentes approches correspondent à des montages électroniques bien différents.

Les animations décrites en #15 sont réalisables avec un montage de type 1.
Par contre, l'écriture d'un texte nécessite une commande individualisée, donc une approche de type 2 ou 3.
Le terme "inscription" est assez flou. S'agit-il de chiffres ou de lettres ?
Pour des chiffres, on utilise courement une matrice à 7 segments (chaque segment pouvant être constitué d'un bloc de LEDS)
On peut aussi dessiner certaines lettres dans cette matrice à 7 segments.
Pour les panneaux d'affichage comme on voit dans les vitrines, on utilise une matrice carrée. Chaque lettre nécessite 8*6=48 LEDs.
Donc, avec 96 LEDs, vous pourrez afficher au plus 2 lettres.

Une fois la partie "électronique" définie, vous pourrez envisager le pilotage.
Avec une approche de type 1, le nombre de sorties est très limité et un Picaxe fait largement l'affaire.
Comme chaque bloc est en série, le courant est faible, mais la tension est élevée.
En 12V, un ULN2803 est adapté, (sauf pour des LEDS de forte puissance, mais j'ai cru comprendre que votre budget est limité)

Bonjour, en effet, meilleurs voeux à vous tous et surtout la santé, au combien elle est précieuse, on a beau tout à voir, si on n'a pas la santé....

Le but est donc de pouvoir gérer des leds (par bloc plutot qu'individuellement) et faire varier leur luminosité, en 12Volts et 24Volts ( pas de maniere simultanée bien sur) , il ne s'agit pas de panneaux d'affichages, mais simplement de leds, un oeil sur la photo du dessous permettra de mieux recentrer le projet, il est vrai qu'ayant en tete le projet, je n'ai pas forcément donné tous les elements pour vous puissiez me comprendre et m'aider

Dans un premier temps, pour animer le contour de la plaque, comme sur cette photo : entourage led.jpg , je précise que le contour fait toujours le meme nombre de leds apparentes, mais en réalité, il y a des leds dissimulés pour faire des séries equivalentes, suivant la couleur et la tension d'alimentation, le nombre de leds differe, c'est pour cela que j'avais entendu parlé de commande de puissance géré par des transistors commandés par les sorties du picaxe??? mais alors qu'en est il de la gestion de la luminosité???

Pour ceux qui souhaitent en savoir un peu plus sur ce que je réalise, n'hesitez pas à me demander par message privé, ne sachant pas si je peux inclure une adresse de site ou non, bien que vous ayez un apercu ci-dessus

Je reprécise qu'en disant que mon budget est limité, c'est tout simplement que j'ai trouvé des modules pret à l'emploi, notamment sur ebay, mais a pres de 45€ piece...


Comme vous le remarquerez surement, chaque plaque est différente, et le nombre de leds par lettre varie d'une lettre à l'autre, mais si vous l'acceptez, j'aimerais gérer l'animation des lettres dans un second temps, je voudrais vraiment procéder par étapes pour ne pas en louper!!


Aussi, je pense privilégier une réalisation sans circuit imprimé (pcb si mes souvenirs sont bons) à moins que je puisse dans un second temps trouver une personne pouvant me les fournir avec contre partie financiere bien evidemment ( ce sujet fera de nouveau jour en temps voulu...)

je me tiens à votre disposition pour toute précision qui permettra de faire avancer le schmilblick :D

Merci à vous!
 

MGU

Senior Member
Il est vrai que l'on peur s'égarer assez vite.

Le nombre de série de leds détermine le nombre de pattes nécessaires donc le type de picaxe.

Le nombre de leds en série donne la tension d'alim et l’arrangement série/parallèle des leds;

Sur la vidéo, il y a un cadre de 10 séries de leds ( 4 en haut, 4 en bas, et une de chaque côté).

L'inscription d'une seul série mais avec variation de luminosité.

Est-ce bien ce que vous voulez?

Ce que je voulais dire par temps partagé, c'est que le cadre et l'inscription peuvent être gérés indépendamment par des programmes en temps partagé. Mais il faut voir.

Pour revenir sur le programme en #7, l'appui sur le poussoir arrête le chenillard. J'ai déplacé le reset de l'interruption, le visuel est meilleur, mais est bien orthodoxe?

Code:
#picaxe 20M2

symbol  vitesse=	w13
symbol  suite = bit0

vitesse= 100

setint %00000010,%00000010 'sur C.1

Anim1:
	suite =0	
	Do
	high B.0
	pause vitesse
	low B.0
	high B.1
	pause vitesse
	low B.1
	high B.2
	pause vitesse
	low B.2
	high B.3
	pause vitesse
	low B.3
	high B.4
	pause vitesse
	low B.4
	high B.5
	pause vitesse
	low B.5
	high B.6
	pause vitesse
	low B.6
	high B.7
	pause vitesse
	low B.7
	high C.2
	pause vitesse
	low C.2
	high C.3
	pause vitesse
	low C.3
	if suite=1 then
		setint %00000010,%00000010 'sur C.1
	 	exit
	endif
	
	loop
Anim2:
	suite=0
	Do
	high B.0:high C.3
	pause vitesse
	low B.0:low C.3
	high B.1:high C.2
	pause vitesse
	low B.1:low C.2
	high B.2:high B.7
	pause vitesse
	low B.2:low B.7
	high B.3:high B.6
	pause vitesse
	low B.3:low B.6
	high B.4:high B.5
	pause vitesse
	low B.4:low B.5	
	if suite=1 then
		setint %00000010,%00000010 'sur C.1
	 	exit
	endif
	loop
Anim3:	
	
	goto Anim1
	
	
interrupt:

	suite =1

	return

MM
 

abalone59

Member
@ MGU: merci pour ce programme,

si je comprends bien, C2 et C3 sont des sorties au meme titre que B0;B7???

je sais pas si mon raisonnement est bon, mais de mon coté, je pars de la tension d'utilisation de la plaque, pour définir mon nombre de leds et de séries de leds, apparement votre approche se fait dans l'autre sens??

Pour le principe recherché pour animer l'entourage, il colle completement à la simulation de votre programme! reste à savoir si on peut régler la luminosité ( une seule luminosité commune pour toutes les leds) soit au moyen du picaxe, soit au moyen par exemple d'un potentiometre?

pour l'instant, je ne souhaite pas aborder la gestion de l'animation des leds de l'inscription (sachant que le procédé sera similaire, sauf qu'on cherchera à commander des séries de leds constituant un caractere ) mais je n'exclus pas d'y revenir par la suite!

Merci pour votre aide!

Edit:

Voici quelques petites animations que je viens de "créer", désolé pour le copier/coller je ne sais pas comment insérer le "Code":

#picaxe 20M2

symbol vitesse= w13
symbol suite = bit0

vitesse= 100

setint %00000010,%00000010 'sur C.1

Anim1:
suite =0
Do
high B.1
pause vitesse
low B.1
high B.2
pause vitesse
low B.2
high B.3
pause vitesse
low B.3
high B.4
pause vitesse
low B.4
high B.5
pause vitesse
low B.5
high B.6
pause vitesse
low B.6
high B.7
pause vitesse
low B.7
high B.0
pause vitesse
low B.0
if suite=1 then
setint %00000010,%00000010 'sur C.1
exit
endif

loop
Anim2:
suite=0
Do
high B.0:high B.7
pause vitesse
low B.0:low B.7
high B.1:high B.6
pause vitesse
low B.1:low B.6
high B.2:high B.5
pause vitesse
low B.2:low B.5
high B.3:high B.4
pause vitesse
low B.3:low B.4
high B.2:high B.5
pause vitesse
low B.2:low B.5
high B.1:high B.6
pause vitesse
low B.1:low B.6
high B.0:high B.7
pause vitesse
low B.0:low B.7
if suite=1 then
setint %00000010,%00000010 'sur C.1
exit
endif
loop
Anim3:
suite =0
Do
high B.0
pause vitesse
low B.0
high B.1
pause vitesse
low B.1
high B.2
pause vitesse
low B.2
high B.3
pause vitesse
low B.3
high B.4
pause vitesse
low B.4
high B.5
pause vitesse
low B.5
high B.6
pause vitesse
low B.6
high B.7
pause vitesse
low B.7
high C.2
pause vitesse
low C.2
high C.3
pause vitesse
low C.3

if suite=1 then
setint %00000010,%00000010 'sur C.1
exit
endif

loop
Anim4:
suite =0
Do
high B.1
pause vitesse
low B.1
high B.2
pause vitesse
low B.2
high B.3
pause vitesse
low B.3
high B.4
pause vitesse
low B.4
high B.5
pause vitesse
low B.5
high B.6
pause vitesse
low B.6
high B.7
pause vitesse
low B.7
high B.0
pause vitesse
low B.0
high B.7
pause vitesse
low B.7
high B.6
pause vitesse
low B.6
high B.5
pause vitesse
low B.5
high B.4
pause vitesse
low B.4
high B.3
pause vitesse
low B.3
high B.2
pause vitesse
low B.2
high B.1
pause vitesse
low B.1
if suite=1 then
setint %00000010,%00000010 'sur C.1
exit
endif

loop
Anim5:
suite =0
Do
high B.1:high B.5
pause vitesse
low B.1:high B.5
high B.2:high B.6
pause vitesse
low B.2:high B.6
high B.3:high B.7
pause vitesse
low B.3:high B.7
high B.4:high B.0
pause vitesse
low B.4:high B.0

if suite=1 then
setint %00000010,%00000010 'sur C.1
exit
endif

loop
Anim6:
suite =0
Do
high B.4:high B.0
pause vitesse
low B.4:high B.0
high B.3:high B.7
pause vitesse
low B.3:high B.7
high B.2:high B.6
pause vitesse
low B.2:high B.6
high B.1:high B.5
pause vitesse
low B.1:high B.5
if suite=1 then
setint %00000010,%00000010 'sur C.1
exit
endif

loop
Anim7:

goto Anim1



interrupt:

suite =1

return

Par contre, je ne sais comment faire pour passer de l'anim 2 à 3 et suivante, je suppose qu'il faut actionner c1 pour incrémenter la valeur d'une donnée, et qu'il faut associer cette valeur de donnée à un programme
Par exemple: Anim 1 = 0 ; anim 2 = 1; anim 3= 2; anim X=X+1 ??

Merci de votre aide!
 
Last edited:

abalone59

Member
Nouveau message pour éviter de rendre le précédent message plus illisible, qu'il ne l'est deja,

j'ai trouvé la solution pour affecter un "numéro" a chaque sous programme, via la variable "suite", par contre, il faut actionner C1 en niveau haut et niveau bas pour changer de sous programme?
 

MGU

Senior Member
j'ai trouvé la solution pour affecter un "numéro" a chaque sous programme, via la variable "suite", par contre, il faut actionner C1 en niveau haut et niveau bas pour changer de sous programme?
Oui, chaque sous programme est une boucle pour une animation.
Pour sortir de cette boucle, il faut suite =1 dans le test.
C.1 est un poussoir, il déclenche une interruption qui renvoie à tout moment dans le sous programme interrupt: où cette variable passe à 1
Le changement de sous programme se fait toujours en fin de boucle si C.1 a été appuyé.

L'interruption est réactivée dans le "if suite =1". Normalement, cette réactivation se place dans le sous programme d'interruption.

Pour la variation de luminosité, il faut moduler l'alimentation (des leds uniquement) en PWM. Le plus simple serait un circuit dédié uniquement à cette fonction par un 08M2 (ex.).
Ou par une patte PMW libre sur le picaxe 20M2 dans un autre programme en multitâches. Plusieurs solutions possibles.

Pour le code, il faut passer en "mode avancé", et cliquer sur #

MM
 

abalone59

Member
Voila mes sous programmes sont crés ( mes sequences d'animation en fait), par contre, je rencontre un soucis dans le passage d'une sequence à une autre...

je maitrise mal l'element qui permet le passage a la sequence suivante, je pensais qu'il s'agit de la variable "suite" mais en fait, il semblerait qu'elle est que deux etat, niveau 0 et 1..

j'attends votre aide précieuse! Merci

Aussi, si vous pouvez me dire comment mettre son "code" de maniere défilante, merci
 

PieM

Senior Member
Bonjour,

Concernant votre programme:

pour l'affichage, passez en mode "go advanced" et entourez votre progamme par les balises #

pour faire un chenillard par activation des sorties les unes après les autres, le programme peut être très simplifé de cette façon:

Considérer qu'à un port de sortie correspond une variable byte (1 octet) il suffit de multiplier cette variable par 2 pour décaler les bits vers la gauche.
donc si au départ le port est représent par %00000001, le multiplier par deux va donner %00000010

par exemple ce petit programme que vous pouvez simuler :

Code:
#picaxe 18M2
dirsB = %11111111   'défini le port B en sortie

do
b1= %00000001   'initialise b1
for b2 = 0 to 7
	pinsB= b1 'recopie la valeur de b1 comme état des sorties du port B
	b1=b1*2
	'[COLOR="#FF0000"](pwm xxxxxxxx)[/COLOR]
	pause 500
next
loop
Ici, il ne fait qu'allumer une seule led l'une après l'autre mais toute les combinaisons sont possibles. Je vous indiquerais comment faire une trame cyclique très simplement.

Concernant mon post #6, voici un petit schéma de principe qui explicite comment commander des groupes de leds avec une commande de luminosité.
La commande PWM (ou MLI en français) permet d'alimenter un récepteur par découpage de la tension d'alimentation en générant un signal carré de fréquence variable, mais surtout de rapport cyclique contrôlé par une variable du picaxe.
Donc ici, le signal pwm est appliqué à l'une des entrées des portes AND. L'entrée de l'ampli ULN2803, donc sa sortie, est ainsi hachée par le PWM.
Pour chaque groupe de led, vous pouvez donc définir une luminosité indépendamment des autres. (ma ligne pwm XXXXXXX dans le programme)


2013-01-18 000.jpg
 

abalone59

Member
Code:
#picaxe 20M2

symbol  vitesse=	w13
symbol  suite = bit0

vitesse= 100

setint %00000010,%00000010 'sur C.1

Anim1: 'chenillard simple aller'
	suite =0	
	Do
	high B.0
	pause vitesse
	low B.0
	high B.1
	pause vitesse
	low B.1
	high B.2
	pause vitesse
	low B.2
	high B.3
	pause vitesse
	low B.3
	high B.4
	pause vitesse
	low B.4
	high B.5
	pause vitesse
	low B.5
	high B.6
	pause vitesse
	low B.6
	high B.7
	pause vitesse
	low B.7
	if suite=1 then
		setint %00000010,%00000010 'sur C.1
	 	exit
	endif
	
	loop
	
	
Anim2: 'chenillard simple retour'
	suite =0	
	Do
	high B.7
	pause vitesse
	low B.7
	high B.6
	pause vitesse
	low B.6
	high B.5
	pause vitesse
	low B.5
	high B.4
	pause vitesse
	low B.4
	high B.3
	pause vitesse
	low B.3
	high B.2
	pause vitesse
	low B.2
	high B.1
	pause vitesse
	low B.1
	high B.0
	pause vitesse
	low B.0
	if suite=1 then
		setint %00000010,%00000010 'sur C.1
	 	exit
	endif
	
	loop
	
	
Anim3: 'chenillard simple aller-retour'
	suite =0	
	Do
	high B.0
	pause vitesse
	low B.0
	high B.1
	pause vitesse
	low B.1
	high B.2
	pause vitesse
	low B.2
	high B.3
	pause vitesse
	low B.3
	high B.4
	pause vitesse
	low B.4
	high B.5
	pause vitesse
	low B.5
	high B.6
	pause vitesse
	low B.6
	high B.7
	pause vitesse
	low B.7
	high B.6
	pause vitesse
	low B.6
	high B.5
	pause vitesse
	low B.5
	high B.4
	pause vitesse
	low B.4
	high B.3
	pause vitesse
	low B.3
	high B.2
	pause vitesse
	low B.2
	high B.1
	pause vitesse
	low B.1
	high B.0
	pause vitesse
	low B.0
	if suite=1 then
		setint %00000010,%00000010 'sur C.1
	 	exit
	endif
	
	loop
	
	
Anim4: 'chenillard double aller'
	suite =0	
	Do
	high B.0:high B.4
	pause vitesse
	low B.0:low B.4
	high B.1:high B.5
	pause vitesse
	low B.1:low B.5
	high B.2:high B.6
	pause vitesse
	low B.2:low B.6
	high B.3:high B.7
	pause vitesse
	low B.3:low B.7
	if suite=1 then
		setint %00000010,%00000010 'sur C.1
	 	exit
	endif
	
	loop


Anim5: 'chenillard double retour'
	suite =0	
	Do
	high B.0:high B.4
	pause vitesse
	low B.0:low B.4
	high B.3:high B.7
	pause vitesse
	low B.3:low B.7
	high B.2:high B.6
	pause vitesse
	low B.2:low B.6
	high B.1:high B.5
	pause vitesse
	low B.1:low B.5
	if suite=1 then
		setint %00000010,%00000010 'sur C.1
	 	exit
	endif
	
	loop
	
	
Anim6: 'chenillard double aller-retour'
	suite =0	
	Do
	high B.0:high B.4
	pause vitesse
	low B.0:low B.4
	high B.1:high B.5
	pause vitesse
	low B.1:low B.5
	high B.2:high B.6
	pause vitesse
	low B.2:low B.6
	high B.3:high B.7
	pause vitesse
	low B.3:low B.7
	high B.0:high B.4
	pause vitesse
	low B.0:low B.4
	high B.3:high B.7
	pause vitesse
	low B.3:low B.7
	high B.2:high B.6
	pause vitesse
	low B.2:low B.6
	high B.1:high B.5
	pause vitesse
	low B.1:low B.5	
	if suite=1 then
		setint %00000010,%00000010 'sur C.1
	 	exit
	endif
	
	loop
	
		
Anim7: 'allumage progressif aller'
	suite=0
	Do
	high B.6
	pause vitesse
	high B.5:high B.7
	pause vitesse
	high B.0:high B.4
	pause vitesse
	high B.1:high B.3
	pause vitesse
	high B.2
	pause vitesse
	low B.0:low B.1:low B.2:low B.3:low B.4:low B.5:low B.6:low B.7
	if suite=1 then
		setint %00000010,%00000010 'sur C.1
	 	exit
	endif
	loop
	
	
Anim8: 'allumage progressif retour'
	suite=0
	Do
	high B.2
	pause vitesse
	high B.1:high B.3
	pause vitesse
	high B.0:high B.4
	pause vitesse
	high B.7:high B.5
	pause vitesse
	high B.6
	if suite=1 then
		setint %00000010,%00000010 'sur C.1
	 	exit
	endif
	loop
	
	
Anim9: 'allumage progressif aller-retour haut'
	suite=0
	Do
	high B.6
	pause vitesse
	high B.5:high B.7
	pause vitesse
	high B.0:high B.4
	pause vitesse
	high B.1:high B.3
	pause vitesse
	high B.2
	pause vitesse
	low B.2
	pause vitesse
	low B.1:low B.3
	pause vitesse
	low B.0:low B.4
	pause vitesse
	low B.7:low B.5
	pause vitesse
	low B.6
	if suite=1 then
		setint %00000010,%00000010 'sur C.1
	 	exit
	endif
	loop
	
	
Anim10:'allumage progressif aller-retour bas'
	suite=0
	Do
	high B.2
	pause vitesse
	high B.1:high B.3
	pause vitesse
	high B.0:high B.4
	pause vitesse
	high B.7:high B.5
	pause vitesse
	high B.6
	pause vitesse
	low B.6
	pause vitesse
	low B.7:low B.5
	pause vitesse
	low B.0:low B.4
	pause vitesse
	low B.1:low B.3
	pause vitesse
	low B.2
	if suite=1 then
		setint %00000010,%00000010 'sur C.1
	 	exit
	endif
	loop
	
	
Anim11:'allumage haut extinction bas'
	suite =0	
	Do
	high B.2
	pause vitesse
	high B.1:high B.3
	pause vitesse
	high B.0:high B.4
	pause vitesse
	high B.7:high B.5
	pause vitesse
	high B.6
	pause vitesse
	low B.2
	pause vitesse
	low B.1: low B.3
	pause vitesse
	low B.0:low B.4
	pause vitesse
	low B.7: low B.5
	pause vitesse
	low B.6	
	if suite=1 then
		setint %00000010,%00000010 'sur C.1
	 	exit
	endif
	
	loop
	
	
Anim12:'allumage bas extinction haut'
	suite =0	
	Do
	high B.6
	pause vitesse
	high B.7:high B.5
	pause vitesse
	high B.0:high B.4
	pause vitesse
	high B.1:high B.3
	pause vitesse
	high B.2
	pause vitesse
	low B.6
	pause vitesse
	low B.7: low B.5
	pause vitesse
	low B.0:low B.4
	pause vitesse
	low B.1: low B.3
	pause vitesse
	low B.2	
	if suite=1 then
		setint %00000010,%00000010 'sur C.1
	 	exit
	endif
	
	loop
Anim13:	
	
	goto Anim1

	
	
interrupt:

	suite =1

	return
 
Last edited:

abalone59

Member
ci dessus, ma derniere version de programme

je parviens pas à passer au 3eme sous programme...

Merci pour votre aide

Cordialement
 

MGU

Senior Member
Un modif du programme initial: Le reset de l'interruption risquait d'avoir des ratées en cas d'appui prolongé.
Dans cette modif, un appui court (on/off) sur le poussoir permet de passer d'une animation à la suivant, si le poussoir reste sur on, les animations s'enchainent en boucle.

Pour la variable suite, oui, c'est juste une mémo de la validation (appui poussoir) pour sortir de la boucle

Pour la modulation PWM, j'ai un schéma fonctionnel, je le poste, le temps de le redessiner.

MM

Code:
	#picaxe 20M2

symbol  vitesse=	w13
symbol  suite = bit0

vitesse= 100



Anim1: 'chenillard simple aller'
	suite =0
	setint %00000010,%00000010 'sur C.1	
	Do
	high B.0
	pause vitesse
	low B.0
	high B.1
	pause vitesse
	low B.1
	high B.2
	pause vitesse
	low B.2
	high B.3
	pause vitesse
	low B.3
	high B.4
	pause vitesse
	low B.4
	high B.5
	pause vitesse
	low B.5
	high B.6
	pause vitesse
	low B.6
	high B.7
	pause vitesse
	low B.7
	if suite=1 then	
	 	exit
	endif
	
	loop
	
	
Anim2: 'chenillard simple retour'
	suite =0
	setint %00000010,%00000010 'sur C.1	
	Do
	high B.7
	pause vitesse
	low B.7
	high B.6
	pause vitesse
	low B.6
	high B.5
	pause vitesse
	low B.5
	high B.4
	pause vitesse
	low B.4
	high B.3
	pause vitesse
	low B.3
	high B.2
	pause vitesse
	low B.2
	high B.1
	pause vitesse
	low B.1
	high B.0
	pause vitesse
	low B.0
	if suite=1 then	
	 	exit
	endif
	
	loop
	
	
Anim3: 'chenillard simple aller-retour'
	suite =0
	setint %00000010,%00000010 'sur C.1	
	Do
	high B.0
	pause vitesse
	low B.0
	high B.1
	pause vitesse
	low B.1
	high B.2
	pause vitesse
	low B.2
	high B.3
	pause vitesse
	low B.3
	high B.4
	pause vitesse
	low B.4
	high B.5
	pause vitesse
	low B.5
	high B.6
	pause vitesse
	low B.6
	high B.7
	pause vitesse
	low B.7
	high B.6
	pause vitesse
	low B.6
	high B.5
	pause vitesse
	low B.5
	high B.4
	pause vitesse
	low B.4
	high B.3
	pause vitesse
	low B.3
	high B.2
	pause vitesse
	low B.2
	high B.1
	pause vitesse
	low B.1
	high B.0
	pause vitesse
	low B.0
	if suite=1 then	
	 	exit
	endif
	
	loop
	
	
Anim4: 'chenillard double aller'
	suite =0
	setint %00000010,%00000010 'sur C.1	
	Do
	high B.0:high B.4
	pause vitesse
	low B.0:low B.4
	high B.1:high B.5
	pause vitesse
	low B.1:low B.5
	high B.2:high B.6
	pause vitesse
	low B.2:low B.6
	high B.3:high B.7
	pause vitesse
	low B.3:low B.7
	if suite=1 then	
	 	exit
	endif
	
	loop


Anim5: 'chenillard double retour'
	suite =0
	setint %00000010,%00000010 'sur C.1	
	Do
	high B.0:high B.4
	pause vitesse
	low B.0:low B.4
	high B.3:high B.7
	pause vitesse
	low B.3:low B.7
	high B.2:high B.6
	pause vitesse
	low B.2:low B.6
	high B.1:high B.5
	pause vitesse
	low B.1:low B.5
	if suite=1 then	
	 	exit
	endif
	
	loop
	
	
Anim6: 'chenillard double aller-retour'
	suite =0
	setint %00000010,%00000010 'sur C.1	
	Do
	high B.0:high B.4
	pause vitesse
	low B.0:low B.4
	high B.1:high B.5
	pause vitesse
	low B.1:low B.5
	high B.2:high B.6
	pause vitesse
	low B.2:low B.6
	high B.3:high B.7
	pause vitesse
	low B.3:low B.7
	high B.0:high B.4
	pause vitesse
	low B.0:low B.4
	high B.3:high B.7
	pause vitesse
	low B.3:low B.7
	high B.2:high B.6
	pause vitesse
	low B.2:low B.6
	high B.1:high B.5
	pause vitesse
	low B.1:low B.5	
	if suite=1 then	
	 	exit
	endif
	
	loop
	
		
Anim7: 'allumage progressif aller'
	suite=0
	setint %00000010,%00000010 'sur C.1	
	Do
	high B.6
	pause vitesse
	high B.5:high B.7
	pause vitesse
	high B.0:high B.4
	pause vitesse
	high B.1:high B.3
	pause vitesse
	high B.2
	pause vitesse
	low B.0:low B.1:low B.2:low B.3:low B.4:low B.5:low B.6:low B.7
	if suite=1 then
		 exit
	endif
	loop
	
	
Anim8: 'allumage progressif retour'
	suite=0
	setint %00000010,%00000010 'sur C.1
	Do
	high B.2
	pause vitesse
	high B.1:high B.3
	pause vitesse
	high B.0:high B.4
	pause vitesse
	high B.7:high B.5
	pause vitesse
	high B.6
	if suite=1 then	
	 	exit
	endif
	loop
	
	
Anim9: 'allumage progressif aller-retour haut'
	suite=0
	setint %00000010,%00000010 'sur C.1
	Do
	high B.6
	pause vitesse
	high B.5:high B.7
	pause vitesse
	high B.0:high B.4
	pause vitesse
	high B.1:high B.3
	pause vitesse
	high B.2
	pause vitesse
	low B.2
	pause vitesse
	low B.1:low B.3
	pause vitesse
	low B.0:low B.4
	pause vitesse
	low B.7:low B.5
	pause vitesse
	low B.6
	if suite=1 then	
	 	exit
	endif
	loop
	
	
Anim10:'allumage progressif aller-retour bas'
	suite=0
	setint %00000010,%00000010 'sur C.1
	Do
	high B.2
	pause vitesse
	high B.1:high B.3
	pause vitesse
	high B.0:high B.4
	pause vitesse
	high B.7:high B.5
	pause vitesse
	high B.6
	pause vitesse
	low B.6
	pause vitesse
	low B.7:low B.5
	pause vitesse
	low B.0:low B.4
	pause vitesse
	low B.1:low B.3
	pause vitesse
	low B.2
	if suite=1 then	
	 	exit
	endif
	loop
	
	
Anim11:'allumage haut extinction bas'
	suite =0
	setint %00000010,%00000010 'sur C.1	
	Do
	high B.2
	pause vitesse
	high B.1:high B.3
	pause vitesse
	high B.0:high B.4
	pause vitesse
	high B.7:high B.5
	pause vitesse
	high B.6
	pause vitesse
	low B.2
	pause vitesse
	low B.1: low B.3
	pause vitesse
	low B.0:low B.4
	pause vitesse
	low B.7: low B.5
	pause vitesse
	low B.6	
	if suite=1 then	
	 	exit
	endif
	
	loop
	
	
Anim12:'allumage bas extinction haut'
	suite =0
	setint %00000010,%00000010 'sur C.1	
	Do
	high B.6
	pause vitesse
	high B.7:high B.5
	pause vitesse
	high B.0:high B.4
	pause vitesse
	high B.1:high B.3
	pause vitesse
	high B.2
	pause vitesse
	low B.6
	pause vitesse
	low B.7: low B.5
	pause vitesse
	low B.0:low B.4
	pause vitesse
	low B.1: low B.3
	pause vitesse
	low B.2	
	if suite=1 then		
	 	exit
	endif
	
	loop
Anim13:	
	
	goto Anim1

	
	
interrupt:

	suite =1

	return
 

PieM

Senior Member
La réactivation de l'interruption doit se faire en fin de sous programme interrupt.
d'autre part il est préférable de contrôler le relâchement du BP C.1 pour continuer .

d'où:
Code:
interrupt:
	do while PinC.1 = 1 : loop
	suite =1
	setint %00000010,%00000010 'sur C.1	
return
 

PieM

Senior Member
Une autre remarque également:

Il serait préférable que votre programme comprenne un programme principal qui gère les conséquences de l'appui sur un BP et renvoie vers des sous programmes d'animation par des gosub.
Actuellement si vous voulez modifier l'ordre des animations, il vous faut modifier l'ordre des sous programmes d'animations.
En outre cela éviterai d'avoir des sous programmes avec les mêmes instructions: par exemple l'animation 3 est composée de l'animation 1 suivie de la 2. Donc il suffit de le dire dans le programme principal.

pour mettre toutes les sortie à 0 il suffit d'écrire
pinsB=0
au lieu de
low B.0:low B.1:low B.2:low B.3:low B.4:low B.5:low B.6:low B.7

prenez soin d'écrire un dirsB= %11111111 en début de programme. qui configure tout le port B en sorties

Une autre façon plus visuelle et concise d'écrire vos sorties serait :

pinsB = % 00010001 : pause vitesse
pinsB = % 10001000 : pause vitesse
pinsB = % 01000100 : pause vitesse
pinsB = % 00100010 : pause vitesse


au lieu de :

high B.4:high B.0
pause vitesse
low B.4:high B.0
high B.3:high B.7
pause vitesse
low B.3:high B.7
high B.2:high B.6
pause vitesse
low B.2:high B.6
high B.1:high B.5
pause vitesse
low B.1:high B.5
 

MGU

Senior Member
La réactivation de l'interruption doit se faire en fin de sous programme interrupt.
d'autre part il est préférable de contrôler le relâchement du BP C.1 pour continuer .

d'où:
Code:
interrupt:
	do while PinC.1 = 1 : loop
	suite =1
	setint %00000010,%00000010 'sur C.1	
return
Oui, c'est ce que j'ai signalé dans mes posts précédents, mais j'en suis arrivé là pour plusieurs raisons:

Je n'ai pas bloqué C.1 parce que le chenillard est un mouvement "lent" et qu'en maintenant appuyé, les animations s'enchainent. Mais il faudrait voir ce que cela donne en réalité.
Pour la position du setint, est-il certain qu'il faille la mettre obligatoirement dans la routine d'interruption, pourvu que la réactivation se fasse "quelque part".
La position "orthodoxe" a le défaut de bloquer le chenillard lorsque le poussoir est activé.
La simulation (dernier programme) semble bien fonctionner.

Avez vous testé cette simulation?

La solution PWM que vous proposez est certainement excellente, je propose une alternative en P.J. que j'ai déjà testé.

chenillard.png
 

MGU

Senior Member
Une autre remarque également:

Il serait préférable que votre programme comprenne un programme principal qui gère les conséquences de l'appui sur un BP et renvoie vers des sous programmes d'animation par des gosub.
Actuellement si vous voulez modifier l'ordre des animations, il vous faut modifier l'ordre des sous programmes d'animations.
En outre cela éviterai d'avoir des sous programmes avec les mêmes instructions: par exemple l'animation 3 est composée de l'animation 1 suivie de la 2. Donc il suffit de le dire dans le programme principal.

pour mettre toutes les sortie à 0 il suffit d'écrire
pinsB=0
au lieu de
low B.0:low B.1:low B.2:low B.3:low B.4:low B.5:low B.6:low B.7

prenez soin d'écrire un dirsB= %11111111 en début de programme. qui configure tout le port B en sorties

Une autre façon plus visuelle et concise d'écrire vos sorties serait :

pinsB = % 00010001 : pause vitesse
pinsB = % 10001000 : pause vitesse
pinsB = % 01000100 : pause vitesse
pinsB = % 00100010 : pause vitesse


au lieu de :

high B.4:high B.0
pause vitesse
low B.4:high B.0
high B.3:high B.7
pause vitesse
low B.3:high B.7
high B.2:high B.6
pause vitesse
low B.2:high B.6
high B.1:high B.5
pause vitesse
low B.1:high B.5

Je suis entièrement d'accord.
Pour ma défense toutefois, Le programme initiale comprenait 10 sorties au lieu de 8.
D'autre part, notre demandeur ne connait (encore) rien aux picaxes et le pinsB bien que beaucoup plus élégant est moins compréhensible à première vue. Mais vous avez raison quand même.

MM

MM
 
Top