Прерывания работают странно
- Войдите на сайт для отправки комментариев
Вс, 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 - ничего не меняется".
Во-вторых, я нашел причину)) Сам очень тупанул, извиняюсь за беспокойство.
В-третьих, это скетч для тестирования прерываний. Сам не представляю, зачем здесь прерывания.