RGB LED WS2812?

Forum de support pour les locuteurs de la langue française qui souhaitent écrire dans leur langue maternelle.

Moderator: Benj

tech
Posts: 353
Joined: Tue Sep 23, 2008 9:39 am
Been thanked: 9 times
Contact:

Re: RGB LED WS2812?

Post by tech »

Nicolas,

Oui il a marché du premier coup !

Merci pour ton aide tres précieuse.

Chris

tech
Posts: 353
Joined: Tue Sep 23, 2008 9:39 am
Been thanked: 9 times
Contact:

Re: RGB LED WS2812?

Post by tech »

Bonjour Nicolas,

Voici je suis en train de valider le code asm dans le code C, j'ai quel que bug je ne peux compiler à cause des erreurs (voir image) qui est en jaune comme H'20', H'21', ect. :?
Il y a-t-il une solution ??

J’ai demandé de l’aide à Benj mais aucune raiponce :wink:

Merci,

Chris
Attachments
Code LED SW2812 Error.png
(22.69 KiB) Downloaded 12871 times

Spanish_dude
Posts: 594
Joined: Thu Sep 17, 2009 7:52 am
Location: Belgium
Has thanked: 63 times
Been thanked: 102 times
Contact:

Re: RGB LED WS2812?

Post by Spanish_dude »

Change les H'..' en 0x... C'est des valeurs hex.

Se que tu peux faire pour changer les valeurs de REG, GREEN, BLUE, se serait de faire ça en C (dans flowcode):

Code: Select all

char *pRed;
char *pGreen;
char *pBlue;

pRed = 0x20;
pGreen = 0x21;
pBlue = 0x22;
Si je ne me trompe pas , les pointeurs devraient pointer vers les addresses de RED, BLUE et GREEN du code ASM.
Puis dans un autre bout de code C se serait de faire :

Code: Select all

(*pRed) = FCV_couleurRouge;
(*pGreen) = FCV_couleurVert;
(*pBlue) = FCV_couleurBleu;
Avec FCV_couleurX, étant des variables ou tableaux dans flowcode.

A mon avis, tout se qui est init, tu devrais pouvoir l'enlever. Flowcode devrait le faire automatiquement.
Donc tout ça:

Code: Select all

    ORG     H'00'
    GOTO    init

    ORG     H'05'
init:
    BCF     STATUS, RP0
    BCF     STATUS, RP1 ; Set Bank 0
    CLRF    PORTA ; Clear PORTA register
    BSF     STATUS, RP0 ; Set Bank 1
    MOVLW   H'07' ; W_REG = 0x07
    MOVWF   ADCON1 ; ADCON1 = W_REG  ->  Set PORTA to digital IO
    MOVLW   H'FE' ; W_REG = 0xFE
    MOVWF   TRISA ; TRISA = 0xFE  ->  Set RA0 to output, all others to input

    BCF     STATUS, RP0 ; Set Bank 0
    ; Set Color
    MOVLW   H'00'
    MOVWF   RED
    MOVLW   H'55'
    MOVWF   GREEN
    MOVLW   H'FF'
    MOVWF   BLUE
Et puis tu dois juste initialiser le port A et faire en sorte que RA0 est la sortie.

tech
Posts: 353
Joined: Tue Sep 23, 2008 9:39 am
Been thanked: 9 times
Contact:

Re: RGB LED WS2812?

Post by tech »

Voici le fichier sous Flowcode v6 avec ton code asm!

Merci

Chris
Attachments
Demo LED WS2812.fcfx
(9.15 KiB) Downloaded 516 times

Spanish_dude
Posts: 594
Joined: Thu Sep 17, 2009 7:52 am
Location: Belgium
Has thanked: 63 times
Been thanked: 102 times
Contact:

Re: RGB LED WS2812?

Post by Spanish_dude »

Je n'ai pas la v6 malheureusement ^^.
Tu l'as testé ? Il marche ?

tech
Posts: 353
Joined: Tue Sep 23, 2008 9:39 am
Been thanked: 9 times
Contact:

Re: RGB LED WS2812?

Post by tech »

Non il ne marche pas, je voulais voir avec toi quel était le problème.

Quelle version as-tu de flowcode?

Je viens de voir sur le blog de Matrix que Ben Rowland as réalisé un projet pour contrôler des strippe de LED WS2812 http://matrixmultimedia.com/blog/?p=507#more-507

Chris

Spanish_dude
Posts: 594
Joined: Thu Sep 17, 2009 7:52 am
Location: Belgium
Has thanked: 63 times
Been thanked: 102 times
Contact:

Re: RGB LED WS2812?

Post by Spanish_dude »

Si tu peux me l'envoyer en flowcode v5, je pourrais voire se qui ne vas pas, sinon envoi moi le code C généré par flowcode.

Le project de Ben a été fait sur un PIC 16 bit (60 MIPS), alors que celui que tu utilises est un 8 bit (moins rapide, à 5 MIPS).

- Nicolas

