Étape 4: Le code
Les œuvres de régime sont assez simple. Un accéléromètre fournit des informations de circulation sur x, y, axe z. Basé sur l’orientation, les valeurs RVB des LED sont mises à jour.
Le travail est décomposé en phases suivantes.
- Faire une lecture du capteur.
Il suffit d’utiliser l’api. - En trigonométrie, résoudre les valeurs de « rouler et pitch ».
Vous pouvez trouver beaucoup plus d’informations dans ce document par Mark Pedley. - Obtenir la couleur correspondante, associée à des valeurs de rotation.
Pour cela, nous nous tournons vers 0-360 RGB à l’aide de la valeur un HSL - fonction conversion RGB.
La valeur du terrain est utilisée à diverses échelles pour réguler l’intensité de la lumière blanche et la saturation des couleurs. Les hémisphères opposés de la sphère de sélecteur de couleur sont complètement blancs. - Mise à jour de la mémoire tampon de lumières qui stocke des informations de différentes couleurs de LED.
Selon ces informations, le contrôleur de mémoire tampon va créer une animation ou répondra avec les couleurs complémentaires. - Enfin montrer les couleurs et les LEDs de rafraîchissement.
Au départ, l’idée était de créer une sphère de couleur où vous pouviez choisir n’importe quelle couleur. Placer la roue des couleurs sur le méridien et vers les pôles les tons sombres et claires.
Mais rapidement l’idée a été écartée.
Car les LEDs créent des nuances différentes, hors et rapidement allumé chaque rgb LED, lorsque, compte tenu des valeurs basses pour représenter les couleurs sombres, les LEDs donnent une très mauvaise performance et vous pouvez voir comment ils commencent à clignoter. Ce qui rend l’hémisphère sombre de la sphère de couleur peut ne pas fonctionner correctement.
Puis je suis venu avec l’idée d’attribuer des couleurs complémentaires à la tonalité actuellement sélectionnée.
Ainsi, un hémisphère est choisir une valeur de couleur monochromatique d’une roue de 50 % éclairage 90 ~ 100 % de saturation. Pendant ce temps, l’autre côté, prend un dégradé de couleur de la même couleur-position mais ajoute, de l’autre côté du dégradé, sa couleur complémentaire.
La lecture des données du capteur est crue. Un filtre peut être appliqué pour lisser le bruit et les vibrations de la lampe elle-même. Pour l’instant, je trouve intéressant car il semble plus analogique, réagit tout toucher et prend une seconde pour stabiliser complètement.
Je suis encore travailler sur le code et ajout de nouvelles fonctionnalités et optimiser les animations.
Vous pouvez vérifier les dernières versions du code sur mon compte github.