123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126 |
- #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 = 6 ;
- const int LEDS_OFF_1 = 2 ;
- const int NUM_GROUPS_1 = 10 ;
- #define DATA_PIN_1 7
- CRGB leds_1[NUM_GROUPS_1*(LEDS_GROUP_1+LEDS_OFF_1)];
- //const int NUM_LEDS_2 = 50;
- const int LEDS_GROUP_2 = 6 ;
- const int LEDS_OFF_2 = 2 ;
- const int NUM_GROUPS_2 = 5 ;
- #define DATA_PIN_2 8
- CRGB leds_2[NUM_GROUPS_2*(LEDS_GROUP_2+LEDS_OFF_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<SK6812, DATA_PIN_1, RGB>(leds_1, NUM_GROUPS_1*(LEDS_GROUP_1+LEDS_OFF_1));
- FastLED.addLeds<SK6812, DATA_PIN_2, RGB>(leds_2, NUM_GROUPS_2*(LEDS_GROUP_2+LEDS_OFF_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< NUM_GROUPS_1 ; 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<LEDS_GROUP_1; pixel++){
- leds_1[groupLed * (LEDS_GROUP_1 + LEDS_OFF_1) + pixel ].setRGB( R, G, B);
- }
- }
- for (int groupLed = 0 ; groupLed< NUM_GROUPS_2 ; groupLed++) {
- int R = dmx.getDimmer(DMXstartChannel + PWMnumChannels + 3 * NUM_GROUPS_1 + 3*groupLed);
- int G = dmx.getDimmer(DMXstartChannel + PWMnumChannels + 3 * NUM_GROUPS_1 + 3*groupLed + 1);
- int B = dmx.getDimmer(DMXstartChannel + PWMnumChannels + 3 * NUM_GROUPS_1 + 3*groupLed + 2);
- // Serial.println(R);
- for (int pixel = 0 ; pixel<LEDS_GROUP_2; pixel++){
- leds_2[groupLed * (LEDS_GROUP_2 + LEDS_OFF_2) + 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);
- // }
- // }
-
- }
- }
|