#define PinIN1 14 // PinIN[1] Input digital 1
#define PinIN2 12 // PinIN[2] Input digital 2
#define PinIN3 13 // PinIN[3] Input digital 3
#define PinIN4 5 // PinIN[4] Input digital 4
uint8_t PinIN[5] {0, PinIN1, PinIN2, PinIN3, PinIN4};
uint64_t timeIntPin[5];
bool valIn[5];
bool valInLast[5];
void intPin1(){
valIn[1] = digitalRead(PinIN[1]);
if (timeIntPin[1] < millis() && valIn[1] != valInLast[1]) {
Serial.println("1 Val " + String(valIn[1]));
valInLast[1] = valIn[1];
timeIntPin[1] = millis() + 5;
}
}
void intPin2(){
valIn[2] = digitalRead(PinIN[2]);
if (timeIntPin[2] < millis() && valIn[2] != valInLast[2]) {
Serial.println("2 Val " + String(valIn[2]));
valInLast[2] = valIn[2];
timeIntPin[2] = millis() + 5;
}
}
void intPin3(){
valIn[3] = digitalRead(PinIN[3]);
if (timeIntPin[3] < millis() && valIn[3] != valInLast[3]) {
Serial.println("3 Val " + String(valIn[3]));
valInLast[3] = valIn[3];
timeIntPin[3] = millis() + 5;
}
}
void intPin4(){
valIn[4] = digitalRead(PinIN[4]);
if (timeIntPin[4] < millis() && valIn[4] != valInLast[4]) {
Serial.println("4 Val " + String(valIn[4]));
valInLast[4] = valIn[4];
timeIntPin[4] = millis() + 5;
}
}
void setup() {
// put your setup code here, to run once:
Serial.begin(115200);
for(int i = 1; i < 5; i++){
pinMode(PinIN[i], INPUT_PULLUP);
}
//if (digitalPinToInterrupt(PinIN[3])) Serial.println("Pin " + String(PinIN[3]));
attachInterrupt(PinIN[1], intPin1, CHANGE);
attachInterrupt(PinIN[2], intPin2, CHANGE);
attachInterrupt(PinIN[3], intPin3, CHANGE);
attachInterrupt(PinIN[4], intPin4, CHANGE);
Serial.println("Hello, ESP32!");
}
void loop() {
// put your main code here, to run repeatedly:
delay(10); // this speeds up the simulation
}