3 canaux Dimmer/fader pour Arduino ou autre microcontrôleur (2 / 3 étapes)

Étape 2: 3 canaux Dimmer/fader pour Arduino ou autre microcontrôleur : logiciel

C’est juste pour la démonstration ou essai but.

Comme ce programme est juste pour illustrer, la boucle de cycles entre 0 et 127...


 /* AC Light Control Ryan McLaughlin <ryanjmclaughlin with slight modifications */ #include <TimerOne.h> // http://www.arduino.cc/playground/Code/Timer1 #define PINS 3 volatile int pinCount[PINS]; // make volatile to make available in interrupt volatile boolean zero_cross=0; // Boolean to store a "switch" to tell us if we have crossed zero int AC_pins[] = {3,4,5}; // Stup the pin numbers int AC_dim[PINS]; // Holds Dimming levels (0-128) 0 = on, 128 = 0ff int freqStep = 78; // Set the delay for the frequency of power (65 for 60Hz, 78 for 50Hz) per step (using 128 steps) // freqStep may need some adjustment depending on your power the formula // you need to us is (500000/AC_freq)/NumSteps = freqStep void setup() { for(int a=0; a < PINS; a++) { //set the pins to output pinMode(AC_pins[a],OUTPUT); pinCount[a] = 0; // keeps track of the time in the cycle AC_dim[a] = 0; // dimming level set to zero } attachInterrupt(0, zero_cross_detect, FALLING); // Attach Interrupt to Pin 2 (interrupt 0) for Zero Cross Detection Serial.begin(9600); Timer1.initialize(freqStep); // Initialize TimerOne library for the freq we need Timer1.attachInterrupt(dim_check, freqStep); // Use the TimerOne Library to attach an interrupt // to the function we use to check to see if it is // the right time to fire the triac. This function // will now run every freqStep in microseconds. } void zero_cross_detect() { // function to be fired at the zero crossing zero_cross = 1; // set flag to tell dimming function zero cross has occured } // End zero_cross_detect void dim_check() { // Function will fire the triac at the proper time if(zero_cross == 1) { // First check to make sure the zero-cross has happened else do nothing for(int a=0; a < PINS; a++) { if(pinCount[a] >= AC_dim[a]) { // Check and see if i has reached the dimming value we want digitalWrite(AC_pins[a], HIGH); // Fire the Triac delayMicroseconds(5); // Pause briefly to ensure the triac turned on digitalWrite(AC_pins[a], LOW); // Turn off the Triac gate (Triac will turn off at the next zero cross) pinCount[a] = 0; // Reset the accumulator zero_cross = 0; // Reset the zero_cross so it may be turned on again at the next zero_cross_detect } else { pinCount[a]++; // If the dimming value has not been reached, incriment the counter } } } } void loop() { // This is simply making all outputs cycle through bright-dark, out of time with each other. for(int i=0; i<127; i ++) { for(int a=0; a < PINS; a++) { int ii = i+42; //this is the bit that puts the blinking lights out of sync with one another if(ii > 127) ii -= 127; AC_dim[a] = ii; } delay(50); } } 

Articles Liés

Module simple d’EEPROM pour Arduino ou autre microcontrôleur

Module simple d’EEPROM pour Arduino ou autre microcontrôleur

EEPROMs vous seront utiles si vous souhaitez stocker des données sans perdre. De nombreux microcontrôleurs viennent avec une EEPROM interne, mais comme EEPROMs ont un nombre fini (bien que très grand) d'écritures avant qu'ils commencent à devenir déf
Comment faire pour mesure courant CA à l’aide de capteur à effet Hall avec Arduino ou autres microcontrôleurs commune

Comment faire pour mesure courant CA à l’aide de capteur à effet Hall avec Arduino ou autres microcontrôleurs commune

S'il vous plaît voir une nouvelle approche plus simple iciObjectif : Ce Instructable montre comment faire une boîte d'interface qui, lorsque raccordé à une rallonge, permet de microcontrôleurs communs comme l'Arduino à mesure AC courant comme un sign
Contrôler un Furby avec Arduino (ou autre microcontrôleur)

Contrôler un Furby avec Arduino (ou autre microcontrôleur)

Le Furby Million de dollars : Nous pouvons reconstruire. Nous disposons de la technologie.Suite de la précédente Instructable où nous excisés cerveau primitif de Furby, il est maintenant temps de le remplacer par quelque chose de plus.Ce Instructable
Un moins cher ESP8266 WiFi Shield pour Arduino et autres micros

