Bit cogner étape par étape : Arduino contrôle de WS2811, WS2812 et LED RGB WS2812B (4 / 5 étapes)

Étape 4: À partir de nombres binaires de logique numérique

Bon, alors maintenant que nous sommes familiers avec la représentation binaire des nombres décimaux, nous pouvons communiquer les valeurs d’intensité nous voulons à la WS2811 LED driver IC.  Étant donné que les valeurs vont de 0 à 255 pour chaque LED, nous aurons besoin de 8 positions (appelées bits dans la logique numérique) afin de couvrir l’ensemble de la gamme — 255 est 11111111 en binaire.  Et, nous aurons besoin de 24 bits à transmettre les valeurs pour tous les 3 LEDs à l’intérieur de chaque WS2812.  Mais exactement comment pouvons nous dire les WS2811 que nous voulons un 0 ou un 1.  Eh bien, il s’avère que nous avons besoin de manipuler le calendrier d’un signal carré de le faire.

Avertissement: il est une petite variation du moment décrit ci-dessous selon que vous utilisiez un IC WS2811 réelle, ou la version embarquée à l’intérieur de la WS2812/WS2812B.  Les numéros utilisés ci-dessous correspondent à ce dernier cas (WS2812/WS2812B).  Si vous utilisez l’IC WS2811, consulter la fiche technique pour les numéros légèrement différentes (autre que cela, tout autre chose décrite ci-dessous est le même).

Principe de fonctionnement
Le WS2811 attend deux choses :
1) une impulsion (c.-à-d., rectangulaire) signal d’onde avec une fréquence environ 800 KHz — autres fréquences fonctionnent aussi bien, mais nous allons coller à 800kHz dans ce tutoriel — qui définit les valeurs d’intensité dans un registre à décalage interne.  Notons toutefois, que les WS2811 se comporte différemment qu’une norme Registre à décalage car les données sont transférées dans un mode de données dernier sorti.
2) une fois que les données sont déplacées en place, le WS2811 attend un signal faible durant au moins 50μs afin de verrouiller les données à leurs sorties respectives.

Déplacer les données
Ceux qui connaissent le terme « pulse wave » pourraient avoir entendu parler de son cas particulier : l’onde carrée.  Ce type de signaux non sinusoïdaux se composent d’une amplitude alternée entre fixe au maximum et un minimum fixe à une fréquence constante.  Quand l’alternance se produit de façon symétrique, c'est-à-dire lorsque la durée pendant laquelle le signal a une valeur maximale est identique à la durée pendant laquelle le signal a une valeur minimale, puis nous avons le cas particulier d’une onde carrée.  Environ 800 kHz, chaque période de l’onde du pouls est environ 1.25μs long (1 / 1.25μs = 800 KHz).  Pour communiquer avec le WS2811, nous avons besoin régler la durée pendant laquelle le signal est élevé ou faible afin de signaler un 0 ou un 1.  Il y a une erreur dans la fiche technique de WorldSemi, donc la valeur réelle devrait être (crédit pour les gens plus à Adafruit pour la capture de cela) :

Transmettre un 1:
Temps que le signal reste élevé (T1H): 0.8μs
Temps que le signal reste faible (T1L): 0.45μs

Transmettant un 0:
Temps que le signal reste élevé (T0H): 0.4μs
Temps que le signal reste faible (T0L): 0.85μs

Verrouillage des données
Après l’envoi de tous les bits correspondant à des valeurs d’intensité de tous les voyants que nous voulons contrôler, alors nous avons besoin il suffit de maintenir la valeur de l’onde du pouls à sa valeur minimale au moins 50μs.

Transmettant un « commandement de loquet »:
Temps que le signal reste faible (TL): > = 50μs

Ce type de signal possède les propriétés spéciales d’étant cadencé autonome et non nulle (NZR) de retour.  Donc, ce qui reste, c’est de voir comment nous pouvons mettre notre ATMega328p pour produire un signal précisément minuté afin que nous puissions transmettre à la matrice de LED RGB WS2812.  [Alerte spoiler!]  Nous allons utiliser la technique de bitbanging.

Articles Liés

Arduino contrôlée Président de LED et de système de jeu

Arduino contrôlée Président de LED et de système de jeu

L'objectif de ce projet a été d'apprendre à utiliser les outils et mettre en œuvre de logiciels avec qui. Ceci a été divisé en trois parties principales : le Strip LED contrôlé par un Arduino, le système Rasberry PI connecté à un moniteur et le bâtim
Commander une LED RGB avec le HC-06 Bluetooth Module utilisant Android OS(Arduino)

Commander une LED RGB avec le HC-06 Bluetooth Module utilisant Android OS(Arduino)

