#include // Константы выходных пинов const int RedPin = 9; // Пин для красного const int GreenPin = 6; // Пин для зеленого const int BluePin = 5; // Пин для синего void setup(void) { DMXSerial.init(DMXController); pinMode(RedPin, OUTPUT); pinMode(GreenPin, OUTPUT); pinMode(BluePin, OUTPUT); analogWrite(RedPin, 80); analogWrite(GreenPin, 80); analogWrite(BluePin, 80); } //Установка значений для 3 каналов RGB с указанным оттенком (0...764) void setChannelRGB(int channel, int hue) { hue = hue % 765; if (hue < 256) { /// От синего к красному DMXSerial.write(channel , hue); DMXSerial.write(channel+1, 0); DMXSerial.write(channel+2, 255-hue); } else if (hue < 511) { /// От красного до зеленого DMXSerial.write(channel , 255 - (hue-255)); DMXSerial.write(channel+1, hue-255); DMXSerial.write(channel+2, 0); } else { /// От зеленого к синему DMXSerial.write(channel , 0); DMXSerial.write(channel+1, 255 - (hue-510)); DMXSerial.write(channel+2, hue-510); } // if } // setChannelRGB() void loop(void) { unsigned long now = millis(); int channeldmx= 1; int alpha = (now / 12) % 765; for (int n = 0; n < 20; n++) { setChannelRGB (n*3+1, alpha + n*64); } analogWrite(RedPin, DMXSerial.read(channeldmx+0)); analogWrite(GreenPin, DMXSerial.read(channeldmx+1)); analogWrite(BluePin, DMXSerial.read(channeldmx+2)); }