Un moins cher ESP8266 WiFi Shield pour Arduino et autres micros

Mise à jour : 19 mai 2016Rev 14 de ce projet revise bibliothèques et code fonctionne avec les plug-in V2.2 ESP8266.com IDEMise à jour : 17 décembre 210511 Rev de ce projet nettoie les autres connexions tentatives s'il est déjà connecté. Utilise égale
UART générique pour n’importe quel microcontrôleur

UART générique pour n’importe quel microcontrôleur

Communiquer avec un micro-contrôleur lors de l'exécution, est très utileinstallation. Il peut être utilisé pour le débogage, ou d'envoyer des commandes etc. L'un des plus simple protocole disponible pour communiquer est UART. Requiere une épingle pou
Arduino GRANDE le microcontrôleur énorme

Arduino GRANDE le microcontrôleur énorme

Nous aimons Arduino ! Mais les planches sont si minuscules qu'ils peuvent être difficiles à câliner. Et pas si facile à voir, non plus, si vous êtes un étudiant assis à l'arrière d'une salle de classe. Alors pourquoi ne pas résoudre les deux problème
Modifier un détecteur de fumée 6 EUR pour une utilisation avec microcontrôleur, appeleur automatique, liant et plus

Modifier un détecteur de fumée 6 EUR pour une utilisation avec microcontrôleur, appeleur automatique, liant et plus

dans une maison ou d'affaires, détecteurs de fumée et de feu central systèmes peuvent être essentielles pour sauver des vies et des biens.  Mais qu'en est-il lorsque personne n'est là ?  Grandes entreprises peuvent se permettre des systèmes contrôlés
Stockage de masse simple pour votre projet de microcontrôleur

Stockage de masse simple pour votre projet de microcontrôleur

vous voulez gigaoctets de stockage pour votre microcontrôleur ? Vous souhaitez un moyen simple de transférer des fichiers depuis votre PC vos picaxe ou arduino ou autre micro projet ?Ce petit projets montre l'uDrive qui peut être configuré comme un d
Timer de résolution 6,25 nanosecondes pour n’importe quel microcontrôleur !

Timer de résolution 6,25 nanosecondes pour n’importe quel microcontrôleur !

Tout en concevant un remplacement à l'état solide pour un sous-système d'affichage radar vide-tubes-et-TCR, j'étais coincé à obtenir un système adapté à la période entre les impulsions de synchronisation et l'impulsion de l'écho. Les impulsions de sy
SensoDuino : Transformez votre téléphone Android en un Hub de capteurs sans fil pour Arduino

SensoDuino : Transformez votre téléphone Android en un Hub de capteurs sans fil pour Arduino

Mises à jour23 novembre 2013: SensoDuino 0,160 obtient un visage à gauche.Le 19 nov. 2031 : avis : la synergie incroyable entre Arduino & Android.19 novembre 2013: SensoDuino 0.159 est sorti. Téléphone Android date (y, m, d) et l'heure (h, m, s) sont
Android contrôlée de lumières et pouvoir, pfodDevice pour Arduino

Android contrôlée de lumières et pouvoir, pfodDevice pour Arduino

Mise à jour : Voir Andriod/Arduino pour débutants - Design Custom Andriod menus pour activer et désactiver les sorties de l'Arduino. Absolument aucun de programmation requis pour une alternative qui ne nécessite aucune programmation à tous.==========
Son capteur de pression et préampli Mike pour Arduino

Son capteur de pression et préampli Mike pour Arduino

j'ai publié une pression acoustique capteur pour l'arduino (ou autre microcontrôleur) avant.Il reposait sur un ampli Op double TLC272 et s'est très bien.Parmi les personnes réagissant bien que demandait si j'avais fait une analyse de soundwave avec e
Écran tactile LCD simple pour arduino

Écran tactile LCD simple pour arduino

Il s'agit d'un guide montrant un moyen facile de mettre en place une interface d'écran tactile LCD avec arduino, ou autres microcontrôleurs analogues.C'est aussi l'auto-promotion éhontée de mon kickstarter... qui met l'accent sur ce qui en fait super
Contrôle de moteur facile et réversible pour Arduino (ou n’importe quel microcontrôleur)

Contrôle de moteur facile et réversible pour Arduino (ou n’importe quel microcontrôleur)

ce projet utilise seulement trois principaux composants pour fournir un contrôle avant et arrière pour un seul moteur.  Vous pouvez facilement l'interface à un Arduino ou n'importe quel autre microcontrôleur.C'est tellement simple - vous pouvez câble