Bienvenue aux nouveaux arrivants sur FantasPic !

- Pensez à lire les règles durant votre visite, il n'y en a pas beaucoup, mais encore faut-il les respecter .
- N’hésitez pas à faire des remarques et/ou suggestions sur le Forum, dans le but de l'améliorer et de rendre vos prochaines visites plus agréables.
- Vous pouvez regarder votre "panneau de l'utilisateur" afin de configurer vos préférences.
- Un passage par "l'utilisation du forum" est recommandé pour connaître les fonctionnalités du forum.

--- L’équipe FantasPic ---
Tout ce qui n'a pas de catégorie !
Expandeur I2C
Roger
Avatar de l’utilisateur
Amateur
Amateur
Messages : 122
Enregistré en : mars 2024
Localisation : Région PACA

#31 Message par Roger » sam. 27 avr. 2024 19:14

Gérard a écrit :Je pense utiliser des matrices 8x8 toutes faites. Je ne connais pas du tout les WS2812.
Par contre, je connais bien le MCP23016, avec 8 de ces circuits, on peut avoir 128 I/O ce qui est déjà pas mal.

Le principe des WS2812 (et des produits similaires), c'est que chaque led dispose de 4 pins : Vcc, GND, Data IN, Data OUT

Pour l'alim, je n'explique pas, c'est 5V ou 12V selon le modèle, pour Data IN et Data OUT, ça fonctionne comme ça :

Chaque led est pilotée par une valeur sur 24 bits, avec 1 octet pour la puissance du rouge, 1 octet pour le bleu, et 1 pour le vert.
Les Data IN et OUT sont cablés en série : le OUT de la led n°1 va au IN de la n°2, le OUT de la n°2 va au IN de la n°3, ...etc., ce qui simplifie considérablement le tracé du PCB ... c'est un avantage énorme.

D'un point de vue de la commande, on a un pin du µC qui peut piloter de nombreuses leds.
Par exemple, pour 5 leds, le µC va envoyer 5 valeurs, chacune composée de 3 octets, c'est à dire que le µC va envoyer 15 octets.
La led n°1 reçoit les 5 valeurs sur son IN, elle garde la première pour elle, et elle recopie la 2ème, 3ème, 4ème, et 5ème valeur sur son OUT, ce qui implique que la led n° 2 va recevoir 4 valeurs, elle va garder la première reçue, et transmettre les 3 restantes à la led n°3, ...etc.



Concernant le fait que j'utilise l'instruction ASM "NOP" dans l'exemple de mon code, c'était pour tester mais on n'est pas obligé, on peut très bien remplacer ça par une instruction très classique, par exemple, en faisant une incrémentation sur une variable de type Byte (qui ne sert à rien), ça revient au même, ça consomme 1 cycle machine.
Autre remarque sur ce code : il a 10 ans, et probablement qu'aujourd'hui j'utiliserai une autre méthode, mais celle-ci reste valable, fiable, et assez facile à comprendre.
Le programme d'un µC fait ce que vous lui demandez de faire, pas ce que vous souhaitez qu'il fasse

Expandeur I2C
Temps-x
Avatar de l’utilisateur
Expert
Expert
Messages : 2647
Enregistré en : juillet 2016
Localisation : Terre

#32 Message par Temps-x » sam. 27 avr. 2024 19:31

Bonjour Roger, et tout le forum,

Merci Roger pour avoir pris la main, car expliquer tous ça .....

D'après mes calculs je peux piloter 16 led WS2812B de 64 bits avec 4 sorties

Roger a écrit :Source du message mais celle-ci reste valable, fiable, et assez facile à comprendre.


C'est pas que ma méthode ou la tienne soit dure à comprendre, c'est qu'il faut faire un effort pour comprendre,

:sifflotte: là c'est trop demandé .... humour!! ==> exit


==> A+
:roll: Les requins, c'est comme le langage ASM, c'est le sommet de la chaîne alimentaire. :wink:

Expandeur I2C
venom
Avatar de l’utilisateur
Confirmé
Confirmé
Messages : 978
Âge : 38
Enregistré en : avril 2016
Localisation : Klyntar
Contact :

#33 Message par venom » sam. 27 avr. 2024 19:45

Roger a écrit :Les Data IN et OUT sont cablés en série : le OUT de la led n°1 va au IN de la n°2, le OUT de la n°2 va au IN de la n°3, ...etc., ce qui simplifie considérablement le tracé du PCB ... c'est un avantage énorme.

D'un point de vue de la commande, on a un pin du µC qui peut piloter de nombreuses leds.
Par exemple, pour 5 leds, le µC va envoyer 5 valeurs, chacune composée de 3 octets, c'est à dire que le µC va envoyer 15 octets.
La led n°1 reçoit les 5 valeurs sur son IN, elle garde la première pour elle, et elle recopie la 2ème, 3ème, 4ème, et 5ème valeur sur son OUT, ce qui implique que la led n° 2 va recevoir 4 valeurs, elle va garder la première reçue, et transmettre les 3 restantes à la led n°3, ...etc.


Bonjour a tous.

