Re: Прерывания в Arduino.
Класть в папку со всеми библиотеками \arduino-0018\libraries\MsTimer2
Можно и без библиотеки сделать прерывание по таймеру
PHP код:
volatile unsigned int tcnt2;
void setup()
{
TIMSK2 &= ~(1<<TOIE2); //разрешения прерывания по переполнению таймера/счетчика Т2
TCCR2A &= ~((1<<WGM21) | (1<<WGM20));// Режим работы таймера/счетчика
TCCR2B &= ~(1<<WGM22);// Режим работы таймера/счетчика
ASSR &= ~(1<<AS2); //Выбор источника синхронизации таймера если AS2=0 от системного генератора
tcnt2 = 1; // 16000000/64/f=tcnt2
TIMSK2 |= (1<<TOIE2);//Разрешение прерывания по переполнению Т2.
}
void loop()
{
}
void MyInterupt()
{
//обработчик вашего прерывания
}
//****************обработчик прерывания********************
ISR(TIMER2_OVF_vect)
{
TCNT2 = tcnt2;
MyInterupt();
}
Re: Прерывания в Arduino.
а такие конструкци прокатывают?
....
attachInterrupt(0, MeasureSPD, RISING); //attaching intterrupt to pin D2
....
while (digitalRead(2)) i++;
я в сысле о том, можно ли привязать прерывание к ноге и потом считывать ее состояние?
Re: Прерывания в Arduino.
Не понял смысла? Если назначили прерывание на ногу то зачем состояние проверять? Прерывание и так сработает по изменению состояния
Re: Прерывания в Arduino.
да мне ж длительность имульса подсчитать. соответственно от старта и до упора.
или мож какой другой метод использовать, встроенный таймер там или еще что
Re: Прерывания в Arduino.
Для подсчета можно использовать следующие функции
unsigned long millis()
unsigned long micros()
Re: Прерывания в Arduino.
millis и micros не совсем то что надо. хотя мож и пойдет
надо прерывание делать на CHANGE и измерять типа micros(t2)-micros(t1).
я опасался ситуации, когда импульс начнется, а потом машина остановится и длина импульса уйдет в бесконечность. да черт с ней, вообще-то
Re: Прерывания в Arduino.
По-моему у всех машин несколько (от 5) импульсов на 1 метр пути. 1 метр в секунду - это 3.6 км/ч. Так что если тебе не надо отслеживать очень низкие скорости, достаточно считать импульсы. По любому прерыванию изменения состояния ноги увеличиваешь счетчик, а 1-3 раз в секунду считываешь этот счетчик и сразу обнуляешь.
И все, будет у тебя скорость, которую только надо на константу умножить.
Если надо точнее, чем 1 кмч, и/или низкие скорости, то напиши, у меня в голове вертится алгоритм, но он посложнее.
Re: Прерывания в Arduino.
не, мне 20кмч плюс-минус отловить. двери хочу закрывать. привык, а на альфарде нету закрывалки. наверное с микрос() сделаю
Re: Прерывания в Arduino.
static boolean output = HIGH;
Подскажите, а для чего используется эта строка ?
Re: Прерывания в Arduino.
для того чтобы на пине output включить логическую еденицу