#define txEnable 2
#define K1 3
#define K2 4
#define K3 5
#define K4 6
#define K5 7
#define K6 8
#define K7 9
#define K8 10
const byte dip[] = {14, 15, 16, 17, 18};
int bin;
int Relay_1;
int Relay_2;
int Relay_3;
int Relay_4;
int Relay_5;
int Relay_6;
int Relay_7;
int Relay_8;
int address;
char data[64] = {0};
int y100;
int y200;
int y300;
int commandEStop = 91;
int typeIdent = 325;
// Timer_1 variables
int state;
unsigned int a;
int blink;
long offTime = 1000;
long onTime = 1000;
unsigned long previousMillis;
unsigned long currentMillis;
void setup() {
pinMode(K1, OUTPUT);
pinMode(K2, OUTPUT);
pinMode(K3, OUTPUT);
pinMode(K4, OUTPUT);
pinMode(K5, OUTPUT);
pinMode(K6, OUTPUT);
pinMode(K7, OUTPUT);
pinMode(K8, OUTPUT);
digitalWrite(K1, LOW);
digitalWrite(K2, LOW);
digitalWrite(K3, LOW);
digitalWrite(K4, LOW);
digitalWrite(K5, LOW);
digitalWrite(K6, LOW);
digitalWrite(K7, LOW);
digitalWrite(K8, LOW);
pinMode(dip[0], INPUT_PULLUP);
pinMode(dip[1], INPUT_PULLUP);
pinMode(dip[2], INPUT_PULLUP);
pinMode(dip[3], INPUT_PULLUP);
pinMode(dip[4], INPUT_PULLUP);
delay(1000);
Serial.begin(9600);
previousMillis = 0;
currentMillis = millis();
a = HIGH;
bin = 101;
if(digitalRead(dip[0]) == LOW) {
bin = bin + 1;
}
delay(10);
if(digitalRead(dip[1]) == LOW) {
bin = bin + 2;
}
delay(10);
if(digitalRead(dip[2]) == LOW) {
bin = bin + 4;
}
delay(10);
if(digitalRead(dip[3]) == LOW) {
bin = bin + 8;
}
delay(10);
if(digitalRead(dip[4]) == LOW) {
bin = bin + 16;
}
delay(10);
address = bin;
Serial.print(address);
Serial.print(",");
Serial.println(typeIdent);
y200 = 0;
}
void loop() {
timer_1();
getSerialData();
relay();
while(y200 == commandEStop) {
digitalWrite(K1, LOW);
digitalWrite(K2, LOW);
digitalWrite(K3, LOW);
digitalWrite(K4, LOW);
digitalWrite(K5, LOW);
digitalWrite(K6, LOW);
digitalWrite(K7, LOW);
digitalWrite(K8, LOW);
y200 = commandEStop;
digitalWrite(LED_BUILTIN, HIGH);
delay(500);
digitalWrite(LED_BUILTIN, LOW);
delay(500);
}
}
void getSerialData() {
byte n = Serial.available();
if (n != 0) {
byte m = Serial.readBytesUntil('\n', data, 64);
data[m] = '\0'; //null-byte
y100 = atoi(strtok(data, ","));
y200 = atoi(strtok(NULL, ","));
y300 = atoi(strtok(NULL, ","));
if(y100 = address) {
if(y200 == 0) {
}
else if(y200 == commandEStop) {
digitalWrite(K1, LOW);
digitalWrite(K2, LOW);
digitalWrite(K3, LOW);
digitalWrite(K4, LOW);
digitalWrite(K5, LOW);
digitalWrite(K6, LOW);
digitalWrite(K7, LOW);
digitalWrite(K8, LOW);
}
else if(y200 == 1) {
Relay_1 = y300;
}
else if(y200 == 2) {
Relay_2 = y300;
}
else if(y200 == 3) {
Relay_3 = y300;
}
else if(y200 == 4) {
Relay_4 = y300;
}
else if(y200 == 5) {
Relay_5 = y300;
}
else if(y200 == 6) {
Relay_6 = y300;
}
else if(y200 == 7) {
Relay_7 = y300;
}
else if(y200 == 8) {
Relay_8 = y300;
}
}
}
}
void relay() {
if(y200 != commandEStop) {
if(Relay_1 == 1) {
digitalWrite(K1, LOW);
}
else if(Relay_1 == 2) {
digitalWrite(K1, HIGH);
}
else if(Relay_1 == 3) {
if(blink == 1) {
digitalWrite(K1, HIGH);
}
else if(blink == 0) {
digitalWrite(K1, LOW);
}
}
if(Relay_2 == 1) {
digitalWrite(K2, LOW);
}
else if(Relay_2 == 2) {
digitalWrite(K2, HIGH);
}
else if(Relay_2 == 3) {
if(blink == 1) {
digitalWrite(K2, HIGH);
}
else if(blink == 0) {
digitalWrite(K2, LOW);
}
}
if(Relay_3 == 1) {
digitalWrite(K3, LOW);
}
else if(Relay_3 == 2) {
digitalWrite(K3, HIGH);
}
else if(Relay_3 == 3) {
if(blink == 1) {
digitalWrite(K3, HIGH);
}
else if(blink == 0) {
digitalWrite(K3, LOW);
}
}
if(Relay_4 == 1) {
digitalWrite(K4, LOW);
}
else if(Relay_4 == 2) {
digitalWrite(K4, HIGH);
}
else if(Relay_4 == 3) {
if(blink == 1) {
digitalWrite(K4, HIGH);
}
else if(blink == 0) {
digitalWrite(K4, LOW);
}
}
if(Relay_5 == 1) {
digitalWrite(K5, LOW);
}
else if(Relay_5 == 2) {
digitalWrite(K5, HIGH);
}
else if(Relay_5 == 3) {
if(blink == 1) {
digitalWrite(K5, HIGH);
}
else if(blink == 0) {
digitalWrite(K5, LOW);
}
}
if(Relay_6 == 1) {
digitalWrite(K6, LOW);
}
else if(Relay_6 == 2) {
digitalWrite(K6, HIGH);
}
else if(Relay_6 == 3) {
if(blink == 1) {
digitalWrite(K6, HIGH);
}
else if(blink == 0) {
digitalWrite(K6, LOW);
}
}
if(Relay_7 == 1) {
digitalWrite(K7, LOW);
}
else if(Relay_7 == 2) {
digitalWrite(K7, HIGH);
}
else if(Relay_7 == 3) {
if(blink == 1) {
digitalWrite(K7, HIGH);
}
else if(blink == 0) {
digitalWrite(K7, LOW);
}
}
if(Relay_8 == 1) {
digitalWrite(K8, LOW);
}
else if(Relay_8 == 2) {
digitalWrite(K8, HIGH);
}
else if(Relay_8 == 3) {
if(blink == 1) {
digitalWrite(K8, HIGH);
}
else if(blink == 0) {
digitalWrite(K8, LOW);
}
}
}
else if(y200 == commandEStop) {
digitalWrite(K1, LOW);
digitalWrite(K2, LOW);
digitalWrite(K3, LOW);
digitalWrite(K4, LOW);
digitalWrite(K5, LOW);
digitalWrite(K6, LOW);
digitalWrite(K7, LOW);
digitalWrite(K8, LOW);
}
}
void timer_1() {
currentMillis = millis();
if ((a == HIGH) && (currentMillis - previousMillis >= offTime)) {
a = LOW;
previousMillis = currentMillis;
blink = 1;
}
else if((a == LOW) && (currentMillis - previousMillis >= onTime)) {
a = HIGH;
previousMillis = currentMillis;
blink = 0;
}
}