// https://forum.arduino.cc/t/nano-classic-to-nano-every-sketch-compiling-issues/1458406
const int rel[] = {8, 9, 10, 11}, led[] = {4, 5, 6, 7}, enc[] = {2, 3};
volatile bool ISRflag = 0, datapin; // used inside ISR
int input = 0; // input selector
void setup() {
for (int i = 4; i < 12; i++) // all relays ans leds...
pinMode(i, OUTPUT); // set to OUTPUT
pinMode(enc[0], INPUT); //pin 2 ENC CLK
pinMode(enc[1], INPUT); //pin 3 ENC DAT
bool relstate[] = {1, 0, 0, 0}; // set relays
bool ledstate[] = {1, 0, 0, 0}; // lset leds
for (int i = 0; i < 4; i++) { // all OFF
digitalWrite(led[i], relstate[i]);
digitalWrite(rel[i], ledstate[i]);
}
attachInterrupt(digitalPinToInterrupt(enc[1]), ISRfunction, FALLING);
}
void ISRfunction() {
ISRflag = 1;
datapin = digitalRead(enc[0]); // read data pin state
}
void loop() {
if (ISRflag) {
delay(100); // debounce
if (datapin == HIGH) {
input++;
if (input > 3)
input = 3;
}
if (datapin == LOW) {
input--;
if (input < 0)
input = 0;
}
for (int i = 0; i < 4; i++) {
digitalWrite(led[i], LOW); // leds off
digitalWrite(rel[i], LOW); // relays off
}
digitalWrite(led[input], HIGH); // selected led ON
digitalWrite(rel[input], HIGH); // selected relay ON
ISRflag = 0; // reset ISR flag
}
}