Не могу найти пример реализации
- Войдите на сайт для отправки комментариев
Всем привет.
Столкнулся с необходимостью ввода произвольной символьной строки в ардуино энкодером.
Скажем - имя сети и пароль.
Реализацию вижу такую - стоит курсор, вращением энкодера выбираем символ, нажатием подтверждаем, символ на экране остается а курсор сдвигается вправо и так далее. Длительное нажатие подтверждает окончательное сохранение в переменную.
И не могу найти даже обсуждения такой темы. Как то не верится что ни разу никто не задавался подобным вопросом и нет примера реализации. Максимум что нарыл - код, который по кругу перебирает символы при вращении энкодера.
Или я неверно поисковый запрос формирую?..
Может есть более удобные способы ввода символов, а я туплю?
Спасибо за наводку.
Тут есть
Может есть более удобные способы ввода символов
Конечно, есть
А вот и про подключение - http://cxem.net/arduino/arduino22.php
цеплять клавиатуру ради необходимости иногда ввести пару строковых переменных - это вряд ли удобнее...
Тогда уже проще по сериал соединению передавать, да и то это громоздко по сравнению с энкодером.
Зато насколько удобнее символы вводить. чем эту крутилку вертеть.
Тогда уже проще по сериал соединению передавать, да и то это громоздко по сравнению с энкодером.
По сериал удобнее. Еще можно передавать по радио, по инету через HTTP-запрос, по блютуз и тд - да мало ли... ИМХО, все это в разы удобнее, чем енкодером по букве вводить.
Кстати, именно поэтому вы и не можете найти пример кода - редко кто буквы енкодером вводит
Автономности совсем же нет. Если речь идет об автономном устройстве и нечастом вводе - что удобнее в реализации чем энкодер. Одна деталь и одна дырка в корпусе изделия.
Кстати, пример таки нагуглил уже.
https://pastebin.com/brADZGJb
Спроси себя, как неверно введенный символ корректировать будешь. Энкодером
В другую сторону крутить?
сохранить и заново вводить переменную. проще некуда
не?
напомню, речь идет о возможности периодического изменения строковых переменных (в моем случае ssid и pass), а не об ежедневном введении кучи символов.
В другую сторону крутить?
дак он уже на кнопку подтверждения нажал, позиция переместилась на следующую. А в момент нажатия, энкодер импульс дал и буква изменилась на следующую/предыдущую. Как вернуца взат?
Вот будем конкретны - есть пользовательское устройство, передающее данные по вай-фаю и требующее простую возможность при необходимости изменить данные сети подключения и служебный идентификатор пакета.
Экран и энкодер у нас уже есть для работы с экранным меню.
Ваш способ реализации?
Я бы и не заморачивался над возможностью исправления или отмены. Ошибся - сохранись и заново вводи.
В другую сторону крутить?
Ну это как запрограммирует. На самом деле ничего сложного нет, делал устройство и как раз весь ввод был от энкодера. Тут можно посмотреть короткое видео как перемещаться по меню и параметрам энкодером, как выбираются и сохряняются значения, это начало проекта https://www.youtube.com/watch?v=RkG8AM3xSgU
Так же и время и другие параметры устанавливаются энкодером. Буквы правда не вводил, надобности не было, но и сложности ввод букв не представляет, особенно если это ввод настроек, ввел один раз, сохранил и потом при необходимости только корректируешь.
Начет простоты ТС прав, достаточно одного отверстия в корпусе. Код для энкодера взял сдесь же на форуме
http://arduino.ru/forum/apparatnye-voprosy/ispolzuem-enkoder?page=2#comment-111309
Спасибо Dimax за предоставлоенный код, так же ниже в той ветке форума он его дополнил, может кому пригодится. Код работает как часы, во всяком случае у меня проблем не возникло, энкодер с али экспесс.
Ваш способ реализации?
Если устройство предполагает удобный доступ - сделать в нём разъём под клавиатуру. Подошёл - воткнул - сделал - вытащил и ушёл.
Если удобный доступ не гарантирован - сделать управление через web или через Андроид-приложение. Первое мне нравится больше, т.к. более универсально.
ТС, родной! Тебя троллят, а ты ведешься.
Это, конечно, забавно...
---
Делай, как решил, это элементарно. И коррекцию сделать проще некуда:
1.режим навигации по меню - то, что у тебя сейчас есть;
2.режим выбора позиции - катаемся по значению переменной, выбирая буковку, можно встать за последней позицией, для добавления;
3.режим редактирования/добавления буквы, одна из букв выбора - удаление текущей буквы..
4.переход между режимами - длинным нажатием.
---------------
Если сам не можешь такое написать, то иди в "Ищу исполнителя". Но тут, в целом, достаточно просто. Не скажу, что тривиально, но и не сложно.
Красота исполнения во многом зависит от применяемого экрана. Что и как перерисовывать, чтобы не моргало, как подсвечивать выбор и т.п.
Успехов!
Вот реально по сути комментарий. Спасибо.
Вот реально по сути комментарий. Спасибо.
Ну это как запрограммирует. На самом деле ничего сложного нет, делал устройство и как раз весь ввод был от энкодера. Тут можно посмотреть короткое видео как перемещаться по меню и параметрам энкодером, как выбираются и сохряняются значения, это начало проекта https://www.youtube.com/watch?v=RkG8AM3xSgU
Вводить одной и той же кнопкой взаимоисключающие команды (например, OK и CANCEL) - принципиально неверное решение. Дрогнула рука, перед нажатием указатель энкодера переместился на другую позицию, и произошла потеря данных, аварийная ситуация и пр.
Нужно не жадничать, и добавить хотя бы одну (а лучше - две) кнопки.
Нормально енкодером. Крутим - перебираем символы. Короткое нажатие - переход к новому символу. Длинное нажатие - завершение ввода. Вращение при нажатом - перемещение курсора по введеным символам для исправления. Двойной клик - выход без ввода.
Вот реально по сути комментарий. Спасибо.
Перефоразирую старый анекдот:
- Влад! Вот ты за сколько стометровку пробежишь?
- Ну не знаю... баксов за 300, не меньше.