Как работает счетчик импульсов на Arduino. Какие существуют варианты его реализации. Для чего может использоваться счетчик импульсов в проектах автоматизации и измерений. Как правильно подключить и настроить счетчик импульсов на Arduino.
Принцип работы счетчика импульсов на Arduino
Счетчик импульсов на Arduino представляет собой устройство для подсчета количества электрических импульсов, поступающих на вход микроконтроллера. Основные компоненты такого счетчика:
- Микроконтроллер Arduino
- Входная цепь для подключения источника импульсов
- Программный код для обработки и подсчета импульсов
- Дисплей или интерфейс для вывода результатов
Принцип работы счетчика импульсов на Arduino заключается в следующем:
- Импульсы поступают на цифровой вход Arduino
- Микроконтроллер отслеживает изменение состояния входа
- При обнаружении фронта импульса увеличивается счетчик
- Текущее значение счетчика выводится на дисплей или передается по интерфейсу
Для точного подсчета импульсов важно правильно настроить входную цепь и использовать прерывания микроконтроллера.

Варианты реализации счетчика импульсов на Arduino
Существует несколько вариантов реализации счетчика импульсов на базе Arduino:
Простой счетчик на одном входе
Самый простой вариант — подключение источника импульсов к цифровому входу Arduino и подсчет количества изменений состояния входа. Подходит для низкочастотных сигналов.
Счетчик с использованием прерываний
Более точный вариант — обработка импульсов по прерываниям. Позволяет считать высокочастотные импульсы без пропусков.
Многоканальный счетчик
Одновременный подсчет импульсов по нескольким входам Arduino. Требует более сложного кода, но позволяет создать многоканальную систему.
Счетчик с измерением частоты
Помимо подсчета количества импульсов, такой счетчик может измерять частоту входного сигнала. Требует точного измерения временных интервалов.
Применение счетчика импульсов на Arduino
Счетчик импульсов на Arduino может применяться во многих проектах автоматизации и измерений:
- Подсчет количества объектов на конвейере
- Измерение скорости вращения двигателей
- Учет расхода воды или электроэнергии
- Подсчет срабатываний датчиков
- Измерение частоты сигналов
- Тахометры и спидометры
Широкие возможности Arduino по обработке данных позволяют создавать на базе счетчика импульсов сложные измерительные системы.

Подключение счетчика импульсов к Arduino
Для подключения счетчика импульсов к Arduino необходимо:
- Выбрать подходящий цифровой вход (лучше с поддержкой прерываний)
- Подключить выход датчика или генератора импульсов к выбранному входу
- При необходимости использовать подтягивающий резистор
- Для высокочастотных сигналов может потребоваться входной формирователь
Важно обеспечить надежный контакт и защиту от помех при подключении источника импульсов к Arduino.
Программирование счетчика импульсов на Arduino
Основные этапы программирования счетчика импульсов на Arduino:
- Инициализация выбранного входа
- Настройка прерывания (при использовании)
- Создание переменной-счетчика импульсов
- Обработка входного сигнала и инкремент счетчика
- Вывод текущего значения счетчика
При программировании важно учитывать особенности входного сигнала и требования к точности подсчета импульсов.
Преимущества использования Arduino для счетчика импульсов
Использование Arduino для создания счетчика импульсов имеет ряд преимуществ:

