RGB LED WS2812?
Moderator: Benj
Re: RGB LED WS2812?
Nicolas,
Oui il a marché du premier coup !
Merci pour ton aide tres précieuse.
Chris
Oui il a marché du premier coup !
Merci pour ton aide tres précieuse.
Chris
Re: RGB LED WS2812?
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
Merci,
Chris
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
Merci,
Chris
- Attachments
-
- Code LED SW2812 Error.png
- (22.69 KiB) Downloaded 12871 times
-
- 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?
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):
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 :
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:
Et puis tu dois juste initialiser le port A et faire en sorte que RA0 est la sortie.
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;
Puis dans un autre bout de code C se serait de faire :
Code: Select all
(*pRed) = FCV_couleurRouge;
(*pGreen) = FCV_couleurVert;
(*pBlue) = FCV_couleurBleu;
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
Re: RGB LED WS2812?
Voici le fichier sous Flowcode v6 avec ton code asm!
Merci
Chris
Merci
Chris
- Attachments
-
- Demo LED WS2812.fcfx
- (9.15 KiB) Downloaded 531 times
-
- 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?
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
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
-
- 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?
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
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
Re: RGB LED WS2812?
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
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 495 times
-
- 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?
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:
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 ^^"
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
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 514 times
Re: RGB LED WS2812?
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
Et.................Wow,ça fonctionne super bien!
Milles merci!
Chris
P,S …J'apprécie énormément le travail que tu as fait
-
- 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?
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.
Si maintenant tu veux brancher plusieurs LED WS2812 l'un après l'autre, faudra un petit peu changer le code de nouveau.
No souci, c'était fun.tech wrote:P,S …J'apprécie énormément le travail que tu as fait
-
- Posts: 80
- Joined: Fri Jul 20, 2012 8:55 am
- Location: Chambly (France)
- Been thanked: 4 times
- Contact:
Re: RGB LED WS2812?
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
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
-
- 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?
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
- Nicolas
Re: RGB LED WS2812?
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
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 484 times
-
- Posts: 80
- Joined: Fri Jul 20, 2012 8:55 am
- Location: Chambly (France)
- Been thanked: 4 times
- Contact:
Re: RGB LED WS2812?
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.
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.
-
- Posts: 80
- Joined: Fri Jul 20, 2012 8:55 am
- Location: Chambly (France)
- Been thanked: 4 times
- Contact:
Re: RGB LED WS2812?
[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.
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.
-
- Posts: 80
- Joined: Fri Jul 20, 2012 8:55 am
- Location: Chambly (France)
- Been thanked: 4 times
- Contact:
Re: RGB LED WS2812?
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
-
- Posts: 80
- Joined: Fri Jul 20, 2012 8:55 am
- Location: Chambly (France)
- Been thanked: 4 times
- Contact:
Re: RGB LED WS2812?
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
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 478 times
-
- Posts: 80
- Joined: Fri Jul 20, 2012 8:55 am
- Location: Chambly (France)
- Been thanked: 4 times
- Contact:
Re: RGB LED WS2812?
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
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