Étape 4: programmation
J’ai utilisé les 2 bibliothèques mentionnés à l’étape 1. ShiftPWM devait être légèrement modifiée pour supprimer ses commandes série - ils ont interféré avec la transmission de DMX.
Ont inclus des téléchargements pour les deux bibliothèques, je recommande fortement de visiter les sites des auteurs. Télécharger les bibliothèques et les importer dans l’IDE Arduino. Pour ce faire, décompressez-les dans le dossier bibliothèques et redémarrez l’environnement IDE. Google si vous avez des questions.
Mon code est très simple à suivre car les bibliothèques de gérer tout le levage lourd.
Tout d’abord définir certaines variables. Ils sont très explicite et définissez les options pour ShiftPWM, le nombre de sorties, que nous sommes en cours d’exécution, ainsi que l’adresse DMX.
Comme je le voulais 4 unités continues, j’ai simplement eu la première DMX lancez adresse, puis un numéro d’unité. J’ai trouvé cela plus facile que d’entrer manuellement une adresse pour chaque unité.
Dans la routine d’installation, nous commençons le récepteur DMX, lancer ShiftPWM et ensemble les sorties hors tension, définir notre statut LED à voir la pour que nous avons le pouvoir, effacer le compteur de stroboscope, et commencer une interruption de la minuterie utilisent avec notre statut LED et stroboscope.
Dans notre routine d’interruption timer nous simplement augmenter nos variables timer et strobeCount. Nous ne voulons pas en faire trop ici ou il provoquera des autres parties de notre code de fonctionner de façon erratique.
Dans notre boucle principale, nous avons mis tout d’abord notre statut LED. Il se met à clignoter lorsque vous captez DMX et restera solidement allumée 1 seconde après avoir perdu DMX.
Ensuite, nous définissons les sorties sur les valeurs requises. Si nous n’avons pas reçu DMX pendant 10 secondes puis toutes les sorties sont désactivées. Si notre canal stroboscopique se situe entre 20 et 220 (valeur DMX max 255) puis nous appliquons les valeurs RVB en rafales aux sorties - 20 est strobe lent, 220 est stroboscopique rapide. Si notre canal de stroboscope est hors de cette plage puis nous appliquons simplement les valeurs RVB vers les sorties.
J’ai l’intention d’ajouter un stroboscope aléatoire, mais n’ont pas le temps encore.