Won't let me post it yet because i'm new here or atleast posting here anyway I'll do it this way...
#include <DMXSerial.h>
#include <EEPROM.h>
#include <TM1637Display.h>
#define CLK 3
#define DIO 4
#define UP 7
#define DN 8
TM1637Display display(CLK, DIO);
long previousMillis = 0;
long interval = 8000;
int X = (EEPROM.read(0)+ EEPROM.read(1));
int pres = 0;
const uint8_t d[] = { SEG_B | SEG_C | SEG_D | SEG_E | SEG_G };
int ch = 4;
#define D DMXSerial.read(X+4)
#define R DMXSerial.read(X)
#define G DMXSerial.read(X+1)
#define B DMXSerial.read(X+2)
#define S DMXSerial.read(X+3)
void setup() {
DMXSerial.init(DMXReceiver);
display.setBrightness(6);
pinMode (7,INPUT);
pinMode (8,INPUT);
pinMode (9,OUTPUT);
pinMode (10,OUTPUT);
pinMode (11,OUTPUT);
display.clear();
}
void loop() {
if (S > 0) {
analogWrite (9, R);
analogWrite (10,G);
analogWrite (11,B);
delay(285-S);
analogWrite (9, 0);
analogWrite (10,0);
analogWrite (11,0);
delay(285-S);
}
else {
analogWrite (9, R);
analogWrite (10,G);
analogWrite (11,B);
}
unsigned long currentMillis = millis();
if (currentMillis - previousMillis > interval){ display.clear(); }
else { display.setSegments(d,1,0);
display.showNumberDec(X,false,3,1); }
if (digitalRead(UP)==1) {
if (pres==0){
X++;
pres=1;
previousMillis = currentMillis;
delay (100); }
else { pres=0; }}
if (digitalRead(DN)==1) {
if (pres==0){
X--;
pres=1;
previousMillis = currentMillis;
delay (100); }
else { pres=0; }}
if (X > 512-(ch)) {X=1;}
if (X < 1) {X=512-(ch);}
EEPROM.write(0,highByte(X));
EEPROM.write(1,lowByte(X));
}