Ce tutoriel vous expliquera le processus de connexion d'un Bluetooth Module de HC-06 à un Arduino et contrôler la couleur d'une LED RGB à l'aide de l'application ArduDroid sur le système d'exploitation Android. Cette configuration très probablement c
Autocollant de fenêtre numérique (Arduino contrôlée)

Autocollant de fenêtre numérique (Arduino contrôlée)

un autocollant de taille matrice de LED qui affiche des images en séquence à partir d'une carte SD, pour produire une animation signe ou « vitrophanie ». Arduino contrôlée ! Inclut également le code de Windows, Mac et Linux pour la conversion des fic
Arduino contrôlées Animatronic squelette Rock Band - en cours

Arduino contrôlées Animatronic squelette Rock Band - en cours

Pour l'Halloween cette année, j'ai décidé de construire un animatronic squelette Rock. C'est un travail en cours à ce stade, mais je suis assez content de comment il est à venir le long. Presque tout est fait de matériaux que j'avais sur la main (je
Arduino contrôlée animatronique tête en bois (lampe de lecture)

Arduino contrôlée animatronique tête en bois (lampe de lecture)

cette tête est une lampe de lecture qui peut être ajustée pour la direction de l'éclairage et estompée au besoin.Ce Instructable combine Arduino programmation, certains électronique simple, sculpture avec des outils manuels et électriques, contrôle m
Lampe à LED RGB Arduino + 4 bit écran LCD

Lampe à LED RGB Arduino + 4 bit écran LCD

c'est mon premier instructable!!! Yay...Avant de continuer. Je ne pas entrer dans les détails de la façon de couper le bois, ou tout reconstituer. J'ai chorégraphié le processus de génération entière, quelle que soit venu à l'esprit est ce que j'ai r
Arduino - contrôle de points/turnout

Arduino - contrôle de points/turnout

Mise à jour 28 avril 2016Les points / contrôleur de taux de participation est construit et installé dans ma mise en page du chemin de fer.Le système fini contrôle 16 points et 15 accessoires tels que les lumières, sons, platine, etc.Le circuit est in
Arduino contrôlée hélicoptère

Arduino contrôlée hélicoptère

Cette instructable a été créée dans l'accomplissement de l'exigence de projet de la Makecourse à l'Université de Floride du Sud (www.makecourse.com). L'objectif de ce cours était pour nous enseigner la créativité, l'ingéniosité et l'application prati
Laser Galvo - Arduino contrôlée

Laser Galvo - Arduino contrôlée

Arduino contrôlée laser galvo. La servocommande de miroirs diriger le laser UV laissant une traînée phosphorescente sur la feuille de vinyle glow-in-the-dark.Posté sur notes.robives.comÉtape 1 :À partir d'une feuille de vinyle lumineux d'eBay et poin
Arduino contrôlée ruche spécialiste / désodorisant

Arduino contrôlée ruche spécialiste / désodorisant

Dans le chaos relatif de mes arrangements domestiques, j'ai une petite oasis d'un ordre parfait. Une chose que je peux appeler « organisé » et « pleinement fonctionnelle ». Une chose que je peux toucher et savons qu'il est fiable et prêt pour l'actio
Arduino contrôlée de fenêtre pour chat

Arduino contrôlée de fenêtre pour chat

je soumets cette instructable le défi de l'Arduino. N'oubliez pas de voter !Mon voisin a eu un petit problème avec son chat. Il veulent de sortir et de revenir trop souvent à l'intérieur. Habituellement, il ouvre juste la fenêtre de sa cuisine et nou
Arduino contrôlée Rotary Stewart Platform

Arduino contrôlée Rotary Stewart Platform

Cette instructable est sur la génération d'une rotative Plate-forme de Stewart. Il permet de positionner sa plateforme de mouvement à six degrés de liberté. Cette plateforme spécifique est conçue pour pouvoir positionner un reflex numérique ou tout a
Arduino contrôlée CNC / 3D imprimante hybride

Arduino contrôlée CNC / 3D imprimante hybride

Dame Nature fait... Nous construisons des.BuildersBot fusibles impression 3D & fraisage CNC dans rêve d'un générateur "3dprintingindustry.com"Le BuilderBot est une machine de conception ouverte, qui utilise OpenLogiciels et matériels ouvert.
Arduino contrôlée coaster smart

Arduino contrôlée coaster smart

Le Coaster Smart est un coaster intelligent pour vos boissons. Il reconnaît que les différents types de boissons placé dessus, avec un cocktail le Coaster Smart s'illumine dans quelques couleurs atmosphériques et variation lente. Si vous placez une t