Bladeren bron

initial commit

first version, pixels not fully functionnal
Etienne Landon 6 jaren geleden
commit
9649fa9d63
1 gewijzigde bestanden met toevoegingen van 116 en 0 verwijderingen
  1. 116 0
      DMX2leds.ino

+ 116 - 0
DMX2leds.ino

@@ -0,0 +1,116 @@
+
+#include <DmxReceiver.h>
+
+DmxReceiver dmx;
+IntervalTimer dmxTimer;
+
+int DMXstartChannel= 0 ;
+const byte DMXadressPins[8] = {11, 12, 14, 15, 16, 17, 18, 19};
+
+#define PWMnumChannels 10
+const int PWMchannels[PWMnumChannels] = {3, 4, 5, 6, 9, 10, 20, 21, 22, 23} ;
+
+
+#include <FastLED.h>
+const int NUM_LEDS_1 = 90;
+const int LEDS_GROUP_1 = 8 ;
+const int LEDS_OFF_1 = 3 ;
+const int NUM_GROUPS_1 = 10 ;
+#define DATA_PIN_1 8
+CRGB leds_1[NUM_LEDS_1];
+
+//const int NUM_LEDS_2 = 50;
+//const int LEDS_GROUP_2 = 6 ;
+//const int LEDS_OFF_2 = 2 ;
+//const int NUM_GROUPS_2 = 18 ;
+//#define DATA_PIN_2 8
+//CRGB leds_2[NUM_LEDS_2];
+
+void dmxTimerISR(void)
+{
+        dmx.bufferService();
+}
+
+//-----------------------------------------------------------------------------
+void setup() {
+  
+  Serial.begin(9600);
+  delay(2000);  // Instead of while (!Serial), doesn't seem to work on Teensy
+  
+  Serial.println("Starting.");
+  FastLED.addLeds<WS2812B, DATA_PIN_1, RGB>(leds_1, NUM_LEDS_1);
+//  FastLED.addLeds<WS2812B, DATA_PIN_2, RGB>(leds_2, NUM_LEDS_2);
+  FastLED.show();
+
+  dmx.begin();
+  dmxTimer.begin(dmxTimerISR, 1000);
+
+  //Calculate DMX adress
+  DMXstartChannel = 0;
+  for(int i=0; i<8; i++){
+    pinMode(DMXadressPins[i], INPUT_PULLUP);
+  }
+  delay(200);
+  for(int i=0; i<8; i++){    
+    DMXstartChannel += (!digitalRead(DMXadressPins[i]) * pow(2, i));
+  }
+  DMXstartChannel += 256 ;
+  Serial.print("DMX start adress set to : ");
+  Serial.println(DMXstartChannel);
+
+}
+
+//------------------------------------------------------------------------------
+
+void loop() {
+    //Calculate DMX adress
+//  Serial.println(DMXstartChannel);
+  if (dmx.newFrame()) {
+    // 10 first channels are for power led dimmers
+    for (int i=0; i<PWMnumChannels ; i++){
+      analogWrite(PWMchannels[i], dmx.getDimmer(DMXstartChannel+i) );
+    }
+
+    for (int groupLed = 0 ; groupLed< 10 ; groupLed++) {
+      int R = dmx.getDimmer(DMXstartChannel + PWMnumChannels + 3*groupLed);
+      int G = dmx.getDimmer(DMXstartChannel + PWMnumChannels  + 3*groupLed + 1);
+      int B = dmx.getDimmer(DMXstartChannel + PWMnumChannels  + 3*groupLed + 2);
+//      Serial.println(R);
+      for (int pixel = 0 ; pixel<6; pixel++){
+        leds_1[groupLed * LEDS_GROUP_1  + pixel ].setRGB( R, G, B);
+      }    
+    }
+    leds_1[0].setRGB(dmx.getDimmer(DMXstartChannel + PWMnumChannels), dmx.getDimmer(DMXstartChannel + PWMnumChannels + 1), dmx.getDimmer(DMXstartChannel + PWMnumChannels + 2) );
+    FastLED.show();
+
+  
+//
+//    // Led 1
+//    int channelOffset = PWMnumChannels + 1 ;
+//    for (int channel = 0 ; channel< NUM_GROUPS_1 ; channel + 3){  // 3 channels per group of leds
+//      int R = dmx.getDimmer(channelOffset + channel);
+//      int G = dmx.getDimmer(channelOffset + channel + 1);
+//      int B = dmx.getDimmer(channelOffset + channel + 2);
+//      
+//      for (int pixel = 0 ; pixel<LEDS_GROUP_1; pixel++){
+//        leds_1[channel * LEDS_GROUP_1 + (channel - 1) * LEDS_OFF_1 + pixel].setRGB( R, G, B);
+//      }    
+//    }
+//
+//
+//    channelOffset = PWMnumChannels + NUM_GROUPS_1 * 3 + 1 ;
+//    for (int channel = 0 ; channel< NUM_GROUPS_2 ; channel + 3){
+//      int R = dmx.getDimmer(channelOffset + channel);
+//      int G = dmx.getDimmer(channelOffset + channel + 1);
+//      int B = dmx.getDimmer(channelOffset + channel + 2);
+//      for (int pixel = 0 ; pixel<LEDS_GROUP_2; pixel++){
+//        leds_2[channel * LEDS_GROUP_2 + (channel - 1) * LEDS_OFF_2 + pixel].setRGB( R, G, B);
+//      }    
+//    }
+  
+  }
+
+
+
+
+}