Cyrob : WS2812B NeoPixel, analyse et visu avec un Micsig STO1104C+

preview_player
Показать описание
ERRATA : Oups! J’ai fait une erreur et dis une bêtise dans mon explication. Contrairement à de nombreux systèmes basés sur des registres à décalage, ces leds mémorisent la première séquence de 24 bits après un reset et laissent passer les bits suivants. Il faut donc envoyer les valeurs dans l’ordre des leds (la plus proche du µcontroleur en premier). C’est assez malin en fait ça cela permet des softs qui fonctionnent indépendamment du nombre de led, les premières fonctionnant toujours de la même manière. Merci aux internautes ayant remarqués ma boulette. J’aurais du lire le data sheet avec plus d’attention. Note que le principe reste le même mais l’ordre est différent.

Data Sheet :

Article Micsig sur mon site:

Le site de Micsig:

La chaine de Micsig:

---------------------------------------------------------------------------

---------------------------------------------------------------------------
Mon code Arduino de test:

ATTENTION:
YT est incapable de gérer les signes Inférieurs et supérieurs dans les commentaires (C'est pourtant pas compliqué !!)
Donc je les ai remplacé par INF et SUP, il faudra les remettre pour compiler.

// NeoPixel Cyrob Eval Apr19

#include INF Adafruit_NeoPixel.h SUP
#ifdef __AVR__
#include INF avr/power.h SUP
#endif

// IO
#define kInModePin 2
#define kInTrigPin 3

#define kOutLedPin 6

//Misc Constants
#define kNbLed 2

#define kMaxLum 64

#define kNbSeq 10

Adafruit_NeoPixel gNeoPix = Adafruit_NeoPixel(kNbLed, kOutLedPin, NEO_GRB + NEO_KHZ800);

uint32_t gSeq[kNbSeq][kNbLed];
int gCurSeq=0;

//-------------------------------------------------------------
bool Pushed(byte Pin){

if (digitalRead(Pin)==HIGH)
return false;

delay(50); // Debounce

while (digitalRead(Pin)==LOW);

delay(50); // Debounce

return true;
}

//-------------------------------------------------------------
void Refresh(){
}

//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
void setup() {

pinMode(kInModePin, INPUT_PULLUP);
pinMode(kInTrigPin, INPUT_PULLUP);

gSeq[0][0]=gNeoPix.Color(kMaxLum,kMaxLum,kMaxLum);gSeq[0][1]=gNeoPix.Color(kMaxLum,kMaxLum,kMaxLum);
gSeq[1][0]=gNeoPix.Color(0,0,0);gSeq[1][1]=gNeoPix.Color(0,0,0);
gSeq[2][0]=gNeoPix.Color(kMaxLum,0,0);gSeq[2][1]=gNeoPix.Color(0,0,kMaxLum);
gSeq[3][0]=gNeoPix.Color(0x55,0,0xAA);gSeq[3][1]=gNeoPix.Color(0,0,0);
gSeq[4][0]=gNeoPix.Color(0,0,0);gSeq[4][1]=gNeoPix.Color(0x55,0,0xAA);
gSeq[5][0]=gNeoPix.Color(1,1,1);gSeq[5][1]=gNeoPix.Color(2,2,2);
gSeq[6][0]=gNeoPix.Color(255,255,255);gSeq[6][1]=gNeoPix.Color(255,255,255);
gSeq[7][0]=gNeoPix.Color(0,0,kMaxLum);gSeq[7][1]=gNeoPix.Color(kMaxLum,0,0);
gSeq[8][0]=gNeoPix.Color(kMaxLum,0,0);gSeq[8][1]=gNeoPix.Color(0,0,kMaxLum);
gSeq[9][0]=gNeoPix.Color(0,kMaxLum,0);gSeq[9][1]=gNeoPix.Color(0,kMaxLum,0);

}

//=============================================================
void loop() {

if (Pushed(kInModePin)){
if (gCurSeq++ SUP kNbSeq)
gCurSeq=0;
Refresh();
}

if (Pushed(kInTrigPin)){
Refresh();
}

}

Rappel: Je ne vends rien et ne propose aucun service, même payant.

Déontologie de la chaine:
Рекомендации по теме
Комментарии
Автор

Oups! J’ai fait une erreur et dis une bêtise dans mon explication. Contrairement à de nombreux systèmes basés sur des registres à décalage, ces leds mémorisent la première séquence de 24 bits après un reset et laissent passer les bits suivants. Il faut donc envoyer les valeurs dans l’ordre des leds (la plus proche du µcontroleur en premier). C’est assez malin en fait ça cela permet des softs qui fonctionnent indépendamment du nombre de led, les premières fonctionnant toujours de la même manière. Merci aux internautes ayant remarqués ma boulette. J’aurais du lire le data sheet avec plus d’attention. Note que le principe reste le même mais l’ordre est différent.

Cyrob-org
Автор

Super intéressant et très instructif. Je ne m'étais jamais penché sur ce fonctionnement de ces DEL. Merci beaucoup 👍👍👍👍👍

jmc.
Автор

Bonne idée pour colorer Noël 😎. Je ne connaissais pas ces dels et cette liaison série. Merci.

AlfDeMelmac
Автор

Merci Philippe pour toute tes vidéos qui sont toujours passionnantes et intrusives pour un novice comme moi. Je dois dire aussi que si parfois je suis largué par la technique, j'ai toujours plaisir à écouter la blagounette de fin avec Maurice.
Bon courage à toi.

nyamibiloko
Автор

Très intéressant. Je ne m’étais jamais penché sur le pilotage de ces LED’s. Voilà qui est fait.

lambertax
Автор

Super vidéo, très bien expliqué.
continue comme ça

electronique_et_creation
Автор

Merci, j'avais fait une animation de Noel sous arduino et guirlande de 100 leds avec mon fils de 12 ans, maintenant j'ai bien démistifié l'envois des infos sur le bus 800khz.... génial comme d'ab...

alainarba
Автор

bon à savoir ! c'est en effet malin de servir la led la plus proche puis le reste tant qu'on a des trames...et dans la bonne humeur :D ! Merci Philippe!

hadireg
Автор

Cyrob, le Spielberg de l'animation pour expliquer le comportement de système électronique. :)

AngusBox
Автор

Encore une vidéo très intéressante 😉
J’ai toujours pensé à un bus 1 fil avec l'adressage de chaque led, et ben non !
J’avais, en 2000, utiliser quelque chose de similaire avec des (74LS164) pour contrôler
3 afficheur 7 segments avec 2 fils pour l’alim un pour les datas et un pour le clock.
Comme quoi les bases existe toujours.
Malgré tous tes projets qui te tiennent à cœur,
tu arrive toujours à me surprendre quant aux sujets que tu traites.
Peut être un jour la surprise du retour de l’écran NEXION,
je ne te jette pas la pierre, je n’ai toujours pas utiliser le mien 😊

Electro-Info-Tech
Автор

Merci pour les explications très intéressantes 👍

electroniquepassion
Автор

C'est fou, j'ai commandé des neopixel (mais des ws2811 j'espère ne pas avoir fait d'erreur. J'suis néophyte du neopixel) il y a peu. Je commence tt juste à jeter un œil sur le sujet. Et bim vous sortez une vidéo sur ce sujet. Ça fait la plusieurs fois où ça arrive. Soit vous m'espionner car vous et Mo-riss êtes des droïdes de skynet, soit l'inconscient collectif fait son œuvre, soit c'est un heureux hasard (perso j'pense à la 3eme option). Lol 😉😋😁
Sans rire, merci pour la vidéo et d'avoir répondu à des questions que je me posais sur le fonctionnement ce ces p'tits bêtes (fonctionnement, décalage, passage in/out, etc etc), ça tombe vraiment très bien.
J'ai hâte de voir la prochaine coïncidence et de voir vos vidéos à venir.
La blague de fin est super. 😁👍😁

liceterik
Автор

Super intéressant et clair comme d'hab. Merci Phil

Philippe-Philou
Автор

Vidéo très claire et instructive merci
J'espère un tuto sur la prog des arduino à ce sujet 😉

mathieudidot
Автор

Merci pour ces explications très claires et didactiques.

jfmahe
Автор

ATTENTION ATTENTION : ici tu présentes des ws2812'B' (puce à 4 pins) mais tu parles de WS2812 'tout court', c'est une erreur car les deux ref existent et sont incompatible puisque la puce WS2812 'tout court' possède 6 pins. les durées d'encodage des bits '1' et '0' ne sont pas les même non plus entre ces deux puces

claudelesueur
Автор

super intéressant ! merci pour le partage

lepopeye
Автор

Merci, très intéressant...Comme toujours !

infinyh
Автор

Bonjour Philippe et merci pour cette vidéo très instructif comme d'habitude. Néanmoins je ne comprends pas la vue de ton oscilloscope avec tes explications. Sur l'exemple à environ 14:23 j'ai l'impression que la première led à gardé les 24 premiers bit et renvoie les 24 suivantes donc pas avec un registre à décalage, car sinon les 24 premiers bit se retrouverait sur la deuxième led.
En tout cas cela ma donner envie d'essayer ces petites bestioles!

yoannlafargue
Автор

Un analyseur logique peut aussi être bien pratique (mais on perd qq informations).
C’est vrai que c’est vraiment pratique de n’utiliser qu’une seule entrée
/sortie pour commander toute la série en pwm multicolore!

marcrives