- Простота реализации базовой функциональности
- Гибкость и возможность модификации под конкретную задачу
- Широкие возможности по обработке и анализу данных
- Удобство вывода информации на различные устройства
- Возможность объединения с другими модулями Arduino
Arduino позволяет быстро создать рабочий прототип счетчика импульсов и при необходимости расширить его функциональность.
Ограничения счетчика импульсов на Arduino
При создании счетчика импульсов на Arduino следует учитывать некоторые ограничения платформы:
- Ограниченная максимальная частота входных импульсов
- Возможные пропуски импульсов при высокой загрузке процессора
- Ограниченная точность измерения временных интервалов
- Необходимость дополнительных схем для работы с сигналами произвольной формы
Для создания прецизионных измерительных систем может потребоваться использование специализированных микроконтроллеров или дополнительных схем.
Подключаем Arduino к счетчику электроэнергии / Хабр
Нет, эта статья не об очередном способе обмануть этот злосчастный прибор. Здесь пойдет речь о том, как с помощью Arduino и среды LabView превратить свой счетчик электроэнергии в средство мониторинга потребляемой мощности или даже в амперметр!
Самый первый счетчик электроэнергии был индукционным. Принцип его работы до смешного прост — по сути это электродвигатель, ротором которого является алюминиевый диск, вращающий циферблат. Чем больше потребляемый ток- тем быстрее крутится диск. Устройство чисто аналоговое.
Однако сегодня индукционные счетчики сдают свои позиции, уступая место своим более дешевым электронным собратьям. И как раз один такой и станет подопытным:
Принцип работы не сильно изменился — в данном случае диск заменен электроникой, которая генерирует импульсы в соответствии с величиной потребляемой электроэнергии. Как правило, в большинстве приборов эти импульсы показывает светодиодный индикатор. Соответственно, чем быстрее мигает эта лампочка — тем больше сжигается драгоценных кВт.
— С каждым импульсом счетчик фиксирует потребление, равное 1/12800 части от 1 кВт*ч. Если включить к счетчику нагрузку и начать просто считать импульсы, то потом легко получить потребленное ею количество электроэнергии (кВт*ч), разделив количество импульсов на передаточное соотношение.
— Так как индикатор изменяет скорость своего моргания, то можно вывести зависимость между мощностью (кВт) и временем одного импульса счетчика, что позволит получить данные о мощности/токе.
Не будем загружать статью расчетами, но если нужно то
вот они
Воистину, передаточное число счетчика — великая вещь, так как зная ее можно выразить как мощность так и ток:
Здесь X — неизвестная мощность, а t — время одного импульса. Выражаем отсюда неизвестную мощность и вот оно:
Ток считается с применением следующей пропорции передаточных соотношений и токов известных и неизвестных при нагрузке X.:
Что в общем-то приводит к идентичной формуле, но для тока (ток измеряется в Амперах а индексы означают нагрузку, при которой будет данный ток):
Тут можно заметить подводный камень — нужно знать ток при идеальной нагрузке в 1 кВт. Если необходима хорошая точность — лучше его измерить самостоятельно, а если нет- то приблизительно можно посчитать по формуле (напряжение и мощность известны), но будет более грубо, так как не учитывается коэффициент мощности.
Таким образом, все упирается в измерение времени одного импульса (моргания индикатора). В своих изысканиях я опирался на этот отличный проект. Некий итальянец сделал в среде Labview интерфейс для мониторинга мощности и придумал схему для измерения импульсов. Но в его проекте красовалась огромная недоработка — он подходил только лишь для счетчиков с передаточным соотношением 1000 имп/кВт*ч.
Верхний график — средняя мощность за 5 минут, нижний — в реальном времени. Интерфейс довольно гибкий и легко модифицируется под свои нужды. Если Вы еще не имели дела со средой LabView — рекомендую познакомиться.
Чтобы все заработало, оказалось достаточно внести один единственный блок в алгоритм программы, в соответствии с формулой выше.
Выглядит это следующим образом
Казалось бы просто, но до этого надо еще додуматься!
Итак, если Вы все-таки решите реализовать мониторинг мощности, то есть два варианта:
1. Ваш счетчик закрыт и запломбирован по самое не балуйся. А значит, считывать импульсы можно только с помощью фоторезистора, реагирующего на моргание лампочки. Его необходимо прикрепить синей изолентой напротив светодиодного индикатора на лицевой панели счетчика.
Схема будет выглядеть следующим образом:
Схема для бесконтактного снятия импульсов
Программа просто сравнивает значение сопротивления на фоторезисторе и потенциометре. Причем последний позволяет выставить чувствительность такого датчика во избежание ложного срабатывания и настроиться под яркость индикатора.
2. У Вас есть доступ к импульсному выходу счетчика. На многих моделях имеется импульсный выход, который дублирует мигания лапочки. Это сделано для того, чтобы была возможность подключать прибор к системе автоматизированного учета. Представляет собой транзистор, открывающийся при горящем индикаторе и закрывающийся при погасшем. Подключиться напрямую к нему не составляет труда — для этого потребуется всего один подтягивающий резистор. Однако прежде чем делать это, удостоверьтесь что это именно импульсный выход, а не что-либо иное! (в паспорте всегда есть схема)
Схема для подключения к телеметрическому выходу
В моем случае — доступ полный, поэтому заморачиваться я особо не стал. Устанавливаем LabView и вперед измерять! Все графики представляют собой мощность (Вт) в реальном времени.
Первым под раздачу попал многострадальный чайник. Крышечка гласит что мощность у него 2,2 кВт, однако судя по графику, исправно потребляет лишь 1700 Вт. Обратите внимание, что потребление более-менее постоянно во времени. Это означает что нагревательный элемент (скорее всего нихром) очень слабо изменяет свое сопротивление в течении всего процесса вскипячивания.
Совсем другое дело клеевой пистолет — заявленная мощность 20 Вт.Он ведет себя в соответствии с законами физики — при нагреве сопротивление нагревателя увеличивается, а ток соответственно уменьшается. Проверял мультиметром — все так и есть.
Старый радиоприемник «Весна». Здесь график ушел вверх в начале из-за того, что я запустил измерение во время импульса, соответственно это повлияло на данные. Горки на графике показывают, как я крутил ручку громкости. Чем громче — тем больше радио кушает.
Перфоратор с заявленной мощностью 700 Вт. Нажал на кнопку до упора, чуть чуть подождал и отпустил, но не плавно. На графике хорошо видно бросок тока при пуске двигателя. Именно поэтому моргает свет, когда добрый сосед начинает долбить свою любимую стену.
А теперь самое интересное. Я провел небольшой эксперимент со своим стареньким ноутбуком, результат которого приведен на картинке:
Оранжевой точкой отмечено время, когда я запустил сразу несколько «тяжелых» программ. Как видите, графики загрузки процессора и возросшее потребление имеют нечто общее между собой. Недавно была одна интересная статья которая наталкивает на некоторые мысли. Не уверен что с помощью мониторинга мощности можно слить ключи шифрования, однако факт налицо.
(Трепещите параноики!)
В общем, из обычного счетчика и дешевой Arduino, можно сделать довольно простое и интересное решение для самодельного «умного дома». Кроме, собственно, мониторинга потребления электроэнергии есть вполне неплохая возможность организовать систему контроля включенных приборов, которая по изменению потребления и его характеру будет угадывать что включили. Без каких-либо дополнительных датчиков.
Исходники скетча для Arduino и файл LabView можно скачать на странице автора. После установки доработать напильником добавить блок в соответствии с описанием выше.
Счетчик импульсов на дин рейку — blog.instalator
instalator 1 Комментарий atmega328, автоматизация, счетчик, умный дом
Счетчик имеет два варианта исполнения, первый для снятия показаний со счетчиков с низкочастотным выходом импульсов, например водосчетчики, а второй для снятия показаний с электросчетчиков с импульсным выходом, где частота импульсов может достигать 16000 импульсов на 1 кВт⋅ч.
Первый вариант:
Счетчик имеет два входа. После С16 и С13 сигнал поступает на аналоговый коммутатор сигналов MM74HC4066, он коммутириует входные сигналы для разных типов датчиков. Например для датчиков системы NAMUR, если датчик используется герконовый или транзисторный например, то коммутатор коммутирует входы на триггер шмитта SN74LVC1G14DBVR для формирования сигнала с четким фронатами.
Далее сигнал поступает на цифровые или аналоговые (в случае NAMUR) входы микроконтроллера Atmega328, который и ведет подсчет импульсов. Счетчик имеет связь с внешним миром через Ethernet выполненного на микросхеме W5500 или WiFi (при установке на плату счетчика ESP8266) по протоколу MQTT.
Принципиальная схема счетчикаПри пропадании питания подсчитанные импульсы записываются в энергонезависимую память EEPROM микроконтроллера и при подачи питания счет продолжается.
Входные цепи счетчикаСхема импульсного выхода счетчика воды ValtecСчетчик собран в корпусе фирмы меандр и представляет собой одномодульный (в соответствии с международным стандартом DIN 43-880) пластмассовый корпус для электронной аппаратуры, способ сборки без винтовой (на защёлках). Материал корпуса — ABS пластик светло серого цвета (RAL7035). Крепление корпуса на DIN рейку (35мм) или на ровную поверхность.
Код счетчика в открытом доступе на GitHub. Счетчик имеет несколько конфигурируемых параметров. Изменение параметров через топики MQTT:
Создаваемые топики MQTT
Топик MQTT | Значения | Описание |
namur | true/false | Переключает входы счетчика на тип — NAMUR. |
polling | 500 — 4294967295 мс | Интервал публикации изменений данных в миллисекундах, т.е. данные счетчика публикуются только по изменению состояния, но не чаще заданного периода. |
correction | 0;0 | Для ручного задания текущих показаний счетчика, данные отправляются с разделителем «;» |
ratio | 1 — 32767 | Множитель, лучше использовать не на счетчике, а непосредственно в IoBroker |
namur_lvl_1 / namur_lvl_2 | 0 — 1023 | Значение аналогового входа, для типа NAMUR, выше которого будет считаться как срабатывание датчика.![]() |
namur_brk_1 / namur_brk_2 | 0 — 1023 | Значение аналогового входа, для типа NAMUR, ниже которого будет выдаваться ошибка на обрыв кабеля. |
interrupt_1 / interrupt_2 | 1, 2 , 3 | 1 — CHANGE прерывание вызывается при смене значения на порту, с LOW на HIGH и наоборот. 2 — RISING прерывание вызывается только при смене значения на порту с LOW на HIGH. 3 — FALLING прерывание вызывается только при смене значения на порту с HIGH на LOW. |
bounce | 0 — 5000 мс | Задержка в миллисекундах для программного подавления дребезга |
save | true/false | При записи значения true происходит сохранение данных и параметров в энергонезависимую память EEPROM |
A_1 / A_2 | 0 — 1023 | Отображает текущие значения аналоговых входов при активном режиме NAMUR. Для облегчения конфигурации параметров — namur_lvl_x и namur_brk_x |
count_1 / count_2 | 0 — 4 294 967 295 | Значения счетчика.![]() |
Второй вариант:
Схема счетчика отличается только входной и программной частью. Входная часть сделана на отдельном микроконтроллере Atmega328 которая занимается подсчетом импульсов, расчетом текущей нагрузки, замером тока и выводит значения на UART порт.
Код для второго варианта так же на моей странице GitHub.
После отключения питания счетчик автоматически сохраняет текущие показания в энергонезависимой памяти EEPROM.
Публикуемые топики MQTT, счетчика импульсовТопик MQTT | Значения | Описание |
count | 0 — 4 294 967 295 кВт. | Значения счетчика. |
power | 0 — 32767 Вт | Текущее значение мощности нагрузки |
amp | 0 -100 А. | Ток нагрузки (требует подключения трансформатора тока) |
polling | 1000 — 32767 мс | Интервал публикации изменений данных в миллисекундах, т.![]() |
bounce | 0 — 10000 мс | Задержка в миллисекундах для программного подавления дребезга |
num | 0 — 32767 | Значение передаточного числа счетчика. Количество импульсов на 1 кВт*ч |
save | true/false | При записи значения true происходит сохранение данных и параметров в энергонезависимую память EEPROM |
correction | 0 — 4 294 967 295 | Для ручного задания текущих показаний счетчика |
reset | true/false | Перезагрузка устройства с сохранением текущих значений |
RAW | count;power;amp;bounce;num;error | Вывод сырых данных одной строкой. |
Блок питания счетчика собран на микросхеме MC
MC34063, которая имеет широкий диапазон входных напряжений от 5.5 до 40 Вольт.
Корпус 151 МеандрДакарта — Мини-приложение Arduino_Counter
- Введение
- Характеристики
- Операция
- Arduino_Counter Список макросов
Мини-приложение макроса Arduino_Counter является демонстрацией
некоторых функций 0xFE Event/Race Timer функция DaqPort Arduino Sketch, которая включена
с Дакартой. Это намеренно не так сложно, как
мини-приложения DaquinOscope или DC Chart Recorder, которые
широко использовать настраиваемые элементы управления, многозадачность,
и макроподпрограммы.
Здесь вообще нет элементов управления; вам нужно отредактировать переменные в начале кода макроса для изменения режимов работы, параметры и использование контактов. Вместо многозадачности он использует простой цикл для ожидания возврата данных, при этом позволяя постоянное обновление дисплея.
Однако результатом этих упрощений является то, что код все в одном списке, и его намного легче понять и настроить под свои цели.
Arduino_Counter может измерять период сигнала и
частоты или высокой или низкой ширины импульса. Он может считать
одноимпульсные события или многоимпульсные пакеты. Хотя он использует
цифровые входы Arduino, которые обычно ожидают 0-5V
прямоугольные волны, добавляя простые
Переключатель входного уровня переменного тока в постоянный и схема лимитера, которую он может
легко размещать аналоговые сигналы переменного тока, такие как звуковая карта
выходы.
Из-за особенностей внутреннего хронометража Arduino Разрешение Arduino_Counter ограничено 4 микросекундами. Измерения периода сигнала имеют нижний предел около 20 микросекунды. Это устанавливает верхний предел частоты измерения около 50 кГц, хотя наилучшая точность ниже около 8 кГц. Измерения частоты используют регулируемое время постоянная система усреднения для уменьшения джиттера и улучшения точность.
931-1 или 2 147 483 647 события.Мини-приложение макроса Arduino_Counter включено в Дакарта. Чтобы запустить его, сначала нажмите CTRL+F8 , чтобы открыть Диалоговое окно макроса. Затем прокрутите список макросов вниз и дважды щелкните Arduino_Counter . (Здесь нет однобуквенный идентификатор для доступа к горячей клавише, как и для мини-приложения вверху списка.)
Однако перед использованием Arduino_Counter , вы можете
изменить некоторые параметры, которые установлены в начале
макрос. Чтобы отредактировать их, щелкните один раз на Arduino_Counter .
, чтобы выбрать его, не запуская, затем нажмите кнопку Изменить
кнопка.
(Обратите внимание, что вы можете открыть этот раздел справки, выбрав Arduino_Counter , как указано выше, затем нажмите кнопку «Справка». кнопку под списком, рядом с пунктом «Выполнить». Или, как только у вас есть открыл диалоговое окно «Редактировать», вы можете щелкнуть дубликат «Справка» кнопку в правом верхнем углу.)
Настройка по умолчанию предполагает, что измеряемый вход включен. цифровой контакт 7, задается через переменную UP . Вы можете использовать любой пин 2-12 здесь.
Сигнальный контакт — это выход, который активируется во время
интервал, который представляет собой полный цикл по периоду и частоте
режим или только указанная высокая или низкая ширина импульса. Этот штифт
устанавливается через US , по умолчанию 13 для использования платы Arduino.
бортовой светодиод. Вы можете использовать любой контакт 2-13 здесь, если он
не то же самое, что UP входной контакт.
Переменная UF устанавливает режим:
0 = высокая длительность импульса/события 1 = малая длительность импульса/события 2 = период и частота полного цикла
QC — целочисленная постоянная времени, применяемая к отображение частоты для уменьшения джиттера. Значение по умолчанию — 10. чем выше значение, тем меньше дрожание, но тем медленнее реакция на резкое изменение частоты,
UW — это тайм-аут ожидания, который является функцией безопасности для предотвратить вечное ожидание счетчика в случае отсутствует входной сигнал. Это должно быть установлено как минимум дважды самый длинный ожидаемый период в целых секундах. Значение по умолчанию — 2, чтобы разрешить периоды до 1 секунды.
Переменная H — интервал задержки в секундах. Это
переменная с плавающей запятой (в отличие от приведенных выше целых чисел), поэтому
доли секунды разрешены. Вы можете ввести такие значения, как H=20m , чтобы получить задержку в 20 миллисекунд. Удержание
применяется только в импульсных/событийных режимах 0 и 1. Цель состоит в том, чтобы
разрешить подсчет или измерение только первых каждого пакета
импульсов, которые можно увидеть в потоке звуковых импульсов,
или дребезжащий механический контакт переключателя. В таких случаях
Выдержка должна быть установлена дольше, чем любой отдельный пакет или
продолжительность отказов, чтобы не предпринимать попытки следующего измерения
посреди продолжающегося взрыва или отскока.
После редактирования этих параметров нажмите кнопку Сохранить макрос кнопку под окном редактирования. Это вернет вас к основной список макросов, где вы можете нажать кнопку «Выполнить».
Когда Arduino_Counter запускается, он вызывает
Подпрограмма макроса _ComDev_Scan для обнаружения COM-порта
используется Ардуино. Если _ComDev_Scan не запущен
ранее, либо путем предварительного использования Arduino_Counter ,
DaquinOscope, DC_Chart_Recorder или другой макрос,
или он не работал с тем же Arduino в том же USB-разъеме,
может быть небольшая задержка при сканировании портов. На
последующие запуски с тем же устройством в том же сокете, _ComDev_Scan немедленно вернет нужный порт из
его сохраненный список.
На некоторых версиях плат Arduino может быть 2-секундный задержка инициализации при первом использовании платы в Текущая сессия Дакарты. «Ожидание инициализации Arduino…» сообщение появится во время этой задержки. Кроме (недокументировано) нужна эта задержка, эти платы работают нормально.
Arduino_Counter затем покажет пользовательский счетчик с сообщение «Ожидание триггера…». (Вы можете этого не заметить, если триггер обнаруживается быстро.)
Строка заголовка счетчика будет выглядеть так: «Нажмите SHIFT, чтобы выйти из Arduino_Counter». Затем счетчик покажет период или ширина импульса в микросекундах, а ниже частота в Гц или текущее количество импульсов.
Показания счетчика будут обновляться после каждого измерения,
который может занимать до 2 периодов сигнала в частотном режиме.
Нажмите клавишу SHIFT для выхода. (На самом деле вы можете использовать любой из клавиши Shift, в том числе Ctrl и ALT .) Счетчик будет сохраняться, чтобы показать окончательное чтение; щелкните его [x], чтобы закрыть это.
;<Справка=h5924 UP=7 ;Контакты 2-12 для события/триггера US=13 ;светодиод на контакте 13, синхронизация одного события UF=2 ;0 = высокая продолжительность, 1 = низкая, 2 = частота QC=10 ;постоянная времени (отображение частоты) UW=2 ;Лимит времени ожидания, сек H=0 ;Задержка подсчета импульсов, сек Posn#0="Ardu" ;Указать только Arduino Posn#1=0 ;Количество устройств, 0 = первое найденное @_ComDev_Scan ;Найти и открыть порт устройства IF.UF=2 ;Частотный режим? UT=h30 + UP ;Триггер ВВЕРХ, h30=ожидание, если не готов УП=ВВЕРХ ДРУГОЕ. ;иначе только высокая или низкая продолжительность 900:10 UT=0 UE=UF<<4 + UP ;(h20 +UP) = НИЗКИЙ, UP = ВЫСОКИЙ КОНЕЦ.Порт=$(hD0 + UP) + $(h52) ;Запуск/Событие INPUT_PULLUP Порт=$(hD0 + US) + $(h51) ;Сигнал на ВЫХОД Port=$(hD0 + US) + $(h00) ;Отключить сигнал для запуска Port=$(hF0) + "W" + $w(-UW) ;время ожидания, сек Mtr0="<<Нажмите SHIFT, чтобы выйти из Arduino_Counter" Mtr0="Ожидание триггера..." Port#Ti=1 ;Немедленный возврат, если нет данных Порт#Tm=1 Порт#Tc=0 Port#T=2 ;Использовать тайм-ауты QT=0 ;Общее количество импульсов A=0 ;Скользящее среднее значение частоты IF.QC=<=0 ;Только положительный TC КК=1 КОНЕЦ. ПОКА.Ключ?$=0 Port=$(hFE) + $(UT) + $(US) + $(UE) ;Время события запроса ООН=0 WHILE.UN=<(UW / 10m) ;Подождите не более нескольких секунд U0=Порт?5 ;Попробовать прочитать данные IF.Port?n=!0 ;Прочитаны какие-либо байты? LoopBreak=2 ;ОК, если да ДРУГОЕ.
IF.Key?$=0 ;Если нет клавиши SHIFT WaitTrace= ;Разрешить обновление трассировки ДРУГОЕ. LoopBreak=2 ;иначе выйти из цикла КОНЕЦ. КОНЕЦ. ООН=ООН+1 ВЕНД. IF.Port?n=0 ;Прочитаны какие-либо байты? LoopBreak=2 ;Выход, если нет (нажатие SHIFT) КОНЕЦ. ; UC=Port?c ;Номер контакта (не используется) Port#D1=h87 ;Получить количество тайм-аутов Q7=Порт?2 F=1e6 / U0 IF.A=0 ;Первый проход? A=F ;Инициализация средней частоты ДРУГОЕ. A=A - (A/QC) + (F/QC) ;В противном случае применяется TC КОНЕЦ. IF.Q7=>0 ;Время ожидания на этом проходе? Mtr0="Тайм-аут!" ;Показать ошибку, не считать ДРУГОЕ. IF.
UF=<2 ;Только высокая или низкая продолжительность? QT=QT+1 ;Счетный импульс ЕСЛИ.УФ=0 Mtr0=U0 + "usec HIGH" +n _ +QT + "Количество" ДРУГОЕ. Mtr0=U0 + "usec LOW" +n _ +QT + "Количество" КОНЕЦ. ДРУГОЕ. ;иначе показать частоту Mtr0=U0 + "usec" +n _ +А + "Гц" КОНЕЦ. КОНЕЦ. WaitSecs=H ;Задержка задержки для подсчета импульсов/пакетов ВЕНД. Mtr0="<<" ;Очистить заголовок Mtr0 Port#T=0 ;Конец времени ожидания COM Порт#O=0 ;Закрыть COM-порт
См. также DaqPort Arduino Sketch, Доступ к порту USB/последовательной связи
pulse-counter-rpc · PyPI
# pulse-counter-rpc #
Пакет шаблонов для проекта удаленного вызова процедур (RPC), использующий
[ base-node-rpc ][3].
## Обзор ##
Этот комплект содержит:
## Install ##
Пакет Python можно установить через pip с помощью следующей команды:
pip установить импульс-счетчик-RPC
## Загрузить прошивку ##
Чтобы загрузить предварительно скомпилированную прошивку, включенную в пакет Python, запустите следующая команда:
python -m pulse_counter_rpc.bin.upload <тип платы>
замена <тип платы> на uno или mega2560 в зависимости от модель платы.
Будет предпринята попытка загрузить микропрограмму путем автоматического обнаружения Серийный порт. В системах с несколькими последовательными портами используйте командную строку -p . аргумент для указания используемого последовательного порта. Например:
python -m pulse_counter_rpc.bin.upload -p COM3 uno
## Usage ##
После заливки прошивки на плату pulse_counter_rpc. Proxy класс может быть
используется для взаимодействия с устройством Arduino.
Пример использования см. в журнале сеанса ниже.
### Пример интерактивного сеанса ###
>>> из серийного импорта Серийный >>> из pulse_counter_rpc импортировать прокси
Подключение к последовательному устройству.
>>> serial_device = Serial('/dev/ttyUSB0', скорость передачи=115200)
Инициализировать прокси-сервер устройства, используя существующее последовательное соединение.
>>> прокси = Прокси(serial_device)
Запрос количества свободных байтов в ОЗУ устройства.
>>> proxy.ram_free() 409
Запрос описательных свойств устройства.
>>> proxy.properties() base_node_software_version 0.9.post8.dev141722557 имяpulse_counter_rpc производитель Wheeler Lab адрес http://github.com/wheeler-microfluidics/rpc-p... software_version 0.1 тип: объект
Интерактивное использование методов Arduino API.
>>> # Установить вывод 13 в качестве выхода >>> proxy.pin_mode(13, 1) >>> # Включить светодиод >>> proxy.digital_write(13, 1) >>> # Выключить светодиод >>> proxy.digital_write(13, 0)
### Конфигурация и состояние ###
Устройство хранит конфигурацию и состояние . Конфигурация сериализуются и хранятся в EEPROM, что позволяет сохранять настройки на всех устройствах сбрасывает. Состояние сохраняется в памяти устройства и каждый раз переинициализируется. устройство запускается.
Печать значений конфигурации (не по умолчанию).
>>> распечатать proxy.config серийный_номер: 2 бод_скорость: 115200 i2c_адрес: 17
Параметры конфигурации можно установить путем обновления конфигурации.
>>> код_результата = proxy.update_config(serial_number=1234) >>> код_результата = proxy.update_config(i2c_address=32)
Для сохранения изменений в конфигурации при перезагрузке устройства — не состояние — использование метод save_config .
>>> proxy.save_config()
### Другие методы ###
Ниже приведен список атрибутов класса pulse_counter_rpc.Proxy Python. Примечание что многие функции [Arduino API][1] (например, pin_mode , digital_write , и т. д.) доступны через RPC API.
>>> прокси. proxy.analog_read proxy.микросекунды proxy.analog_write proxy.milliseconds proxy.array_length имя_прокси proxy.base_node_software_version proxy.on_config_baud_rate_changed proxy.begin proxy.on_config_i2c_address_changed proxy.buffer_size proxy.on_config_serial_number_changed proxy.channel_count proxy.on_state_frequency_changed proxy.config proxy.on_state_voltage_changed proxy.delay_ms proxy.pin_mode proxy.delay_us proxy.properties proxy.digital_read proxy.ram_free proxy.digital_write proxy.read_eeprom_block proxy.echo_array proxy.reset_config proxy.get_buffer proxy.reset_state proxy.i2c_address proxy.save_config proxy.i2c_доступный proxy.serialize_config proxy.i2c_buffer_size proxy.serialize_state proxy.i2c_read proxy.set_i2c_address proxy.i2c_read_byte proxy.set_state_of_channels proxy.i2c_request proxy.software_version proxy.i2c_request_from proxy.state proxy.i2c_scan proxy.state_of_channels proxy.i2c_write proxy.str_echo proxy.load_config proxy.update_config proxy.производитель proxy.update_eeprom_block proxy.max_i2c_payload_size proxy.update_state proxy.max_serial_payload_size proxy.url
## Разработка прошивки ##
Прошивка/скетч Arduino находится в папке pulse_counter_rpc/Arduino/pulse_counter_rpc каталог. Ключевая функциональность определена в классе pulse_counter_rpc::Node в
файл Node.