Разработки ecoins

Библиотеки для разных контроллеров

ecoins
Лейтенант
Сообщения: 335
Зарегистрирован: 12.02.2016{, 11:40}
Репутация: 39
Откуда: Шатура
Имя: Энвер

Разработки ecoins

#321

Сообщение ecoins » 05.08.2019{, 12:53}

Версия счетчика со всеми внешними параметрами - на паука стал похож :smile469: .
======================================================
БЛОК СЧЕТЧИКА С ВНЕШНИМИ ПАРАМЕТРАМИ
Входы:
En - разрешение счета.Счетчик считает, когда на входе En событие (=1 на один цикл loop).
Если En=1 всегда, то он считает при каждом вхождении.
rst - сброс. Устанавливается значение выхода=begin и начинается новый счет.
step - шаг изменения (int). Может быть положительным и отрицательным. =0 - не считает.
mode - режим работы счетчика (S,T,L,C) - по умолчанию =S (пила).
top - верхняя граница,
bottom - нижняя граница.

Счетчик считает в диапазоне от -32768 до +32767.

При первом включении начальное и после rst=1 значение счетчика сбрасывается до begin .
РЕЖИМ РАБОТЫ СЧEТЧИКА :
'S' - пила. Если шаг >0, увеличение до верхней границы и сразу с возвратом к нижней границе.
Если шаг <0, уменьшение до нижней границы и сразу с возвратом к верхней границе.
'T' - треугольник. Если шаг >0, увеличение до верхней границы, затем уменьшение к нижней границе.
Если шаг <0, уменьшение до нижней границы, затем увеличение к верхней границе.
'L' - лимит. Если шаг >0, увеличение до верхней границы и останавливает счет.
Если шаг <0, уменьшение до нижней границы и останавливает счет.
'C' - предел. Если шаг >0, увеличение до 32767 и останавливает счет.
Если шаг <0, уменьшение до -32768 и останавливает счет.
----------------------------------------------------------
ecoins@mail.ru 05.08.19

Аватара пользователя
Dryundel
Лейтенант
Сообщения: 303
Зарегистрирован: 22.05.2017{, 23:15}
Репутация: 66
Откуда: Ярославль
Имя: Андрей

Разработки ecoins

#322

Сообщение Dryundel » 05.08.2019{, 20:01}

ecoins писал(а):
05.08.2019{, 12:53}
Версия счетчика со всеми внешними параметрами - на паука стал похож :smile469: .
Похоже Вы зашиваетесь. :)
Прошу прощения за навязчивость но...
1. Теперь в блоке РЕЖИМ РАБОТЫ, НАЧАЛЬНОЕ ЗНАЧЕНИЕ и ШАГ ИЗМЕНЕНИЯ в двух местах и на входах и в параметрах пользователя. Предполагаю это по запарке и что то из этого не работает.
2. В описании ничего не сказано про вход begin
3. Режим работы можно было бы перенести в параметры, ибо менять его на лету вряд ли кому то потребуется. (ежик будет меньше)
4. В описании вместо bot написано bottom (мелочь, но все-таки)

Надо бы заглянуть в ваши библиотеки. В написании самих библиотек я не силен но если в них есть описание функций то это круто. Пока нет возможности это сделать, но доберусь обязательно. :)

А вообще спасибо Вам. Большое дело делаете. Даже хочется посодействовать. Не знаю в чем Ваш интерес но пока похоже на альтруизм.

ecoins
Лейтенант
Сообщения: 335
Зарегистрирован: 12.02.2016{, 11:40}
Репутация: 39
Откуда: Шатура
Имя: Энвер

Разработки ecoins

#323

Сообщение ecoins » 05.08.2019{, 22:23}

