Une horloge de RVB LED 15 avec Arduino core (3 / 5 étapes)

Étape 3: Considérations de logiciel

Je ne fournira pas le plein esquisser dans ici parce que, tout d’abord, il a été développé pour le matériel personnalisé particulier et donc ne fonctionne pas avec votre appareil, et Deuxièmement, parce qu’il n’est pas sorcier là-dedans – l’horloge RGB base est assez simple à (s’il vous plaît n’hésitez pas à poser des questions si vous avez des problèmes, cependant). Il y a, cependant, quelques considérations à noter.

1. faire droit RGB

L’horloge de RVB affiche l’heure en mélangeant juste les couleurs de base – rouges, verts et bleus. Considérant que chaque couleur de base est entraînée par son propre canal de données, le moyen de programmer cela semble assez simple : il suffit de tourner sur rouges pendant des heures, puis vert et bleu pour les minutes correspondants. Mélange des couleurs se fera par LEDs elles-mêmes. Simple, droite ?

Faux !

Même si cette solution semble excellente du point de vue programmation, qu'il n’est pas que bon si visuel esthétique et consommation d’énergie sont considérés. Une LED RGB est essentiellement trois LEDs dans un seul paquet. Cela signifie que si il affiche rouge, qu’une seule LED fonctionne. Si elle passe au jaune, deux voyants sont allumés, et avec le blanc, tous les trois sont brillants. Ainsi, le jaune est deux fois plus brillante que n’importe quelle couleur de base et blanc est de trois fois plus lumineux. Cela ne semble vraiment pas bon (et c’est l’une des raisons pour lesquelles HSV modèle ne doit jamais être utilisé avec des LEDs, mais c’est une autre histoire pour un futur article) et il utilise trop de pouvoir – en fait, quand les 15 LEDs sont blancs (à 05:30) l’appareil consommera 900mA et même ne fonctionnera pas sur un port USB (500 mA).

L’autre raison que vous devrez « main-pick » les couleurs il le fait que les LEDs ne sont pas calibré en couleur et différentes grappes peut varier considérablement dans la façon dont ils sortis des mêmes couleurs. C’est une bonne idée de faire un étalonnage des couleurs à la main pour obtenir les teintes de la couleur exacte souhaitée, même lorsque vous faites affaire avec apparemment simples 7 couleurs.

En tout cas, il est préférable d’allumer chaque LED individuellement avec les valeurs soigneusement préparés. Dans mon croquis, que j’ai tout d’abord calculer quelles couleurs doivent être sur et écrire ceci dans un petit tableau d’octets (avec trois bits à droite utilisés), puis envoyer les valeurs préparés à LEDs en conséquence. Voici quelques extraits de code :

Préparation de l’octet :

pour (k = 0 ;
k < 15 ; disp15 k ++) [k] = 0 ; effacer tous les octets

pour (k = 1; k < 6; k ++)

{

Si ((hour%6) >(k-1)) {disp15 [k-1] = B100 ; disp15 [k + 4] = B100 ; disp15 [k + 9] = B100;} ;

}