Ça a l'air sympa ton explication. C'est un module ou une matrice led toute faites ou autre ?







@++
Mon site web
Mon discord : venom#4888

Expandeur I2C
Roger
Avatar de l’utilisateur
Amateur
Amateur
Messages : 122
Enregistré en : mars 2024
Localisation : Région PACA

#34 Message par Roger » sam. 27 avr. 2024 19:50

venom a écrit :Ça a l'air sympa ton explication. C'est un module ou une matrice led toute faites ou autre ?

C'est mieux !!!

En fait, c'est une led, avec 4 pins, en version 5V ou 12V (et peut-être 3.3V mais je ne suis pas sûr).
Ca existe en CMS et en traversant, dans diverses tailles.

Il existe plusieurs références qui fonctionnent sur ce principe.

Concernant la présentation, on les trouve sous forme de led (toutes seules), sous forme de ruban (que l'on peut couper), sous forme de barrettes droites (PCB), sous forme de cercle ou 1/4 de cercle (PCB), sous forme de matrice (5x7, 8x8, ...etc.), et vraissemblablement sous d'autres formes que j'ai oublié.
Le programme d'un µC fait ce que vous lui demandez de faire, pas ce que vous souhaitez qu'il fasse

Expandeur I2C
venom
Avatar de l’utilisateur
Confirmé
Confirmé
Messages : 978
Âge : 38
Enregistré en : avril 2016
Localisation : Klyntar
Contact :

#35 Message par venom » sam. 27 avr. 2024 23:25

Ça a l'air top ce truc :roll:
Je vais me renseigner sur le sujet. Merci !

Ça me fait penser peut être rien à voir, mais depuis que je me suis intéressé a l'électronique j'ai pris l'habitude a chaque fois que je passe devant une pharmacie de me demander comment fonctionne la fameuse croix verte :-D
Surtout qu'aujourd'hui elles affiches des images avec même un effet de profondeur. Je me demande comment fonctionne le principe. 8-)






@++
Mon site web
Mon discord : venom#4888

Expandeur I2C
Roger
Avatar de l’utilisateur
Amateur
Amateur
Messages : 122
Enregistré en : mars 2024
Localisation : Région PACA

#36 Message par Roger » dim. 28 avr. 2024 00:27

venom a écrit :Ça me fait penser peut être rien à voir, mais depuis que je me suis intéressé a l'électronique j'ai pris l'habitude a chaque fois que je passe devant une pharmacie de me demander comment fonctionne la fameuse croix verte :-D
Surtout qu'aujourd'hui elles affiches des images avec même un effet de profondeur. Je me demande comment fonctionne le principe.

C'est possible qu'elles utilisent des leds adressables, mais ça n'est pas certain.

Si je devais en fabriquer une, j'utiliserai probablement des leds adressables, car cela faciliterait considérablement la conception
Cependant, si c'est pour en fabriquer des milliers, il est fort possible que l'intéret économique penche du coté de l'utilisation d'un µC avec beaucoup de I/O qui vont aller piloter de très nombreux transistors bipolaires pour faire du multiplexage.
Le PCB serait plus compliqué à concevoir, le programme serait plus complexe, mais le coût en matériel serait probablement inférieur, et donc, sur la quantité on s'y retrouverait probablement.
Le programme d'un µC fait ce que vous lui demandez de faire, pas ce que vous souhaitez qu'il fasse

Expandeur I2C
cyril13110
Confirmé
Confirmé
Messages : 770
Âge : 41
Enregistré en : avril 2016
Localisation : 13

#37 Message par cyril13110 » dim. 28 avr. 2024 12:21

Temps-x a écrit :Bonjours Gérard, Roger, cyril13110, et tout le forum,

Il faut faire tes matrices, et digits, avec les Led WS2812B

Tu n'as pas besoin d'avoir beaucoup de pattes sur ton µc faut juste 8 pattes. et encore je suis modeste :-D

Par contre il te faut un µc qui et au moins 1000 octets de Ram, et qu'il puisse tourner à 32Mhz (PLL activable(64Mhz))


:roll: Si j'ai le temps je fais faire une horloge solaire avec ce genre de led, mise à l'heure par GPS, ou manuelle.


==> A+



Bonjour temps-x et bonjour à tous,

avec un peut de retard je te réponds.
oui en effet tu ma passer un code tous fait qui fonctionne ou j'ai juste à modifier les paramètre mais honnêtement je ne comprends pas vraiment le code et ça me dérange un peut.
du coup le code de ROGER j’avoue il est vraiment plus clair pour moi car j’arrive à le déchiffrer contrairement à l'ASM.

Expandeur I2C
Temps-x
Avatar de l’utilisateur
Expert
Expert
Messages : 2647
Enregistré en : juillet 2016
Localisation : Terre

#38 Message par Temps-x » dim. 28 avr. 2024 18:19

Bonjour Roger, venom, cyril13110, et tout le forum,

cyril13110 a écrit :Source du message du coup le code de ROGER j’avoue il est vraiment plus clair pour moi car j’arrive à le déchiffrer contrairement à l'ASM.


Ben, comme ça, il y aura une réalisation en code Asm et MikroBasic ... c'est pllutôt coul.. 8-)

