Here's the code and a drawing of the wiring.
#include <DMXSerial.h>
#include <Adafruit_NeoPixel.h>
#define PIXEL_COUNT_OUTPUT1 60
#define PIXEL_PIN 27
Adafruit_NeoPixel strip1 = Adafruit_NeoPixel(PIXEL_COUNT_OUTPUT1, PIXEL_PIN,NEO_GRB + NEO_KHZ800); //Information about the Neopixelstrip.
void setup () {
DMXSerial.init(DMXReceiver);
pinMode(PIXEL_PIN, OUTPUT); // sets the digital pin as output
strip1.begin(); //Start sending.
strip1.clear();
strip1.show(); //All pixels at 0.
}
void loop() {
uint32_t red = strip1.Color(255, 0, 0);
uint32_t green = strip1.Color(0, 255, 0);
uint32_t blue = strip1.Color(0, 0, 255);
uint32_t none = strip1.Color(0, 0, 0); //Just some default colors for easy access.
// Calculate how long no data backet was received
unsigned long lastPacket = DMXSerial.noDataSince();
if (lastPacket < 500) {
// read recent DMX values and set values.
strip1.setPixelColor(0, DMXSerial.read(1), DMXSerial.read(2), DMXSerial.read(3)); //Read DMX Address 1(red), 2(green), 3(blue) at pixel 1.
strip1.setPixelColor(1, DMXSerial.read(1), DMXSerial.read(2), DMXSerial.read(3));
strip1.setPixelColor(2, DMXSerial.read(1), DMXSerial.read(2), DMXSerial.read(3));
strip1.setPixelColor(3, DMXSerial.read(1), DMXSerial.read(2), DMXSerial.read(3));
strip1.setPixelColor(4, DMXSerial.read(1), DMXSerial.read(2), DMXSerial.read(3));
strip1.setPixelColor(5, DMXSerial.read(1), DMXSerial.read(2), DMXSerial.read(3));
strip1.setPixelColor(6, DMXSerial.read(4), DMXSerial.read(5), DMXSerial.read(6));
strip1.setPixelColor(7, DMXSerial.read(4), DMXSerial.read(5), DMXSerial.read(6));
strip1.setPixelColor(8, DMXSerial.read(4), DMXSerial.read(5), DMXSerial.read(6));
strip1.setPixelColor(9, DMXSerial.read(4), DMXSerial.read(5), DMXSerial.read(6));
strip1.setPixelColor(10, DMXSerial.read(4), DMXSerial.read(5), DMXSerial.read(6));
strip1.setPixelColor(11, DMXSerial.read(4), DMXSerial.read(5), DMXSerial.read(6));
strip1.setPixelColor(12, DMXSerial.read(7), DMXSerial.read(8), DMXSerial.read(9));
strip1.setPixelColor(13, DMXSerial.read(7), DMXSerial.read(8), DMXSerial.read(9));
strip1.setPixelColor(14, DMXSerial.read(7), DMXSerial.read(8), DMXSerial.read(9));
strip1.setPixelColor(15, DMXSerial.read(7), DMXSerial.read(8), DMXSerial.read(9));
strip1.setPixelColor(16, DMXSerial.read(7), DMXSerial.read(8), DMXSerial.read(9));
strip1.setPixelColor(17, DMXSerial.read(7), DMXSerial.read(8), DMXSerial.read(9));
strip1.setPixelColor(18, DMXSerial.read(10), DMXSerial.read(11), DMXSerial.read(12));
strip1.setPixelColor(19, DMXSerial.read(10), DMXSerial.read(11), DMXSerial.read(12));
strip1.setPixelColor(20, DMXSerial.read(10), DMXSerial.read(11), DMXSerial.read(12));
strip1.setPixelColor(21, DMXSerial.read(10), DMXSerial.read(11), DMXSerial.read(12));
strip1.setPixelColor(22, DMXSerial.read(10), DMXSerial.read(11), DMXSerial.read(12));
strip1.setPixelColor(23, DMXSerial.read(10), DMXSerial.read(11), DMXSerial.read(12));
strip1.setPixelColor(24, DMXSerial.read(13), DMXSerial.read(14), DMXSerial.read(15));
strip1.setPixelColor(25, DMXSerial.read(13), DMXSerial.read(14), DMXSerial.read(15));
strip1.setPixelColor(26, DMXSerial.read(13), DMXSerial.read(14), DMXSerial.read(15));
strip1.setPixelColor(27, DMXSerial.read(13), DMXSerial.read(14), DMXSerial.read(15));
strip1.setPixelColor(28, DMXSerial.read(13), DMXSerial.read(14), DMXSerial.read(15));
strip1.setPixelColor(29, DMXSerial.read(13), DMXSerial.read(14), DMXSerial.read(15));
strip1.setPixelColor(30, DMXSerial.read(16), DMXSerial.read(17), DMXSerial.read(18));
strip1.setPixelColor(31, DMXSerial.read(16), DMXSerial.read(17), DMXSerial.read(18));
strip1.setPixelColor(32, DMXSerial.read(16), DMXSerial.read(17), DMXSerial.read(18));
strip1.setPixelColor(33, DMXSerial.read(16), DMXSerial.read(17), DMXSerial.read(18));
strip1.setPixelColor(34, DMXSerial.read(16), DMXSerial.read(17), DMXSerial.read(18));
strip1.setPixelColor(35, DMXSerial.read(16), DMXSerial.read(17), DMXSerial.read(18));
strip1.setPixelColor(36, DMXSerial.read(19), DMXSerial.read(20), DMXSerial.read(21));
strip1.setPixelColor(37, DMXSerial.read(19), DMXSerial.read(20), DMXSerial.read(21));
strip1.setPixelColor(38, DMXSerial.read(19), DMXSerial.read(20), DMXSerial.read(21));
strip1.setPixelColor(39, DMXSerial.read(19), DMXSerial.read(20), DMXSerial.read(21));
strip1.setPixelColor(40, DMXSerial.read(19), DMXSerial.read(20), DMXSerial.read(21));
strip1.setPixelColor(41, DMXSerial.read(19), DMXSerial.read(20), DMXSerial.read(21));
strip1.setPixelColor(42, DMXSerial.read(22), DMXSerial.read(23), DMXSerial.read(24));
strip1.setPixelColor(43, DMXSerial.read(22), DMXSerial.read(23), DMXSerial.read(24));
strip1.setPixelColor(44, DMXSerial.read(22), DMXSerial.read(23), DMXSerial.read(24));
strip1.setPixelColor(45, DMXSerial.read(22), DMXSerial.read(23), DMXSerial.read(24));
strip1.setPixelColor(46, DMXSerial.read(22), DMXSerial.read(23), DMXSerial.read(24));
strip1.setPixelColor(47, DMXSerial.read(22), DMXSerial.read(23), DMXSerial.read(24));
strip1.setPixelColor(48, DMXSerial.read(25), DMXSerial.read(26), DMXSerial.read(27));
strip1.setPixelColor(49, DMXSerial.read(25), DMXSerial.read(26), DMXSerial.read(27));
strip1.setPixelColor(50, DMXSerial.read(25), DMXSerial.read(26), DMXSerial.read(27));
strip1.setPixelColor(51, DMXSerial.read(25), DMXSerial.read(26), DMXSerial.read(27));
strip1.setPixelColor(52, DMXSerial.read(25), DMXSerial.read(26), DMXSerial.read(27));
strip1.setPixelColor(53, DMXSerial.read(25), DMXSerial.read(26), DMXSerial.read(27));
strip1.setPixelColor(54, DMXSerial.read(28), DMXSerial.read(29), DMXSerial.read(30));
strip1.setPixelColor(55, DMXSerial.read(28), DMXSerial.read(29), DMXSerial.read(30));
strip1.setPixelColor(56, DMXSerial.read(28), DMXSerial.read(29), DMXSerial.read(30));
strip1.setPixelColor(57, DMXSerial.read(28), DMXSerial.read(29), DMXSerial.read(30));
strip1.setPixelColor(58, DMXSerial.read(28), DMXSerial.read(29), DMXSerial.read(30));
strip1.setPixelColor(59, DMXSerial.read(28), DMXSerial.read(29), DMXSerial.read(30));
strip1.show(); //Send to pixels.
} else {
// Show red on 3 first pixels when no data was received since 5 seconds or more.
strip1.setPixelColor(0, red);
strip1.setPixelColor(1, red);
strip1.setPixelColor(2, red);
strip1.show();
}
}