Dryundel писал(а):
05.08.2019{, 20:01}
1. Теперь в блоке РЕЖИМ РАБОТЫ, НАЧАЛЬНОЕ ЗНАЧЕНИЕ и ШАГ ИЗМЕНЕНИЯ в двух местах и на входах и в параметрах пользователя. Предполагаю это по запарке и что то из этого не работает.
2. В описании ничего не сказано про вход begin
3. Режим работы можно было бы перенести в параметры, ибо менять его на лету вряд ли кому то потребуется. (ежик будет меньше)
4. В описании вместо bot написано bottom (мелочь, но все-таки)
Да, параметры пользователя оставлены, чтобы при желании можно вернуться к прежней конфигурации. Это следует из строки в блоке пользователя - функция setID - в ней можно использовать параметры как со входа, так и из параметров пользователя и таким образом можно сделать удобное сочетание блока под предпочтения пользователя.
Параметр begin - при первом запуске и при сбросе счётчик начинает считать не с нуля, а со значения begin. По умолчанию =0, но можно установить своё значение. Редкое применение, но такая возможность предусмотрена.
Вход bot - это сокращённое bottom. Стараемся сделать блоки компактными и потому сокращаем название входов-выходов.
——-
В библиотеках много комментариев, чтение их снимает много вопросов.
Спасибо за высокую оценку наших результатов.
Мы очень заинтересованы в различии двух удивительных продуктов FLProg и KaScada. Им нужна поддержка в виде «правильных» библиотек - пытаемся закрывать эти ниши.

Аватара пользователя
Dryundel
Лейтенант
Сообщения: 303
Зарегистрирован: 22.05.2017{, 23:15}
Репутация: 66
Откуда: Ярославль
Имя: Андрей

Разработки ecoins

#324

Сообщение Dryundel » 06.08.2019{, 19:37}

ecoins писал(а):
05.08.2019{, 22:23}
Да, параметры пользователя оставлены, чтобы при желании можно вернуться к прежней конфигурации. Это следует из строки в блоке пользователя - функция setID - в ней можно использовать параметры как со входа
Так, не путайте меня. Я не совсем понял экзерсис с функцией setID и как толком ее применить. Но мне показалось что это всего лишь подмена именованных переменных. Это всего лишь временное решение. Если я не прав, поправьте меня.
ecoins писал(а):
05.08.2019{, 22:23}
Параметр begin - при первом запуске и при сбросе счётчик начинает считать не с нуля, а со значения begin. По умолчанию =0, но можно установить своё значение. Редкое применение, но такая возможность предусмотрена.
Вход bot - это сокращённое bottom. Стараемся сделать блоки компактными и потому сокращаем название входов-выходов.
С этим я прекрасно разобрался и писал лишь потому, что указывал на недочеты в блоке которые по моему мнению стоит подправить.
ecoins писал(а):
05.08.2019{, 22:23}
В библиотеках много комментариев, чтение их снимает много вопросов.
Да, глянул библиотеки. Почти всё, может и не очень подробно, но описано. Это очень порадовало.
Можно лепить свои блоки. И это здорово!
Останавливает только то, что библиотеки активно дорабатываются (перерабатываются) и слепленное сегодня может не заработать завтра.
ecoins писал(а):
05.08.2019{, 22:23}
Мы очень заинтересованы в различии двух удивительных продуктов FLProg и KaScada. Им нужна поддержка в виде «правильных» библиотек - пытаемся закрывать эти ниши.
Да, соглашусь, хорошие, шустрые и не конфликтующие библиотеки с подробным русским описанием очень нужны.

Теперь конкретика:
Присоединяюсь к вопросу из другой темы. Сам был озадачен но спросить забыл.
ingener писал(а):
06.08.2019{, 10:35}
ecoins, а что значит в настройках блока float - константа string (по умолчанию =@) ? последняя строчка
Еще есть пожелание включить в библиотеку микросхему расширения TM1638 (TM1637). Очень уж она подкупает своей дешевизной при отличном функционале. Да и работа с матричными клавиатурами и светодиодными матрицами слабо освещена в FLProg.
В добавок ко всему, в некоторых случаях, к примеру блок управления и индикации, это не плохая замена не дешевой MCP23017.
Вот отличный пример для подражания TM16xx
Проблема в том что все описания на ангицкой мове с которой я не сильно дружу. :)

ecoins
Лейтенант
Сообщения: 335
Зарегистрирован: 12.02.2016{, 11:40}
Репутация: 39
Откуда: Шатура
Имя: Энвер

Разработки ecoins

#325

Сообщение ecoins » 06.08.2019{, 21:15}

По счетчику:
Dryundel писал(а):
06.08.2019{, 19:37}
Так, не путайте меня. Я не совсем понял экзерсис с функцией setID и как толком ее применить. Но мне показалось что это всего лишь подмена именованных переменных. Это всего лишь временное решение. Если я не прав, поправьте меня.
В поисках оптимального варианта конфигурации счетчиков я оставляю параметры пользователя. После обсуждения с Вам наверное будет
оставлено две конфигурации блока:
1.вход EN, top(верхняя граница), bot(нижняя граница).
2.вход EN, rst(сброс), step(шаг изменения), top,bot
Dryundel писал(а):
06.08.2019{, 19:37}
Останавливает только то, что библиотеки активно дорабатываются (перерабатываются) и слепленное сегодня может не заработать завтра.
ecoins писал(а): ↑
Это так, но проблема думаю преувеличена. Во-первых мы стараемся следить за совместимостью. Во-вторых - сами пользовательские блоки обычно состоят из одной/двух строк на C++ - инициализация параметров и вызов самой функции. При наличии комментариев в библиотеках временные шероховатости (если они возникают) могут быть устранены на уровне пользователя блоков. Ну и мы готовы быстро отреагировать...
Dryundel писал(а):
06.08.2019{, 19:37}
Теперь конкретика:
Присоединяюсь к вопросу из другой темы. Сам был озадачен но спросить забыл.
ingener писал(а): ↑Сегодня{, 07:35}
ecoins, а что значит в настройках блока float - константа string (по умолчанию =@) ? последняя строчка
Это заложено на развитие - не успели сделать. Если эта переменная отлична от "@", то она будет записана перед входной переменной(float,char,int,String) - т.е. заголовок переменной. Хотели сделать, возникли трудности, отложили на некоторое время.
Dryundel писал(а):
06.08.2019{, 19:37}
Еще есть пожелание включить в библиотеку микросхему расширения TM1638 (TM1637). Очень уж она подкупает своей дешевизной при отличном функционале. Да и работа с матричными клавиатурами и светодиодными матрицами слабо освещена в FLProg.
В добавок ко всему, в некоторых случаях, к примеру блок управления и индикации, это не плохая замена не дешевой MCP23017.
Вот отличный пример для подражания TM16xx
Положил в корзину - для детской Академии действительно хороший стенд. Придут, что-то сделаем.
В целом же отношение к эти вещам следующее - многие вопросы прекрасно делаются на KaScade, а локальные индикаторы только трудности создают, а потом еще и подобрать удачный форм-фактор не просто. А планшет всё перекрывает - да они еще и дешевеют очень быстро. В общем спасибо Rovki. Тему LCD мы развиваем потому, что иногда удобно использовать как "программный" тестер при отладке проекта. Мы её доработаем с учетом Ваших предложений - будет добавлен еще один вход. При переходе EN из 1->0 поле будет очищаться пробелами, при 0->1 - будет восстановлена запись, далее будет меняться только при изменении входного параметра. Хотя еще раз задумываюсь, что на KaScade правильнее это делать. Rovki обещал глобальные изменения в файловой системе - будет проще и для детишек в нашей Академии.

Аватара пользователя
Dryundel
Лейтенант
Сообщения: 303
Зарегистрирован: 22.05.2017{, 23:15}
Репутация: 66
Откуда: Ярославль
Имя: Андрей

Разработки ecoins

#326

Сообщение Dryundel » 06.08.2019{, 22:22}

ecoins писал(а):
06.08.2019{, 21:15}
Это заложено на развитие - не успели сделать. Если эта переменная отлична от "@", то она будет записана перед входной переменной
В принципе я так и подумал, но эксперименты не дали результата. Ставил надпись и до @ и после и вместо. :)
Идея хорошая. Рассмотрите вариант до и после @ - так что бы можно было вывести на дисплей TEMP "хх.х" С
ecoins писал(а):
06.08.2019{, 21:15}
Тему LCD мы развиваем потому, что иногда удобно использовать как "программный" тестер при отладке проекта.
Очень зря Вы недооцениваете LCD. В реальных небольших проектах, когда требуется постоянно отображать несколько параметров и выводить сообщения о событиях, это не заменимая вещь из-за своей дешевизны.

ecoins
Лейтенант
Сообщения: 335
Зарегистрирован: 12.02.2016{, 11:40}
Репутация: 39
Откуда: Шатура
Имя: Энвер

Разработки ecoins

#327

Сообщение ecoins » 06.08.2019{, 23:54}

Dryundel писал(а):
06.08.2019{, 22:22}
В принципе я так и подумал, но эксперименты не дали результата. Ставил надпись и до @ и после и вместо.
Идея хорошая. Рассмотрите вариант до и после @ - так что бы можно было вывести на дисплей TEMP "хх.х" С
Мы так сделали в блоках по консоле - впереди текст, cзади символ.
Dryundel писал(а):
06.08.2019{, 22:22}
Очень зря Вы недооцениваете LCD. В реальных небольших проектах, когда требуется постоянно отображать несколько параметров и выводить сообщения о событиях, это не заменимая вещь из-за своей дешевизны.
И ещё lcd компактный и яркий.
Мы не поддерживаем подходы когда на дисплей 16х2 путем ухищрений выводятся десятки параметров... :smile453:

Аватара пользователя
Hijin
Сержант
Сообщения: 244
Зарегистрирован: 22.08.2017{, 11:08}
Репутация: 5
Откуда: Винница
Имя: Юрий

Разработки ecoins

#328

Сообщение Hijin » 07.08.2019{, 06:48}

ecoins писал(а):
06.08.2019{, 23:54}
И ещё lcd компактный и яркий.
Мы не поддерживаем подходы когда на дисплей 16х2 путем ухищрений выводятся десятки параметров...
Не соглашусь с вами. На дачах и частных участках (где установлены системы полива) ими в основном пользуются либо пенсионеры либо люди не имеющие интернета и посмотреть параметры (температура, давление, влажность, влажность почвы, настроить периодичность полива и так далее) с помощью ЛСД дисплея это оптимальный вариант
Здесь есть видео моего меню для полива viewtopic.php?t=2462&start=40 пост 47

ecoins
Лейтенант
Сообщения: 335
Зарегистрирован: 12.02.2016{, 11:40}
Репутация: 39
Откуда: Шатура
Имя: Энвер

Разработки ecoins

#329

Сообщение ecoins » 07.08.2019{, 08:37}

Hijin, название Вашего города вызывает у меня самые теплые ассоциации. Особенно это связано с мониторами ВТ-2000 - лучшими в свое время. Поражали не только их характеристики, но и их надежность (по сравнению с СИД-1000).
Мониторы, точнее терминалы BT-2000 (поставлялись вместе с клавиатурой), были мечтой программистов и огромным дефицитом. :yes:
-------------------
Hijin писал(а):
07.08.2019{, 06:48}
Не соглашусь с вами. На дачах и частных участках (где установлены системы полива) ими в основном пользуются либо пенсионеры либо люди не имеющие интернета и посмотреть параметры (температура, давление, влажность, влажность почвы, настроить периодичность полива и так далее) с помощью ЛСД дисплея это оптимальный вариант
Посмотрел с интересом меню полива. Что-то задействуем в своих проектах.
В проекте бросаются в глаза "пауки" - много-много входов и параметров. Если будем заниматься, то что-нибудь подумаем как можно улучшить.
По поводу Lcd - использование стандартных блоков Lcd сразу привозит к "торможению", а значит и к длительному циклу loop(). Это создаёт проблемы для использования внешнего беспроводного контроллера с HMI.
А пенсионеры сейчас со смартфонами, на которых можно установить KaScada :smile113:
В планах у нас доработка блоков Lcd с учетом накопленных предложений. И еще надеемся "научить" работать Lcd от 3,3в - для ESP32 полезно.
------
К слову. Новых проектов на ESP8266 делать не планируем, если только как конечные устройства(выключатель, сенсор и т.п.). Усилия затрачиваются, а аппаратные ограничения и особенности ESP8266 всё время подбрасывают трудности и неожиданности.

Аватара пользователя
Hijin
Сержант
Сообщения: 244
Зарегистрирован: 22.08.2017{, 11:08}
Репутация: 5
Откуда: Винница
Имя: Юрий

Разработки ecoins

#330

Сообщение Hijin » 07.08.2019{, 11:09}

ecoins писал(а):
07.08.2019{, 08:37}
Hijin, название Вашего города вызывает у меня самые теплые ассоциации. Особенно это связано с мониторами ВТ-2000 - лучшими в свое время. Поражали не только их характеристики, но и их надежность (по сравнению с СИД-1000).
Мониторы, точнее терминалы BT-2000 (поставлялись вместе с клавиатурой), были мечтой программистов и огромным дефицитом.
Этот завод Терминал (скорее одно название что от него осталось) от моего дома через дорогу на нем работал и мой брат и дядя. Дядя даже в 80 году на олимпиаде в Москве был инженером наладчиком от завода.

Если интересно то в viewtopic.php?p=69838#p69838 есть последняя версия моего меню с использованием пользовательского блока от Dryundel который весьма упростил скетч блок Set-in

ecoins
Лейтенант
Сообщения: 335
Зарегистрирован: 12.02.2016{, 11:40}
Репутация: 39
Откуда: Шатура
Имя: Энвер

Разработки ecoins

#331

Сообщение ecoins » 07.08.2019{, 12:15}

Hijin писал(а):
07.08.2019{, 11:09}
Если интересно то в посте 73 темы viewtopic.php?t=2462&start=40 есть последняя версия моего меню с использованием пользовательского блока от Dryundel который весьма упростил скетч блок Set-in
Интересно. Я уже что-то смотрел, но не уверен, что то, на что Вы указали. Уточните номер поста, здесь нет: viewtopic.php?p=59832#p59832

Аватара пользователя
Dryundel
Лейтенант
Сообщения: 303
Зарегистрирован: 22.05.2017{, 23:15}
Репутация: 66
Откуда: Ярославль
Имя: Андрей

Разработки ecoins

#332

Сообщение Dryundel » 07.08.2019{, 12:40}

ecoins писал(а):
07.08.2019{, 12:15}
Интересно. Я уже что-то смотрел, но не уверен, что то, на что Вы указали. Уточните номер поста, здесь нет:
ecoins, Окончательный вариант проекта вероятно здесь: #73
А блок, о котором идет речь, этот: #70
Но к сожалению это был всего навсего костыль. :)
Там в начале темы речь шла о недостатках стандартного блока дисплея. Имей Hijin на тот момент Ваши блоки LCD, вероятно и проект сложился бы по другому. Хотя, сложно сказать. Ваши блоки немного сложней для понимания хотя и дают больше пластики в проектах.

Отправлено спустя 1 минуту 32 секунды:
Hijin, извините что ответил за Вас.

Аватара пользователя
Hijin
Сержант
Сообщения: 244
Зарегистрирован: 22.08.2017{, 11:08}
Репутация: 5
Откуда: Винница
Имя: Юрий

Разработки ecoins

#333

Сообщение Hijin » 07.08.2019{, 12:51}

Спасибо я на пару секунд не успел.
Костыль не костыль но Ваш блок весьма функциональный и в качестве стандартных блоков в программе был бы даже уместен как блок переключателей. Естественно если бы автор программы его немного доработал то есть сделал в меню выбор количество входов

ecoins
Лейтенант
Сообщения: 335
Зарегистрирован: 12.02.2016{, 11:40}
Репутация: 39
Откуда: Шатура
Имя: Энвер

Разработки ecoins

#334

Сообщение ecoins » 07.08.2019{, 12:58}

Все понял. Смотрел именно эти блок. Закончим с текущими задачами и проблемами, вернемся к ним.

Аватара пользователя
Skull
Лейтенант
Сообщения: 372
Зарегистрирован: 08.09.2015{, 16:18}
Репутация: 1
Откуда: Мариуполь

Разработки ecoins

#335

Сообщение Skull » 07.08.2019{, 16:45}

Насчет 1-Wire. Есть чудные микросхемы гальванической развязки для I2C, вывод SDA микры прекрасно работает на однопроводной шине в двунаправленном режиме. Поэтому проблемы помех и выгорания портов как бы не существует.
Изображение

Ребят, огромная просьба, сделайте человеческие блоки, а ?))

ecoins
Лейтенант
Сообщения: 335
Зарегистрирован: 12.02.2016{, 11:40}
Репутация: 39
Откуда: Шатура
Имя: Энвер

Разработки ecoins

#336

Сообщение ecoins » 07.08.2019{, 17:44}

Skull писал(а):
07.08.2019{, 16:45}
Насчет 1-Wire. Есть чудные микросхемы гальванической развязки для I2C, вывод SDA микры прекрасно работает на однопроводной шине в двунаправленном режиме. Поэтому проблемы помех и выгорания портов как бы не существует.
Изображение

Ребят, огромная просьба, сделайте человеческие блоки, а ?))
За подсказку спасибо.
По блокам - уточните что и по каким блокам надо сделать.

Аватара пользователя
Dryundel
Лейтенант
Сообщения: 303
Зарегистрирован: 22.05.2017{, 23:15}
Репутация: 66
Откуда: Ярославль
Имя: Андрей

Разработки ecoins

#337

Сообщение Dryundel » 07.08.2019{, 18:50}

ecoins писал(а):
07.08.2019{, 17:44}
По блокам - уточните что и по каким блокам надо сделать.
Вау! Такой настрой уже радует! :) Значит 1-Wire еще поживет в FLProg. А может и свежего ветра поймает.
Тогда вернемся к истокам:
Dryundel писал(а):
03.08.2019{, 20:02}
ecoins, а возможно сделать набор блоков для шины 1-Wire по типу как для i2c ?
i2c.jpg
i2c.jpg (42.59 КБ) 261 просмотр
*
Из устройств, вот есть списочек :)

DS1820, DS18S20 - цифровой термометр.
DS18B20 - высокоточный цифровой термометр.
DS2406 - одноканальный дискретный ввод-вывод.
DS2406P - двухканальный дискретный ввод-вывод.
DS2408 - восьмиканальный дискретный ввод-вывод.
DS2413 - двухканальный дискретный вывод.
DS2438 - трёхканальная микросхема: температура и два аналоговых входа.
DS2450 - четырёхканальная микросхема аналогового ввода.
DS2890 - регулируемое сопротивление (аналоговый вывод).
DS2404 - Двухпортовое ОЗУ + часы

ecoins
Лейтенант
Сообщения: 335
Зарегистрирован: 12.02.2016{, 11:40}
Репутация: 39
Откуда: Шатура
Имя: Энвер

Разработки ecoins

#338

Сообщение ecoins » 07.08.2019{, 23:07}

Dryundel писал(а):
07.08.2019{, 18:50}
Вау! Такой настрой уже радует! Значит 1-Wire еще поживет в FLProg. А может и свежего ветра поймает.
Тогда вернемся к истокам:
Понято - будем планировать, но не в самое ближайшее время. DS18B20 наверное побыстрее. Работающий блок есть, но будем переделывать.

Аватара пользователя
CraCk
Лейтенант
Сообщения: 533
Зарегистрирован: 10.09.2015{, 21:51}
Репутация: 6

Разработки ecoins

#339

Сообщение CraCk » 12.08.2019{, 17:04}

ecoins писал(а):
31.07.2019{, 18:49}
По блоку SR04 viewtopic.php?p=73881#p73881.
Блоки действительно уникальны. Практически ни одного параметра не понял, как конфигурировать и за что отвечает.
Сам блок не компилируется требует библиотеку. За библиотеки нужно платить?
Зачем на блоке вход Echo? Это же номер пина. Почему не сделать настройкой?

ecoins
Лейтенант
Сообщения: 335
Зарегистрирован: 12.02.2016{, 11:40}
Репутация: 39
Откуда: Шатура
Имя: Энвер

Разработки ecoins

#340

Сообщение ecoins » 12.08.2019{, 17:45}

CraCk писал(а):
12.08.2019{, 17:04}
ecoins писал(а):
31.07.2019{, 18:49}
По блоку SR04 viewtopic.php?p=73881#p73881.
Блоки действительно уникальны. Практически ни одного параметра не понял, как конфигурировать и за что отвечает.
Сам блок не компилируется требует библиотеку. За библиотеки нужно платить?
Зачем на блоке вход Echo? Это же номер пина. Почему не сделать настройкой?
С настройками: можно ничего не настраивать - подали на вход номер пина и если его значение>=0, на выходе значение в см.
Пин на входе: это политика ecoins - если в конкретном контроллере не получается использовать устройство - например не хватает пинов, как ESP8266 - выбирается пин=-1 и вся программа работает без изменений и осложнений.
-----
По поводу уникальности. Мы так пишем, нам не известно ничего подобного:
СпойлерПоказать
Перед тем как создавать свою библиотеку, ecoins изучал и библиотеку NewPing. Её особенностью является использование прерываний каждые 50mcs. При этом обработка занимает (для AV328) -6-10mcs, т.к. обработчик использует и digitalRead, и работу тайм-аута с 32-разрядными числами:
// ---------------------------------------------------------------------------
// Standard ping methods
// ---------------------------------------------------------------------------

unsigned int NewPing::ping(unsigned int max_cm_distance) {
if (max_cm_distance > 0) set_max_distance(max_cm_distance); // Call function to set a new max sensor distance.

if (!ping_trigger()) return NO_ECHO; // Trigger a ping, if it returns false, return NO_ECHO to the calling function.

#if URM37_ENABLED == true
#if DO_BITWISE == true
while (!(*_echoInput & _echoBit)) // Wait for the ping echo.
#else
while (!digitalRead(_echoPin)) // Wait for the ping echo.
#endif
if (micros() > _max_time) return NO_ECHO; // Stop the loop and return NO_ECHO (false) if we're beyond the set maximum distance.
#else
#if DO_BITWISE == true
while (*_echoInput & _echoBit) // Wait for the ping echo.
#else
while (digitalRead(_echoPin)) // Wait for the ping echo.
#endif
if (micros() > _max_time) return NO_ECHO; // Stop the loop and return NO_ECHO (false) if we're beyond the set maximum distance.
#endif

return (micros() - (_max_time - _maxEchoTime) - PING_OVERHEAD); // Calculate ping time, include overhead.
}

Надо также иметь ввиду использование библиотекой NewPing таймеров: для AVR328 - это таймер 2 на котором сидят пины 3,11 ШИМ. При переходе на другой контроллер (ESP32,STM32), будут проблемы - они пока не прописаны в библиотеке.
-------
Более естественным для этой задачи (по мнению ecoins) является использование аппаратных прерываний, которые поддерживаются всеми контроллерами, включенных в Arduino IDE.
Мне пока известна только одна такая библиотека для SR04 (Амперка) - но она написана только для AVR328, MEGA и при этом захватывает все пины работающие с прерываниями (6шт.) - скоростной счетчик или энкодер уже не подключить.
Отчасти трудности связаны с особенностью оформления прерываний в Arduino IDE.
-------------
В библиотеке и блоке RT_HW_HC_SR04.h не без труда удалось разрешить эти проблемы и блок работает по аппаратным внешним прерываниям, используя прерывания только от подключенного пина.
-----------
По использованию одного пина. Потребовались исследования (осциллограф, испытания и т.п.), чтобы прийти к некому решению:
1. Замкнуть echo и trig - во многих случаях работает, но не всегда;
2. Резистор 2 ком между echo и trig , устойчиво работает, но иногда не очень (от партии SR04 зависит).
3. Резистор 510 ом - устойчивое решение. Если посмотреть осциллограммы, станет понятно почему.
----
По усреднению.
Это во многом от лукавого. Датчик ловит отражения, особенно при движении датчика чего-то не так измеряет. И перевод времени в мм не столь линеен, как представлялось до испытаний. Самое верное - получать на выходе время и далее пользователь ставит фильтр по выбору.
На выходе блока ecoins можно получать результат в mcs, мм, см, тоже самое усредненное, и еще библиотека отбрасывает случайные измерения (бывают и такие).
----
По простоте использования в базовом исполнении: входа EN,пин Echo - можно убрать EN; выходы дистанция и флаг наличия датчика (последний можно убрать и не использовать).
Эта простота (или не очень) результат работы, на который ушло более года.

Ответить

Вернуться в «Библиотеки пользователей»

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 1 гость