Si (minute < 16) pour (k = 0; k

d’autre

Si (minute < 31)

{pour (k = 0; k < 16; k ++) disp15 [k] | = B010 ;

pour (k = 0; k <(minute-15); k ++) disp15 [k] | = B001;}

d’autre

Si (minute < 46)

{pour (k = 0; k < 16; k ++) disp15 [k] | = B001 ;

pour (k=(minute-30); k < 15; k ++) disp15 [k] | = B010;}

d’autre (k=(minute-45); k < 15; k ++) disp15 [k] | = B001 ;

Voyants allumer :

 for ( k=0; k<15; k++){ switch (disp15[k]) { case B000: setRGBpoint(k, 0, 0, 0); break; case B100: setRGBpoint(k, 3600, 0, 0); break; case B010: setRGBpoint(k, 0, 3000, 0); break; case B001: setRGBpoint(k, 0, 0, 3600); break; case B110: setRGBpoint(k, 1800, 1200, 0); break; case B011: setRGBpoint(k, 0, 2000, 1500); break; case B101: setRGBpoint(k, 1900, 0, 1700); break; case B111: setRGBpoint(k, 1200, 1000, 1000); break; } } 

2. l’horloge

N’utilisez pas la bibliothèque Time.h. Alors qu’il peut obtenir le temps hors de la puce RTC externe, il est bourré avec des choses inutiles : il se transforme votre Arduino en une horloge aussi, manger des ressources et la mémoire (environ 5 Ko de celui-ci en fait!). Juste obtenir les fonctions nécessaires hors de lui et utiliser la bibliothèque de wire.h seulement.

Ce sont les fonctions récupérées, que vous aurez besoin :

 byte bcdToDec(byte val){ return ( (val/16*10) + (val%16) ); } 
 byte decToBcd(byte val) { return ((val/10*16) + (val%10)); } 
 void getTime () { Wire.beginTransmission(0x68); Wire.write(byte(0)); Wire.endTransmission(); Wire.requestFrom(0x68, 3); second = bcdToDec (Wire.read()); minute = bcdToDec (Wire.read()); hour = bcdToDec(Wire.read())%12; //12 hour time } 
 void setTime() { Wire.beginTransmission(0x68); Wire.write(byte(0)); Wire.write(decToBcd(second)); Wire.write(decToBcd(minute)); Wire.write(decToBcd(hour)); Wire.write(byte(0)); Wire.endTransmission(); } 

N’oubliez pas de #include et Wire.begin() ; dans setup() et déclarer en second lieu, les variables heures et minutes.

3. un bouton

Il est recommandé d’ajouter un bouton à l’horloge de RVB : il peut être utile pour les changements de mode d’installation ou de visualisation horloge si vous avez plus d’un. Dans mon projet, le bouton est utilisé pour le changement de modes (appui court), réglage de l’horloge (appui long, 1 seconde) et paramètres de luminosité (presse encore plus longue, 2 secondes). Il y a également une installation d’orientation (sélection de quel côté de l’horloge est sur le fond) – il est allumé par deux impulsions courtes, suivies d’un long. Pour faire des questions simples, que vous pouvez recourir à plus d’un bouton.

Cela conduit à une question de visualisation temps d’attente pour un bouton appuie sur la combinaison. Encore une fois, la bonne réponse de programmation (attribuant une interruption au bouton) n’est pas nécessairement juste dans notre cas. Que se passe-t-il si vous voulez lire quelques capteur – par exemple, une photorésistance – pour modifier le comportement de l’appareil ? Que se passe-t-il si vous souhaitez contrôler l’appareil avec une télécommande IR ?

Comme cela n’est pas strictement lié au projet d’horloge RVB simple particulier de cette instructable je serai bref. Les routines de visualisation dans mes projets ne sont pas transmises en eux-mêmes : ils vient de créer un affichage et puis retourner le contrôle au cycle loop() principal qui fait des trucs comme la vérification des boutons ou des capteurs ou autre chose, puis une boucle et appelle la visualisation à nouveau. J’utilise un modeCounter de variable globale pour garder une trace de la position actuelle de visualisation pour les modes d’animation (il est fondamentalement le même que for(,,,), mais sans la boucle confinée). Les détails sont vraiment l’affaire pour un autre article, espoir ce petit extrait aidera (et encore une fois, n’hésitez pas à poser des questions).

Articles Liés

Circuit de Strip LED RGB avec Arduino

Circuit de Strip LED RGB avec Arduino

Ce Instructable couvre l'Assemblée d'un circuit capable d'ing PWM (modulation de largeur d'impulsion) une bande de RVB LED 9-12v et un Arduino pour faire défiler une gamme de couleurs de programmation. Je vais discuter de comment monter un transistor
Commander une Led RGB avec Arduino et traitement

Commander une Led RGB avec Arduino et traitement

cette instructable (mon premier pas moins) indique comment contrôler une RGB a conduit à l'aide de la transformation et arduino.La caractéristique principale étant que la couleur est sélectionnée en cliquant sur une image, la valeur RGB du pixel sur
RGB LED Outdoor avec Arduino Uno R3

RGB LED Outdoor avec Arduino Uno R3

Cette instructable explique comment contrôler un strip LED RGB avec un Arduino. Dans ce cas, la bande LED est montée sur une planche à neige. RVB (rouge vert bleu) LEDs ont la possibilité d'afficher une variété de couleurs basées sur l'allumage et ex
Contrôle LED RGB avec arduino et traitement.

Contrôle LED RGB avec arduino et traitement.

Je vais vous dire aujourd'hui comment contrôler un LED RGB avec l'aide du langage Arduino et traitement. Il s'agit de mon premier instructable alors, s'il vous plaît laissez-moi savoir si je pouvais rien améliorer et si vous avez n'importe quel genre
Cube de LED Rubik avec Arduino

Cube de LED Rubik avec Arduino

Dans ce instructable je vais vous montrer comment vous pouvez construire cube de votre propre LED Rubik. Ce projet a été réalisé pour un cours d'initiation électronique à Pomona College. Groupes ont reçu environ deux mois pour réaliser un projet de l
8 x 8 x 8 LED Cube avec Arduino Mega (+ Sound + PS contrôleur + jeu)

8 x 8 x 8 LED Cube avec Arduino Mega (+ Sound + PS contrôleur + jeu)

il s'agit d'une instructable qui repose sur le CubeChr, (par SuperTech-IT, (et par das-labor.org, (http://www.das-labor.org/wiki/Borg3d_Bauanleitung...)mais je pense que sa meilleure et plus facile.J'ai commencé ce projet sans aucune qualification de
LED Cube avec Arduino et PCB personnalisé

LED Cube avec Arduino et PCB personnalisé

cette instructable détaille la conception et la construction des processus pour une 5 x 5 x 5 cube LED, contrôlée avec un Arduino, qui réside sur un circuits imprimés personnalisés.Vidéos, photos et informations supplémentaires se trouvent sur mon si
3 x 3 x 3 LED Cube avec Arduino Lib

3 x 3 x 3 LED Cube avec Arduino Lib

il y a autres Instructables sur la génération des cubes de LED, celui-ci est différent pour plusieurs raisons :1. il est construit avec un faible nombre de composants sur étagère et de crochets avec directement à l'Arduino.2. un clair, facile à repro
6 LED pendule avec Arduino

6 LED pendule avec Arduino

c'est ce que vous devez faire un pendule de 6 LED avec Arduino :6 x LEDSRésistances de 6 x 330 ohms7 x fils de raccordement1 x carte de prototypage ou Perfboard1 x Arduino Uno ou Arduino Mega 2560Ce projet ne tarde pas à faire du tout.C'est le code q
Couleur peut également afficher le temps de construire une horloge de couleur LED

Couleur peut également afficher le temps de construire une horloge de couleur LED

Pas toutes les horloges utilisent les chiffres pour afficher l'heure. Cette horloge peu soignée vous indique le temps en utilisant des couleurs différentes pour chaque chiffre. Les couleurs sont basées sur le code de couleur de résistance (sorte de),
À l’aide d’une manette NES pour les émulateurs avec Arduino et traitement

À l’aide d’une manette NES pour les émulateurs avec Arduino et traitement

J'ai trouvé plusieurs façons de brancher une manette NES sur votre ordinateur pour une utilisation comme une manette de jeu émulateur mais aucun ne semblait être simple et compatible avec ce que j'avais sous la main.Celui-ci fonctionne uniquement ave
Réglage d’une horloge temps réel (RTC) avec une Micro Arduino Pro

Réglage d’une horloge temps réel (RTC) avec une Micro Arduino Pro

Pour beaucoup de projets, vous devez être en mesure de savoir le temps réel. Qu'il soit secondes précises, l'heure du jour ou la date du mois, un Module d'horloge RTC en temps réel est la réponse à ce besoin.Avec une consommation de faible puissance,
Contrôler les lumières RVB de Android avec Arduino & Bluetooth LE (BLE)

Contrôler les lumières RVB de Android avec Arduino & Bluetooth LE (BLE)

j'ai vu beaucoup de projets de Kickstarter mettant en vedette la nouvelle norme Bluetooth 4.0 Low Energy et clones Arduino à venir sur le marché, a permis un certain nombre de Bluetooth LE (BLE) mais nombre de ces projets semblent encore être quelque
Différentes méthodes de conduite 7 Segment LED affiche avec Arduino

Différentes méthodes de conduite 7 Segment LED affiche avec Arduino

je voudrais juste montrer quelques différentes méthodes de connexion des affichages à 7 segments LED à un Arduino ou Atmega 328 IC. Ils ne sont que de simples codes soit automatiquement comptage via le code ou incrémentées / décrémentées grâce à une