Я попытался сделать перерыв в моем arduino uno борту, подключенные правильно подключены, но я не знаю, что не так с кодом. Я хочу, чтобы led1 был работающий по умолчанию, и когда я нажимаю кнопку переключателя, он останавливает работу светодиода1 и начинает делать цикл для led2. Я проверил код несколько раз, и я до сих пор не знаю ошибку в кодеarduino uno код прерывания 2 светодиода 1 переключатель
int led1 = 13;
int led2 = 12;
int button=0;
boolean x = false ;
void setup()
{
pinMode(led1, OUTPUT);
pinMode(led2, OUTPUT);
pinMode(button, INPUT);
attachInterrupt(button, ledchange , CHANGE);
}
void loop()
{
digitalWrite(led1, HIGH); // turn the LED on (HIGH is the voltage level)
//delay(1000); // wait for 1000 melli-second
}
void ledchange()
{
x=true;
digitalWrite(led1,LOW);
for (int i=0 ; i<=5 ; i++)
{
digitalWrite(led2,HIGH);
delay(1000);
digitalWrite(led2,LOW);
delay(1000);
}
}
любые предложения?
не использовать 'delay()' в ISR. –
Вы используете D2, а не D0? – mpflaga
И как общий принцип, не делайте длинных вещей в ISR. Лучше всего установить/очистить флаг, а затем проверить флаг в своем основном цикле. – Greycon