|
@@ -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);
|
|
|
|
+// }
|
|
|
|
+// }
|
|
|
|
+
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+}
|