http://www.hartmann-codier.de/tl_files/Hartmann-Codier/Bilder/Glossar/DCS-Funktionfuer-Glossar.gif Regalplatz: H2E16 http://playground.arduino.cc/DMX/DMXShield https://github.com/Rickgg/ESP-Dmx Boards manager link: http://arduino.esp8266.com/stable/package_esp8266com_index.json in Boradmanager dann ESP 2.0 installieren http://arduino.esp8266.com/staging/package_esp8266com_index.json loeschen. Win10: C:\Users\M1P3\AppData\Local\Arduino15\packages\esp8266 dann 2.1. installiern unter MAC dasselbe ! http://192.168.2.115/ http://rgbdmx.local // https://github.com/Rickgg/ESP-Dmx // The DMX library allows sending data from Serial1 in DMX format. #include // Serial1 uses UART1, TX pin is GPIO2. // NodeMCU/EPS12E GPIO2 -> D4 DMXESPSerial dmx; uint8_t maxElements, // number of elements to control brightness, rC, // Color of red byte within each 3- or 4-byte pixel gC, // Color of green byte bC, // Color of blue byte wC; // Color of white byte (same as rOffset if no white) int color // Set pixel color from 'packed' 32-bit RGB color: void setPixelColor(uint16_t n, uint32_t c) { uint8_t *p, r = (uint8_t)(c >> 16), g = (uint8_t)(c >> 8), b = (uint8_t)c; if(brightness) { // See notes in setBrightness() r = (r * brightness) >> 8; g = (g * brightness) >> 8; b = (b * brightness) >> 8; } rC = r; gC = g; bC = b; wC = (r+g+b)/3; } // Convert separate R,G,B into packed 32-bit RGB color. // Packed format is always RGB, regardless of LED strand color order. uint32_t Color(uint8_t r, uint8_t g, uint8_t b) { return ((uint32_t)r << 16) | ((uint32_t)g << 8) | b; } // Convert separate R,G,B,W into packed 32-bit WRGB color. // Packed format is always WRGB, regardless of LED strand color order. uint32_t Color(uint8_t r, uint8_t g, uint8_t b, uint8_t w) { return ((uint32_t)w << 24) | ((uint32_t)r << 16) | ((uint32_t)g << 8) | b; } void setup() { dmx.init(32); maxElements=29; Serial.begin(9600); Serial.println("DMX WallWasher ready"); Serial.println(); Serial.println("Menu: 0 - off"); Serial.println("Menu: 1 - blink low"); Serial.println("Menu: 2 - Blink high"); Serial.println("Menu: 3 - blue Fade"); Serial.println("Menu: 4 - Color Fade"); } void loop() { int menu=0,c=0; while(true) { // while(!Serial.available()); c = Serial.read(); /* if (c == '0') menu = 0; if (c == '1') menu = 1; if (c == '2') menu = 2; if (c == '3') menu = 3; if (c == '4') menu = 4; if (c == '5') menu = 5; if (menu == 0) blinker(0); else if (menu == 1) blinker(50); else if (menu == 2) blinker(150); else if (menu == 3) bluefade(1,2); //scale, speed else if (menu == 4) redfade(1,2); //scale, speed else if (menu == 5) colorWipe(40,2); //brightness, speed */ switch (c): case '0' : menu = 0; case '1' : menu = 1; case '2' : menu = 2; case '3' : menu = 3; case '4' : menu = 4; case '5' : menu = 5; switch (menu): case 0 : black(); case 1 : blinker(30); case 2 : blinker(250); case 3 : bluefade(1,2); //scale, speed case 4 : redfade(1,2); //scale, speed case 5 : colorWipe(40,2); } blinker(0); } void black() { for (int c = 0; c <= maxElements; c++) { dmx.write(c, 0); } dmx.update(); } void blinker(int br) { for (int c = 0; c <= maxElements; c++) { dmx.write(c, br); } dmx.update(); delay(500); for (int c = 0; c <= maxElements; c++) { dmx.write(c, 0); } dmx.update(); delay(500); } void setColor(int element, uint32_t c) { for (int c = 3; c <= maxElements; c=c+5) { // dmx.write(c, b); } dmx.update(); } void fade(int color , int scale , int sp) { black(); for ( int b ; b<= 255 ; b =b+sp) { for (int c = 3; c <= maxElements; c=c+5) { dmx.write(c, b); } dmx.update(); } for ( int b=255 ; b>0 ; b =b-sp) { for (int c = 3; c <= maxElements; c=c+5) { dmx.write(c, b); } dmx.update(); } } void redfade(int scale , int sp) { black(); for ( int b=0 ; b<= 255 ; b =b+sp) { for (int c = 1; c <= maxElements; c=c+5) { dmx.write(c, b); } dmx.update(); } for ( int b=255 ; b>0 ; b =b-sp) { for (int c = 1; c <= maxElements; c=c+5) { dmx.write(c, b); } dmx.update(); } } // Fill the dots one after the other with a color void colorWipe(uint8_t br, uint32_t wait) { for(int j=0; j<256; j++) { for(uint16_t i=0; i> 16), g = (uint8_t)(c >> 8), b = (uint8_t)c; dmx.write(i, r); dmx.write(i+1, g); dmx.write(i+2, b); dmx.write(i+3, (r+g+b)/3); dmx.update(); delay(wait); } } } // Input a value 0 to 255 to get a color value. // The colours are a transition r - g - b - back to r. uint32_t Wheel(byte WheelPos) { WheelPos = 255 - WheelPos; if(WheelPos < 85) { return Color(255 - WheelPos * 3, 0, WheelPos * 3); } else if(WheelPos < 170) { WheelPos -= 85; return Color(0, WheelPos * 3, 255 - WheelPos * 3); } else { WheelPos -= 170; return Color(WheelPos * 3, 255 - WheelPos * 3, 0); } } // https://github.com/Rickgg/ESP-Dmx // The DMX library allows sending data from Serial1 in DMX format. #include // Serial1 uses UART1, TX pin is GPIO2. // NodeMCU/EPS12E GPIO2 -> D4 DMXESPSerial dmx; void setup() { dmx.init(32); Serial.begin(9600); } void loop() { for (int c = 0; c <= 29; c++) { dmx.write(c, 0); } dmx.update(); delay(500); for (int c = 0; c <= 29; c++) { dmx.write(c, 10); } dmx.update(); delay(500); Serial.println("Hello Test!"); }