Прерывание — это сообщение Ардуине, что нужно выполнить вашу подпрограмму!
Для этого используются 2е функции
Вкл. обработку прерываний attachInterrupt(interrupt, function, mode)
Выкл. прерывание detachInterrupt(interrupt)
Начнем с обработки прерывания: attachInterrupt(interrupt, function, mode) — Функция указывает какую функцию вызывать при Прерывании.
Параметры: interrupt — Arduino имеют два внешних прерывания с номерами 0 и 1, находятся они на 2 и 3 цифровом входе (digital pin) соответственно. Этот параметр отвечает именно за выбор какой из пинов выбрать для прерывания.
function — указываем функцию которая будет вызываться про прерывании. Функция должна быть без параметров и не возвращать ни каких данных.
mode — Определяет 4 вида прерывания: LOW вызов, когда на порту низкий уровень напряжения CHANGE вызывается при изменении значения на входе RISING вызов при изменении уровня напряжения с низкого (LOW) на высокое(HIGH) FALLING вызов при изменении уровня напряжения с высокого (HIGH) на низкое (LOW)
/* Запускаем серво-машинку по прерыванию */
int ServoPin = 3; //управляющий выход для сервы
int in_4 = 4; // вход для первой кнопки
int in_5 = 5; // вход для второй кнопки
int step = 100; //среднее положение сервы
volatile int state = LOW;
void setup()
{
pinMode(ServoPin, OUTPUT);
pinMode(in_4, INPUT);
pinMode(in_5, INPUT);
attachInterrupt(0, gostep, CHANGE); // привязываем 0-е прерывание к функции gostep
}
void loop()
{
}
void gostep()
{
if(step > 700){step = 700;}
if(step < 600){step = 600;}
digitalWrite(ServoPin, HIGH);
delayMicroseconds(step);
digitalWrite(ServoPin, LOW);
delayMicroseconds(20000-step);
step -= 10;
state = !state; // меняем значение на противоположное
}
комментарии(0)
Комментировать