Убрать 1 импульс из серии импульсов

Buldakov
Offline
Зарегистрирован: 17.01.2016

Входная частота от 1 до 2000 Гц. Подается на вход Arduino. Необходимо на выходе получить частоту равную входной деленной на 1,01. Как вариант необходимо пропускать на выход входные импульсы, но каждый сотый пропускать. Длительность выходного импульса должна задаваться в диапазоне от 100 до 1000 мкс.

Просьба подсказать сам алгоритм, или ссылку о том где об этом почитать.

dimax
dimax аватар
Offline
Зарегистрирован: 25.12.2013
sadman41
Offline
Зарегистрирован: 19.10.2016

Если именно пропускать N-ый символ, то, к примеру так: вешаемся на прерывание по изменению. Выходом манипулируем в соответствии с состоянием входа. Так же заводим там счётчик, который при достижении K обнуляем. При значении счётчика равном K-1 и K выход не изменяем. Вопрос о том, как соотносятся N и K остаётся домашним заданием.

Buldakov
Offline
Зарегистрирован: 17.01.2016

Вот что получилось. Спасибо.

bool in_old,in_new;
int k,p,t;
void setup()
{pinMode(7, INPUT);  
digitalWrite(7, HIGH); 
pinMode(13, OUTPUT); 
k=0;p=100;}
void loop()
{in_new = digitalRead(7);
if (in_new==1 && in_old==0) k=k+1;
if (in_new==1 && in_old==0 && k<p ) {digitalWrite(13,0);digitalWrite(13,1);delayMicroseconds(100);digitalWrite(13,0);}
if (in_new==1 && in_old==0 && k==p) digitalWrite(13,0);
if (in_new==1 && in_old==0 && k>=p) k=0;
in_old=in_new;}