Вложений: 1
Re: а есть ли у ардуино прерывания?
Привожу два примера прерываний.
Ниже пример кода для Arduino, прерывание по таймеру
В этом примере процедура flash_led будет выполнятся каждый раз по истечению 0,5 сек.
PHP код:
//Выполнение процедуры по прерыванию таймеру.
#include <MsTimer2.h>
static boolean output = HIGH;
void flash_led() //обработчик прерывания
{
digitalWrite(13, (output==HIGH) ? output=LOW : output=HIGH);
}
void setup() {
pinMode(13, HIGH);
MsTimer2::set(500, flash_led); // 500ms период
MsTimer2::start(); //включить таймер
}
void loop()
{
//.....
}
Еще один пример работы аппаратного прерывания.
В данном примере при изменении напряжения на ножке D2
каждый раз будет выполнятся процедура int_on
Таких входов в Arduino всего 2 (D2,D3)
И несколько вариантов настройки событий
LOW - to trigger the interrupt whenever the pin is low,
CHANGE - to trigger the interrupt whenever the pin changes value
RISING - to trigger when the pin goes from low to high,
FALLING - for when the pin goes from high to low.
PHP код:
#define PinA 2
static boolean output = HIGH;
void setup()
{
pinMode(PinA, INPUT);
digitalWrite(PinA, HIGH); // подключить подтягивающий резистор
attachInterrupt(0, int_on, CHANGE); // настроить прерывание interrupt 0 на pin 2
}
void loop()
{
//........
}
// обработка прерывания
void int_on()
{
digitalWrite(13, (output==HIGH) ? output=LOW : output=HIGH);
}
Re: Прерывания в Arduino.
а не в курсе, случаем, есть возможности дернуть сигнал откуда-нибудь о достижении скорости километров в 20? или все же придется импульсы с датчика скорости считать? приятнее было бы че-нить с уровнем 0 и 1. двиг 2AZ-FE, на камри в частности ставится. понимаю, что управление меняется и от модели и от года, но вдруг есть наколки какие
Re: Прерывания в Arduino.
Акселерометр использовать.
Re: Прерывания в Arduino.
я бы рекомендовал либо GPS либо с датчика скорости. С датчика скорости просто импульсы идут. Напрягает больше всего то, что надо провода тащить, а обработать импульсы совсем просто.
Re: Прерывания в Arduino.
да там проводов-то... метр в салоне. буду щщитать
Re: Прерывания в Arduino.
кстати, о птичках. а сколько примерно длиться цикл с инкрементом и парой проверок? на атмеге 16-20Мгц. чтоб поменьше гадать
Re: Прерывания в Arduino.
Дергай ногой в начале цикла, и на осциллографе посмотри.
Все зависит от числа выполняемых инструкций и количества тактов на конкретную инструкцию.
Re: Прерывания в Arduino.
че-то я тупею, что ли, к старости :mad:
не смог добавить внешние модули в скеч, MsTimer2.h и MsTimer2.с
не, вписать абсолютный путь, типа include "d:\arduino\include\MsTimer2.h" ума, конечно, хватило, только и в MsTimer2.cpp, пришлось тоже путь менять, как-то некрасиво.
бросить просто в папку скеча тоже не получилось
куда положено раскидывать сторонние библиотеки или как добавить путь для них?
в ...hardware\tools\avr\avr\include тоже как-то не очень, там все-таки стандартные хидеры лежат.
самое простое -- держать в папке скеча, а не цепляет. почему?