Код (C++): int ledg=3; int ledy=4; int ledr=5; volatile int regim=1; void setup(){ pinMode(ledg,OUTPUT); pinMode(ledy,OUTPUT); pinMode(ledr,OUTPUT); attachInterrupt(0,value, RISING); } void value() { regim=regim+1; if(regim>3) { regim=1; } } void loop(){ switch(regim){ case 1: digitalWrite(ledg,HIGH); digitalWrite(ledy,LOW); digitalWrite(ledr,LOW); break; case 2: digitalWrite(ledy,HIGH); digitalWrite(ledg,LOW); digitalWrite(ledr,LOW); break; case 3: digitalWrite(ledr,HIGH); digitalWrite(ledy,LOW); digitalWrite(ledr,LOW); break; } }
Да все в порядке,при проверке он выделяет красным цветом "attachInterrupt(0,value, RISING);" и пишет : " 'value' was not declared in this scope",не пойму,что не так?
какая ардуина? У уно всяких ф-я работает только с 2 пинами, 2 и 3, вот табличка Board int.0 int.1 int.2 int.3 int.4 int.5 Uno, Ethernet 2 3 Mega2560 2 3 21 20 19 18 32u4 based (e.g Leonardo, Micro) 3 2 0 1 7 Due, Zero, MKR1000, 101 interrupt number = pin number Видимо тут attachInterrupt(0,value, RISING); 0 не нравится, попробуйте 2 или 3 , ну это если уно или однокласники.
Знаю. Когда появляется сообщение, что что-то не описано, это и не описано. В некоторых случаях это может быть из-за того, что какая-то синтаксическая ошибка до или после описания, или до этого "не описанного" . Это наш случай. Ну так как у вас с английским?
С английским у меня прекрасно. Парирую знаниями о трансляторах, но описывать все лень. Функцию можно описать хоть где и транслятор при проходе все сделает . Функция это не переменная. У нее нет строгого места описания. Кстати в данном случае функция описана после строки с вызовом. В любом случае сработала бы. По поводу этого. Не буду докапываться, но функция описана)
В общем неверное утверждение. В ide arduino - да, в любом профессиональном ide - Нет. Так что с трансляторами у вас также, как с английским.