the following code works fine if I have the line
const int INTERRUPT_PIN_[] = {0, 18, 19, 2, 3};
but when I change that line to
const int INTERRUPT_PIN_[] = {0, 18, 19, 20, 21};
then the 2 buttons that correspond to pins 20 and 21 achieve nothing ant ISR code for those buttons doesn’t fire.
I have eliminated everything I can think of including swapping out all the hardware including the ARDUINO
const int LED_PIN_[] = {0, 43, 45, 47, 49};
const int DEBOUNCE_DELAY = 150; // the debounce time; increase if the output flickers
const int INTERRUPT_PIN_[] = {0, 18, 19, 20, 21};
const int BUTTON_PIN_OUT_[] = {0, 31,33,35,37, 39};
//int lastSteadyState[] = {LOW, LOW, LOW, LOW, LOW};
//int lastFlickerableState[] = {LOW, LOW, LOW, LOW, LOW};
//int currentState[5];
volatile byte ledState_[] = {LOW, LOW, LOW, LOW,LOW};
unsigned long lastDebounceTime[] = {0, 0, 0, 0, 0};
int ii[5];
int ij[5];
void setup() {
for (int button = 1 ; button < 5 ; button++)
{
pinMode(LED_PIN_[button], OUTPUT);
pinMode(BUTTON_PIN_OUT_[button], OUTPUT);
pinMode(INTERRUPT_PIN_[button], INPUT_PULLUP);
digitalWrite(BUTTON_PIN_OUT_[button], LOW);
}
Serial.begin(9600); Serial.println("Start up");
//
attachInterrupt(digitalPinToInterrupt(INTERRUPT_PIN_[1]), BtnBounce_1, RISING);
attachInterrupt(digitalPinToInterrupt(INTERRUPT_PIN_[2]), BtnBounce_2, RISING);
attachInterrupt(digitalPinToInterrupt(INTERRUPT_PIN_[3]), BtnBounce_3, RISING);
attachInterrupt(digitalPinToInterrupt(INTERRUPT_PIN_[4]), BtnBounce_4, RISING);
}
void loop() {
}
void BtnBounce_1() {
int button = 1;
ii[button] += 1;
// Serial.print("button_1 Hit");Serial.print(lastDebounceTime[button]); Serial.print("--"); Serial.print( millis());Serial.print("--");Serial.println( millis() - lastDebounceTime[button]);
if ((millis() - lastDebounceTime[button]) > DEBOUNCE_DELAY) {
ij[button] += 1;
// Serial.print("in Here"); Serial.print(ii[button]); Serial.print("--"); Serial.println(ij[button]);
lastDebounceTime[button] = millis();
ledState_[button] = !ledState_[button];
digitalWrite(LED_PIN_[button], ledState_[button]);
}
}
void BtnBounce_2() {
int button = 2;
ii[button] += 1;
// Serial.print("button_2 Hit");Serial.print(lastDebounceTime[button]); Serial.print("--"); Serial.print( millis());Serial.print("--");Serial.println( millis() - lastDebounceTime[button]);
if ((millis() - lastDebounceTime[button]) > DEBOUNCE_DELAY) {
ij[button] += 1;
// Serial.print("in Here"); Serial.print(ii[button]); Serial.print("--"); Serial.println(ij[button]);
lastDebounceTime[button] = millis();
ledState_[button] = !ledState_[button];
digitalWrite(LED_PIN_[button], ledState_[button]);
}
}
void BtnBounce_3() {
int button = 3;
ii[button] += 1;
// Serial.print("button_3 Hit");Serial.print(lastDebounceTime[button]); Serial.print("--"); Serial.print( millis());Serial.print("--");Serial.println( millis() - lastDebounceTime[button]);
if ((millis() - lastDebounceTime[button]) > DEBOUNCE_DELAY) {
ij[button] += 1;
// Serial.print("in Here"); Serial.print(ii[button]); Serial.print("--"); Serial.println(ij[button]);
lastDebounceTime[button] = millis();
ledState_[button] = !ledState_[button];
digitalWrite(LED_PIN_[button], ledState_[button]);
}
}
void BtnBounce_4() {
int button = 4;
ii[button] += 1;
// Serial.print("button_4 Hit");Serial.print(lastDebounceTime[button]); Serial.print("--"); Serial.print( millis());Serial.print("--");Serial.println( millis() - lastDebounceTime[button]);
if ((millis() - lastDebounceTime[button]) > DEBOUNCE_DELAY) {
ij[button] += 1;
// Serial.print("in Here"); Serial.print(ii[button]); Serial.print("--"); Serial.println(ij[button]);
lastDebounceTime[button] = millis();
ledState_[button] = !ledState_[button];
digitalWrite(LED_PIN_[button], ledState_[button]);
}
}
Guessing I might have missed something that turns pins 20 & 21 to interrupt pins, but I cant see what it is, any help appreciated