Добрый день.
Я тут решил нагрузить Arduino Nano v5 практической задачей и не могу понять - то ли я делаю что-то не так, то ли ардуино просто не справляется с задачей физически.
Что мы имеем? Имеем сигнал, показанный на картинке желтым цветом. Его амплитуда +20В - -20В. Сигнал преобразовывается оптроном и получается то, что показано голубым цветом. Амплитуда полученного сигнала +5В.
Вот этот сигнал я хочу считать с помощью ардуино и понять, что же именно закодировано. Кодирование 0 и 1 происходит длительностью импульса - на картинке видно.
И вот тут-то у меня затык. Как не бьюсь - ничего не выходит.
Алгоритм вроде бы простой:
1) контролируем состояние ноги - ноль там или единица
2) как только на ноге появился ноль, засекаем системное время
3) ждем, пока появится единица, второй раз засекаем время
4) ждем, пока появится ноль, третья засечка времени.
Потом определяем продолжительность нуля и продолжительность единицы. В теории, время должно приблизительно совпасть. И по значению определяем - ноль это был, или единица.
Так вот - НИФИГА НЕ ВЫХОДИТ. Замеренные значения интервалов пляшут как им угодно. Совершенно хаотично и без системы. Как бы я ни извращался - ни в лоб, ни через прерывания. Если нужен программный код - скажите, напишу. И значения могу тоже дать.....
Что я делаю не так? В чем проблема? У меня в руках, или просто ардуино не успевает обработать сигнал и поэтому выдает ошметки того, что успело "ухватить"?
Заранее спасибо.