tech
Posts: 353
Joined: Tue Sep 23, 2008 9:39 am
Been thanked: 9 times
Contact:

Re: RGB LED WS2812?

Post by tech »

Voila sous Flowcode v5

Dans cette version je n'ai pas apporté les modifications au code comme tu me la mentionner, car j’ai essayé et trop de bug a la compilation :(

Merci

Christian
Attachments
Demo LED WS2812 FCV5.fcf
(15.35 KiB) Downloaded 483 times

Spanish_dude
Posts: 594
Joined: Thu Sep 17, 2009 7:52 am
Location: Belgium
Has thanked: 63 times
Been thanked: 102 times
Contact:

Re: RGB LED WS2812?

Post by Spanish_dude »

Bon, j'ai réussi à se que flowcode compile le code. J'ai fait quelque modification au code.
Au lieu d'utiliser les RED, GREEN, BLUE et TEMP du code asm, j'utilises les variables flowcode que tu avais créé, plus une variable TEMP que moi j'ai ajouté.

Apres fallait changer tout les PORTA en _porta, parce que PORTA n'existe pas, contrairement à _porta.

J'ai aussi modifié quelques "MOVFW _var" en "MOVF _var, 0". MOVFW n'est pas une instruction connue par le MCU, c'est une sorte de fonction dans MPLABX qui permet de copier le contenue d'une variable dans l'accumulateur plus facilement que de faire "MOVF _var, 0".
Au moment de compiler, MPLABX remplace MOVFW par MOVF.

Et un petit oublie de ma part dans la fonction SendReset. J'ai oublié de copier le contenu de l'accumulateur dans la variable TEMP, comme ça:

Code: Select all

WS2813_SendReset:
    BCF     PORTA, 0 ; Clear RA0
    MOVLW   H'0FF' ; WREG = 0xFF
    MOVWF   TEMP
WS2813_SendReset_1:
    DECFSZ  TEMP
    GOTO    WS2813_SendReset_1
    RETURN
Tout les H'XXX' ont été changé en 0xXX.
Et c'est à pue près tout je crois.

Teste le programme et s'il ne marche pas, essaye de check le signal avec un scope ou logic analyser.

- Nicolas

PS: Je viens de remarquer que le nom de mes fonctions sont WS2813 au lieu de WS2812... Oups ^^"
Attachments
Demo LED WS2812 FCV5.fcf
(17.85 KiB) Downloaded 506 times

tech
Posts: 353
Joined: Tue Sep 23, 2008 9:39 am
Been thanked: 9 times
Contact:

Re: RGB LED WS2812?

Post by tech »

Bon voilà j'ai apporté les modifications que tu mentionner dans la fonction SendReset et renommer les fonctions WS2813 pour WS2812.

Et.................Wow,ça fonctionne super bien!

Milles merci!

Chris

P,S …J'apprécie énormément le travail que tu as fait :D

Spanish_dude
Posts: 594
Joined: Thu Sep 17, 2009 7:52 am
Location: Belgium
Has thanked: 63 times
Been thanked: 102 times
Contact:

Re: RGB LED WS2812?

Post by Spanish_dude »

Ah désolé, le truc du SendReset c'était quand je t'avais fait le code ASM. Dans la version flowcode je l'avais déjà corrigé.

Si maintenant tu veux brancher plusieurs LED WS2812 l'un après l'autre, faudra un petit peu changer le code de nouveau.
tech wrote:P,S …J'apprécie énormément le travail que tu as fait :D
No souci, c'était fun.

Philbert Pascal
Posts: 80
Joined: Fri Jul 20, 2012 8:55 am
Location: Chambly (France)
Been thanked: 4 times
Contact:

Re: RGB LED WS2812?

Post by Philbert Pascal »

Bonjour Nicolas, bonjour Christian,
je regarde toujours avec un grand intérêt l'évolution de votre projet.
J'ai essayé de comprendre le déroulement mais je suis un peu perdu.
Je suis parti de la version Demo Led WS2812 FCV5.
Même en suivant vos instructions et en modifiant le code,ça ne marche pas ( je ne suis pas doué en assembleur et en C).
Christian pourrait tu me transmettre le fichier final en Flowcode V5 ou V6.

Tu avais parlé de tableau de variables et je curieux de voir comment tu vas réaliser ton idée.
J'ai cherché sur le forum, mais je n'ai pas vraiment trouvé d'exemple sur les tableaux de variables.
Actuellement dans mes programmes, je saisi des lignes d'état de mes LED et des tempo. C'est long mais ça fonctionne.
Ca fait énormément de ligne de code, mais c'est très simple. (je calcul la valeur binaire/ et décimal de mes LED dans un fichier Excel! hi)
J'aimerai connaitre l'utilisation des tableaux de variables. l'idée , c'est qu'a partir d'un formule mathématique, je rempli directement mon tableau représentant mon maillage .
Merci pour tout vos bon renseignement.

Bon weekend à tous

