attachInterrupt для mega 2560 не срабатывает

Недавно я купил mega 2560, чтобы поиграться с ним в качестве хобби. Пока что это довольно забавно, но недавно я застрял, пытаясь использовать attachInterrupt с кнопкой. Я использую режим CHANGE и довольно внимательно прочитал документацию (я думаю).

Я просмотрел множество вопросов и попытался исправить свои настройки, но у меня все равно не получается заставить их работать.

Вот мой код:

int buttonPin = 18;
int ledPin1 = 11;
int ledPin2 = 9;
int ledPin3 = 5;

int value = 0;

void setup() {
  //declare inputs and outputs
  pinMode(buttonPin,INPUT_PULLUP);
  pinMode(ledPin1,OUTPUT);
  pinMode(ledPin2,OUTPUT);
  pinMode(ledPin3,OUTPUT);

  //create interrupt for button
  attachInterrupt(digitalPinToInterrupt(5),count,CHANGE);

  Serial.begin(9600);
}

void loop(){
  if(value == 0){ digitalWrite(ledPin1,HIGH);}
  else{ digitalWrite(ledPin1,LOW); }

  if(value == 1){ digitalWrite(ledPin2,HIGH);}
  else{ digitalWrite(ledPin2,LOW); }

  if(value == 2){ digitalWrite(ledPin3,HIGH);}  
  else{ digitalWrite(ledPin3,LOW); }

  delay(500);
  Serial.print(digitalRead(buttonPin));

}

//count occurs when button is pressed
void count(){
  //incremement a counter
  value++;
  //reset counter from 3 to 0
  if(value >= 2){ value = 0; }
}

Это довольно простой набросок. Я бы приложил изображение моей текущей настройки, но не думаю, что это нужно. Кнопка действительно работает, так как я отлаживаю с помощью serial.print().

Если не ясно, цель скетча — изменить светодиод, загорающийся при нажатии кнопки. В настоящее время значение переменной застряло на 0.

, 👍0


1 ответ


Лучший ответ:

2
//create interrupt for button
attachInterrupt(digitalPinToInterrupt(5),count,CHANGE);

Код не соответствует комментарию.

attachInterrupt(digitalPinToInterrupt(buttonPin),count,CHANGE);
,