Прерывания работают странно
- Войдите на сайт для отправки комментариев
Вс, 17/08/2014 - 16:12
Здравствуйте!
Подцепил кнопку на пин #2 и GND. Код такой:
//
// светодиод, подключённый к digital pin 13 будет изменять своё
// состояние при изменении напряжения на digital pin 2
//
int pin = 13;
volatile int state = LOW;
void setup()
{
pinMode(pin, OUTPUT); // порт как выход
attachInterrupt(0, blink, CHANGE); // привязываем 0-е прерывание к функции blink().
Serial.begin(9600);
}
void loop()
{
digitalWrite(pin, state); // выводим state
}
void blink()
{
state = !state; // меняем значение на противоположное
Serial.println(state);
}
И происходит странная вещь. При ненажатой кнопке в монитор порта сыпится 0 1 по переменке бесконечно. ЛЕД светится в пол-силы, понятно, что это самодельный ШИМ) Но при нажатии кнопки, вывод прекращается и диод тухнет вообще или загорается в полную силу, в мониторе висит соответственно 0 или 1. Величина при "зависании" колеблется от включения\выключения ардуинки. Пробовал подтягивать через 1к и к земле, и к vcc - ничего не меняется
А подтягивать резистором кнопку на плюс кто будет ? Такие элементариные вещи-то надо знать...
И вообще смысл в этом скетче ? зачем прерывание ?
Во-первых, цитата - "Пробовал подтягивать через 1к и к земле, и к vcc - ничего не меняется".
Во-вторых, я нашел причину)) Сам очень тупанул, извиняюсь за беспокойство.
В-третьих, это скетч для тестирования прерываний. Сам не представляю, зачем здесь прерывания.