==> A+
:roll: Les requins, c'est comme le langage ASM, c'est le sommet de la chaîne alimentaire. :wink:

Expandeur I2C
cyril13110
Confirmé
Confirmé
Messages : 770
Âge : 41
Enregistré en : avril 2016
Localisation : 13

#39 Message par cyril13110 » dim. 28 avr. 2024 18:36

Temps-x a écrit :Bonjour Roger, venom, cyril13110, et tout le forum,

cyril13110 a écrit :Source du message du coup le code de ROGER j’avoue il est vraiment plus clair pour moi car j’arrive à le déchiffrer contrairement à l'ASM.


Ben, comme ça, il y aura une réalisation en code Asm et MikroBasic ... c'est pllutôt coul.. 8-)

==> A+

Absolument reste plus qu'à trouver une personne pour le faire un Pascal et une personne en C hors Arduino bien évidemment

Expandeur I2C
Roger
Avatar de l’utilisateur
Amateur
Amateur
Messages : 122
Enregistré en : mars 2024
Localisation : Région PACA

#40 Message par Roger » dim. 28 avr. 2024 21:00

Bonjour à tous,

@ Gérard :
Je ne veux surtout pas polluer ton sujet. :eek:
A l'origine, le sujet porte sur un expandeur en I2C. Si tu trouves que ça dérape trop, met un message, sinon je considère que parler des leds adressables est une solution alternative à ton problème et je continu à fournir des infos ... mais c'est ton sujet, c'est toi le patron :-D

Temps-x a écrit :Ben, comme ça, il y aura une réalisation en code Asm et MikroBasic ... c'est pllutôt coul.. 8-)

Cela dit, pour que personne ne se sente stigmatisé, je peux aussi poster la version ASM de mon code, moi je ne sais pas faire, mais MikroBasic le fait d'office.


Sinon, comme ces leds semblent intéresser du monde, j'ai lu quelque part il y a longtemps que certains auraient utilisé le module SPI d'un µC (lequel ?) pour convertir la valeur des variables en un train d'impulsion sous forme série.
Je me souviens avoir un peu réfléchit là-dessus à l'époque, mais je n'ai pas approfondi.
Si on souhaite utiliser un module SPI pour sérialiser la transmission, il ne faut pas perdre de vue que chaque bit du protocole pour leds adressables contient toujours un état haut ET un état bas, c'est le rapport entre les 2 qui détermine si l'on envoie un 1 ou un 0

L'intêret d'utiliser le module SPI, c'est que pendant qu'il transmet automatiquement plusieurs bits, le µC peut faire autre chose, ce qui n'est pas le cas si l'on souhaite que le programme génère manuellement la transmission série, comme on peut le voir dans mon code, car la vitesse de transmission imposée ne laisse pas le temps de faire autre chose, tout du moins avec un PIC 8 bits.
A noter cependant que si la vitesse obligatoire ne permet pas de faire autre chose, rien n'interdit de faire le reste à un autre moment, c'est d'ailleur la base de mon code : je calcule les données à envoyer, je les mets en forme, et une fois qu'elles sont prêtes à être directement transmises, à ce moment là je déclenche l'actualisation de l'affichage (transmission série).

Actualiser l'affichage est très rapide, de mémoire c'est 30µs par led, c'est à dire que pour changer l'affichage de 200 leds, placées sur la même ligne série, il ne faut que 6ms, et si on pousse plus loin la réflexion et que l'on imagine faire une "télé", à 25 images/s, le temps pour modifier 200 leds sera de 150ms, ce qui laisse encore 850ms pour "fabriquer" les données

A noter aussi, et je crois que Temps-x en a parlé, si l'on souhaite piloter énormément de leds, le plus simple est d'utiliser un port complet sur 8 bits, afin de lui envoyer directement des octets. En faisant comme ça, on peut alors gérer 8 "groupes" de leds adressables.


Je ne suis pas expert sur ces types de leds (les WS2812 ne sont pas les seules), mais je m'y suis intéressé (et je possède pas mal d'infos) car elles permettent de faire facilement beaucoup de choses avec un petit PIC, parmi lesquelles :

- Panneau d'affichage (pas besoin de nombreux expandeurs de port et/ou pas besoin de multiplexage complexe à gérer en hard et en soft)

- Possibilité de donner plusieurs indications sur un tout petit PIC, en utilisant une seule sortie et plusieurs leds

- Possibilité de donner plusieurs indications sur un tout petit PIC, en utilisant une seule sortie et une seule led pour limiter l'encombrement

- Possibilité de faire de l'éclairage décoratif avec les rubans de leds

- Possibilité de faire une animation à la K2000

- Possibilité de faire une "jauge" avec un bon rendu visuel, par exemple pour indiquer le niveau d'une cuve ... ou d'une batterie

- ...etc.
Le programme d'un µC fait ce que vous lui demandez de faire, pas ce que vous souhaitez qu'il fasse


Retourner vers « Coin Fourre-tout »

Qui est en ligne

Utilisateurs parcourant ce forum : Aucun utilisateur enregistré et 8 invités