Spanish_dude
Posts: 594
Joined: Thu Sep 17, 2009 7:52 am
Location: Belgium
Has thanked: 63 times
Been thanked: 102 times
Contact:

Re: RGB LED WS2812?

Post by Spanish_dude »

Le programme que j'ai mit a disposition devrait marcher sans problème, il te suffit juste de changer la valeur des variables Blue, Green et Red.

- Nicolas

tech
Posts: 353
Joined: Tue Sep 23, 2008 9:39 am
Been thanked: 9 times
Contact:

Re: RGB LED WS2812?

Post by tech »

Bonjour Pascal,

Désolé pour le délai, voici un programme qui contrôle une LED WS2812. Tu n’as qua changé la valeur des variable de 0 à 255 pour le changement des couleurs.

Si tu as des questions n'hésite pas

Christian
Attachments
Demo LED WS2812 FCV5_1.fcf
(20.24 KiB) Downloaded 469 times

Philbert Pascal
Posts: 80
Joined: Fri Jul 20, 2012 8:55 am
Location: Chambly (France)
Been thanked: 4 times
Contact:

Re: RGB LED WS2812?

Post by Philbert Pascal »

Bonjour Christian,
merci pour le code. Je l'ai modifié pour un PIC 16F877 et un WS2811 et ca fonctionne impeccable.
A l'oscillo je vois bien le train de 3 fois 8bits.
J'ai même compris le code en C (hi).
Il me reste maintenant à créer des tableaux de variables représentant la matrice de 100*100 par exemple.
Peux tu me donner un exemple de tableau de variable. Puis -je créer plusieurs tableaux de variables?
Oui je sais ! Je pose beaucoup de questions.

Merci encore pour votre aide à tous.

Pascal.

Philbert Pascal
Posts: 80
Joined: Fri Jul 20, 2012 8:55 am
Location: Chambly (France)
Been thanked: 4 times
Contact:

Re: RGB LED WS2812?

Post by Philbert Pascal »

[quote="Philbert Pascal"]Bonjour Christian,
merci pour le code. Je l'ai modifié pour un PIC 16F877 et un WS2811 et ca fonctionne impeccable.
A l'oscillo je vois bien le train de 3 fois 8bits.
J'ai même compris le code en C (hi).
Il me reste maintenant à créer des tableaux de variables représentant la matrice de 100*100 par exemple.
Peux tu me donner un exemple de tableau de variable. Puis -je créer plusieurs tableaux de variables?
Oui je sais ! Je pose beaucoup de questions.

Merci encore pour votre aide à tous.

Pascal.

Philbert Pascal
Posts: 80
Joined: Fri Jul 20, 2012 8:55 am
Location: Chambly (France)
Been thanked: 4 times
Contact:

Re: RGB LED WS2812?

Post by Philbert Pascal »

Premier_test_WS2812.zip
(123.73 KiB) Downloaded 424 times
Bonjour Christian,
j'ai commencer à écrire les trois variables Green, blue, Red, qui change de valeur dans une boucle.
Je t'explique mon premier test. J'ai déclaré 4 variables Green1 à 4, 4 Red1 à 4, et 4 Blue1 à 4. C'est comme si j'avais 4 Led.
J'ai ajouté à la place des tableaux 4 boucles décisionnelles dans laquelle mes variables prennent leurs valeurs.
A la suite j'execute 4 fois tes routines en assembleur, chaque routine appelant une variable différente.
La première routine appelant les variable Green-Red-Blue, la seconde Green1-Red1-Blue1, etc.....
Si je dois allumer 1000 modules il me faudra 3000 variable. (d'ou l'utilité d'avoir des tableaux)
La dernière routine assembleur executant le reset.

Peux me corriger mon programme.
Ce programme n'est qu'une ébauche pour que je comprenne le fonctionnement des modules WS2812 et WS2811.

Autre question, lors de l'affichage de la puce (16F877 pour moi) je ne vois pas le portA_0 s'allumer. Est ce normal?

Dans l'attente de te lire, reçois mes remerciement.

Pascal

Philbert Pascal
Posts: 80
Joined: Fri Jul 20, 2012 8:55 am
Location: Chambly (France)
Been thanked: 4 times
Contact:

Re: RGB LED WS2812?

Post by Philbert Pascal »

Bonjour Christian.
Voici le même code en Version Flowcode V5.
Je t'ai joins des captures d'écran du signal généré.

Merci pour tout tes bons conseils
Pascal
Attachments
Archive.zip
(113.76 KiB) Downloaded 467 times

Philbert Pascal
Posts: 80
Joined: Fri Jul 20, 2012 8:55 am
Location: Chambly (France)
Been thanked: 4 times
Contact:

Re: RGB LED WS2812?

Post by Philbert Pascal »

Bonjours Christian,
as-tu bien reçus mon dernier message?
Sur le forum je vois l'icône du message défilé et je ne sais pas ce que cela veux dire.
Je me permais de te questionner sur l'avancement de ton projet.
J'ai reçus les WS2811.
Je commence mes test.
Bon weekend.
Pascal

Post Reply