Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include "DMXSerial.h"
- #define ch1Switch A0
- #define ch2Switch A1
- #define pot A2
- #define dmx 0
- #define relais1 5
- #define relais2 6
- int dmxChannel1 = 255;
- int dmxChannel2 = 256;
- const int chLEDs[] = {2, 3, 4, 7, 8, 9, 10, 11, 12};
- bool switchChannelLights = true;
- int bin1[8];
- int bin2[8];
- unsigned long now = 0;
- int ledChangeDelay = 1000;
- void setup() {
- DMXSerial.init(DMXReceiver);
- pinMode(ch1Switch, INPUT);
- pinMode(ch2Switch, INPUT);
- for (int i = 0; i < sizeof(chLEDs) / sizeof(int); i++) {
- pinMode(chLEDs[i], OUTPUT);
- }
- }
- int currentLEDState = 1;
- void loop() {
- int switch1 = analogRead(ch1Switch);
- int switch2 = analogRead(ch2Switch);
- if (switch1 == HIGH && switch2 == HIGH) {
- // Both are in edit mode
- switchChannelLights = false;
- dmxChannel1 = analogRead(pot);
- dmxChannel2 = dmxChannel1;
- for (int i = 8; i >= 0; i--) {
- int k = dmxChannel1 >> i;
- if (k & 1) {
- bin1[i] = 1;
- } else {
- bin1[i] = 0;
- }
- }
- bin2[8] = bin1[8];
- for (int i = 0; i < 8; i++) {
- digitalWrite(chLEDs[i], bin1[i]);
- }
- } else if (switch1 == HIGH && switch2 == LOW) {
- // Switch1 is in edit mode
- switchChannelLights = false;
- dmxChannel1 = analogRead(pot);
- for (int i = 8; i >= 0; i--) {
- int k = dmxChannel1 >> i;
- if (k & 1) {
- bin1[i] = 1;
- } else {
- bin1[i] = 0;
- }
- }
- for (int i = 0; i < 8; i++) {
- digitalWrite(chLEDs[i], bin1[i]);
- }
- } else if (switch1 == LOW && switch2 == HIGH) {
- // Switch2 is in edit mode
- switchChannelLights = false;
- dmxChannel2 = analogRead(pot);
- for (int i = 8; i >= 0; i--) {
- int k = dmxChannel2 >> i;
- if (k & 1) {
- bin2[i] = 1;
- } else {
- bin2[i] = 0;
- }
- }
- for (int i = 0; i < 8; i++) {
- digitalWrite(chLEDs[i], bin2[i]);
- }
- } else {
- // None are in edit mode
- switchChannelLights = true;
- for (int i = 0; i < 8; i++) {
- digitalWrite(chLEDs[i], bin1[i]);
- }
- currentLEDState = 1;
- if (millis() > now + ledChangeDelay) {
- now = millis();
- if (currentLEDState == 1) {
- currentLEDState = 2;
- for (int i = 0; i < 8; i++) {
- digitalWrite(chLEDs[i], bin2[i]);
- }
- } else {
- currentLEDState = 1;
- for (int i = 0; i < 8; i++) {
- digitalWrite(chLEDs[i], bin1[i]);
- }
- }
- }
- }
- unsigned long lastPacket = DMXSerial.noDataSince();
- int threshold = 127;
- if (lastPacket < 5000) {
- int state1 = DMXSerial.read(dmxChannel1);
- int state2 = DMXSerial.read(dmxChannel2);
- digitalWrite(relais1, state1 > threshold);
- digitalWrite(relais2, state2 > threshold);
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement