Набор блоков ЭНКОДЕР

Пользовательские блоки расширяющие базовый функуионал программы по работе с различными датчиками и энкодерами
Правила форума
Рекомендации по размещению блоков:
Автор блока создает подробное описание блока, отличие от подобных(если есть на данный момент).Сложные блоки очень желательно с примерами.
При выходе новых версий редактирует/дополняет свой первый пост с указанием даты, версии, причины.
В каждой теме обсуждается только выложенный автором блок - баги, возможность (или предложение) доработки и прочие хотелки.
Свои блоки, переработанные, с другими библиотеками, протоколами и т.д.- размещаем либо сами отдельно, либо обсуждаем и дорабатываем в форуме Разработка блоков.
Пользователи улучшив блок автора и проверив его работоспособность - могут обратиться к автору или модераторам с просьбой добавить их версию блока в первое сообщение темы.
Аватара пользователя
Dryundel
Полковник
Сообщения: 2401
Зарегистрирован: 22.05.2017{, 23:15}
Репутация: 783
Откуда: Ярославль
Имя: Андрей
Контактная информация:

Набор блоков ЭНКОДЕР

#1

Сообщение Dryundel » 13.03.2019{, 23:00}

Тема устарела и морально и технически.
Новый блок EncoderPro здесь.

Сколько ни пытался найти удовлетворяющий меня блок энкодера, не получилось.
Выкладываю свои варианты. Здоровая критика приветствуется.
1.jpg
Скачать все одним архивом:
Энкодеры от Dryundel.ubl
(664.68 КБ) 1109 скачиваний
Блоки написаны на основе библиотеки Encoder.h
Могут работать на любых пинах, но на пинах поддерживающих прерывание результат самый лучший.
***
Энкодер_импульсный_v1.0_(CODE).ubi
(119.81 КБ) 504 скачивания
Энкодер_импульсный_v1.1_(CODE).ubi
(135.99 КБ) 701 скачивание
2.jpg
2.jpg (6.11 КБ) 20025 просмотров
Эти два блока выдают тики на выходах Up и Down (Вперед / Назад)
Отличие Энкодер_импульсный_v1.1 в том, что в нем можно настроить количество импульсов выдаваемых энкодером за один физический шаг.

Описание:
Энкодер_импульсный_v1.0
СпойлерПоказать
Энкодер импульсный v1.0

EncTic v1.0 - отслеживает импульсы датчиков энкодера, используея квадратурный медот подсчета импульсов и определяет напавление вращения.
В зависимости от направления вращения, на выходах Up или Down формируются импульсы, соответствующие одному физическому шагу энкодера..
В параметрах пользователя необходимо:
1. Указать 2 пина к которым подключены CLK и DT энкодера.

Есть три варианта подключения (из описания библиотеки):
1. Лучший результат - используются два пина поддерживающие прерывания.
2. Хорошая производительность - один из пинов поддерживает прерывания.
3. Низкая поизводительность - оба пина не поддерживают прерывания.

Ограничения:
1, Не рекомендуется использовать пины к которым подключена светодиодная индикация (в большинстве случаев Pin 13)!!!
2. Если одним энкодером задействованы два пина пина поддерживающие прерывание, то в проекте нельзя использовать более одного блока. Если хотя бы один из пинов к которому подключен энкодер не поддерживает прерывание, ограничение снимается.

При использовании длинных проводов между энкодером и платой можно поставить подтягивающий резистор 1К.

Пины поддерживающие прерывания на различных платах Arduino:
UNO - Pin 2,3
LEONARDO - Pin 0,1,2,3
MEGA - Pin 2,3,18,19,20,21
DUE - все

На основе библиотеки http://www.pjrc.com/teensy/td_libs_Encoder.html

Энкодер_импульсный_v1.1
СпойлерПоказать
Энкодер импульсный v1.1

EncTic v1.1 - отслеживает импульсы датчиков энкодера, используея квадратурный медот подсчета импульсов и определяет напавление вращения.
В зависимости от направления вращения, на выходах Up или Down формируются импульсы, соответствующие одному физическому шагу энкодера..
В параметрах пользователя необходимо:
1. Указать 2 пина к которым подключены CLK и DT энкодера.
2. Установить значение TicStep соответствующее количеству тиков на один физический шаг энкодера.
Пример: При использовании энкодера EC-11 ( KY-040) на один физический шаг EncTic выдает 2 тика, поэтому надо поставить TicStep = 2.

Есть три варианта подключения (из описания библиотеки):
1. Лучший результат - используются два пина поддерживающие прерывания.
2. Хорошая производительность - один из пинов поддерживает прерывания.
3. Низкая поизводительность - оба пина не поддерживают прерывания.

Ограничения:
1, Не рекомендуется использовать пины к которым подключена светодиодная индикация (в большинстве случаев Pin 13)!!!
2. Если одним энкодером задействованы два пина пина поддерживающие прерывание, то в проекте нельзя использовать более одного блока. Если хотя бы один из пинов к которому подключен энкодер не поддерживает прерывание, ограничение снимается.

При использовании длинных проводов между энкодером и платой можно поставить подтягивающий резистор 1К.

Пины поддерживающие прерывания на различных платах Arduino:
UNO - Pin 2,3
LEONARDO - Pin 0,1,2,3
MEGA - Pin 2,3,18,19,20,21
DUE - все

На основе библиотеки http://www.pjrc.com/teensy/td_libs_Encoder.html

Другие блоки для энкодера:
Тестер для энкодера
Блок энкодера для одноуровневого меню
Последний раз редактировалось Dryundel 10.09.2021{, 14:44}, всего редактировалось 3 раза.

starik3000
Рядовой
Сообщения: 72
Зарегистрирован: 06.04.2020{, 10:53}
Репутация: 5
Имя: Павел

Набор блоков ЭНКОДЕР

#101

Сообщение starik3000 » 17.01.2021{, 20:45}

noanylag,

этот работает
Вложения
Encoder_Wemos_(Code_-_Basic).ubi
(404.04 КБ) 138 скачиваний

noanylag
Рядовой
Сообщения: 37
Зарегистрирован: 24.04.2017{, 02:18}
Репутация: 0

Набор блоков ЭНКОДЕР

#102

Сообщение noanylag » 18.01.2021{, 23:00}

starik3000 писал(а):
17.01.2021{, 20:45}
noanylag,

этот работает
Что то не загружается - выдает ошибку при попытке загрузить в "пользовательские"...

starik3000
Рядовой
Сообщения: 72
Зарегистрирован: 06.04.2020{, 10:53}
Репутация: 5
Имя: Павел

Набор блоков ЭНКОДЕР

#103

Сообщение starik3000 » 18.01.2021{, 23:32}

noanylag,
Вложения
samokatknopka.flp
(512.42 КБ) 94 скачивания

noanylag
Рядовой
Сообщения: 37
Зарегистрирован: 24.04.2017{, 02:18}
Репутация: 0

Набор блоков ЭНКОДЕР

#104

Сообщение noanylag » 19.01.2021{, 20:46}

starik3000 писал(а):
18.01.2021{, 23:32}
noanylag,
СпойлерПоказать
error.jpg
error.jpg (22.75 КБ) 1677 просмотров

Аватара пользователя
Pratak
Сержант
Сообщения: 206
Зарегистрирован: 08.02.2016{, 20:21}
Репутация: 6
Имя: Дмитрий

Набор блоков ЭНКОДЕР

#105

Сообщение Pratak » 23.02.2021{, 18:44}

starik3000 писал(а):
17.01.2021{, 20:45}
этот работает
Что то у меня нажатие не работает, хотя мультиметром проверил - кнопка исправна. Кто нибудь сталкивался?
Изображение

Аватара пользователя
Sator
Рядовой
Сообщения: 20
Зарегистрирован: 31.03.2021{, 21:05}
Репутация: 0
Имя: Алексей

Набор блоков ЭНКОДЕР

#106

Сообщение Sator » 08.04.2021{, 18:49}

starik3000 писал(а):
17.01.2021{, 20:45}
noanylag,

этот работает
Простите за вопрос начинающего нуба, а как подключается этот блок в железе? Где пины указывать? В IDE при заливке скетча? Играюсь с NodeMCU, поэтому, если можно, то хотелось бы ответ услышать применительно к ней. Спасибо.

Аватара пользователя
Sator
Рядовой
Сообщения: 20
Зарегистрирован: 31.03.2021{, 21:05}
Репутация: 0
Имя: Алексей

Набор блоков ЭНКОДЕР

#107

Сообщение Sator » 14.04.2021{, 19:29}

Понимаю, что нужно применить " ICACHE_RAM_ATTR ", но не знаю как. Недостаточно знаний... Пробовал в энкодере без использования библиотеки - работает,ESPшка перестала вешаться.
Это волшебное ICACHE_RAM_ATTR - чисто фишка ESP. Как я понял, такое объявление функций при компиляции размещает эту функцию в оперативной памяти. Что весьма критично для всяких там обработчиков прерываний и все такое. А нам при работе с энкодером как раз и приходится ловить прерывания.

Чтобы указать помпилятору на необходимость применения директивы ICACHE_RAM_ATTR использованиии ESP, следует перед процедурой setup () указать такое: bool ICACHE_RAM_ATTR _isTimer (); - это если нам надо разместить в оперативной памяти процедуру _isTimer (). Ну и остальные процедуры, если нужно - тоже. Само тело процедуры может располагаться где угодно.

Правда, это нужно каждый раз лезть в текст прошивки и вписывать это ручками, что не есть комильфо. Возможно, есть более удобный способ, но мне он неизвестен.

Ответить

Вернуться в «Датчики и энкодеры»