Не могу найти пример реализации

lues
Offline
Зарегистрирован: 10.06.2016

Всем привет.

 

Столкнулся с необходимостью ввода произвольной символьной строки в ардуино энкодером.

Скажем - имя сети и пароль. 

Реализацию вижу такую - стоит курсор, вращением энкодера выбираем символ, нажатием подтверждаем, символ на экране остается а курсор сдвигается вправо и так далее. Длительное нажатие подтверждает окончательное сохранение в переменную.

И не могу найти даже обсуждения такой темы. Как то не верится что ни разу никто не задавался подобным вопросом и нет примера реализации. Максимум что нарыл - код, который по кругу перебирает символы при вращении энкодера.

Или я неверно поисковый запрос формирую?..

Может есть более удобные способы ввода символов, а я туплю?

Спасибо за наводку.

mobistrike
mobistrike аватар
Offline
Зарегистрирован: 19.08.2016
ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

lues пишет:

Может есть более удобные способы ввода символов

Конечно, есть

А вот и про подключение - http://cxem.net/arduino/arduino22.php

lues
Offline
Зарегистрирован: 10.06.2016

цеплять клавиатуру ради необходимости иногда ввести пару строковых переменных - это вряд ли удобнее...

Тогда уже проще по сериал соединению передавать, да и то это громоздко по сравнению с энкодером.

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

Зато насколько удобнее символы вводить. чем эту крутилку вертеть.

b707
Offline
Зарегистрирован: 26.05.2017

lues пишет:

Тогда уже проще по сериал соединению передавать, да и то это громоздко по сравнению с энкодером.

По сериал удобнее. Еще можно передавать по радио, по инету через HTTP-запрос, по блютуз и тд - да мало ли... ИМХО, все это в разы удобнее, чем енкодером по букве вводить.

Кстати, именно поэтому вы и не можете найти пример кода - редко кто буквы енкодером вводит

lues
Offline
Зарегистрирован: 10.06.2016

Автономности совсем же нет. Если речь идет об автономном устройстве и нечастом вводе - что удобнее в реализации чем энкодер. Одна деталь и одна дырка в корпусе изделия.

Кстати, пример таки нагуглил уже.

https://pastebin.com/brADZGJb

DetSimen
DetSimen аватар
Offline
Зарегистрирован: 25.01.2017

Спроси себя, как неверно введенный символ корректировать будешь. Энкодером

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

В другую сторону крутить?

lues
Offline
Зарегистрирован: 10.06.2016

сохранить и заново вводить переменную. проще некуда

не?

напомню, речь идет о возможности периодического изменения строковых переменных (в моем случае ssid и pass), а не об ежедневном введении кучи символов.

 

DetSimen
DetSimen аватар
Offline
Зарегистрирован: 25.01.2017

ЕвгенийП пишет:

В другую сторону крутить?


дак он уже на кнопку подтверждения нажал, позиция переместилась на следующую. А в момент нажатия, энкодер импульс дал и буква изменилась на следующую/предыдущую. Как вернуца взат?

lues
Offline
Зарегистрирован: 10.06.2016

Вот будем конкретны - есть пользовательское устройство, передающее данные по вай-фаю и требующее простую возможность при необходимости изменить данные сети подключения и служебный идентификатор пакета.

Экран и энкодер у нас уже есть для работы с экранным меню.

Ваш способ реализации?

 

Я бы и не заморачивался над возможностью исправления или отмены. Ошибся - сохранись и заново вводи. 

Andrey12
Andrey12 аватар
Offline
Зарегистрирован: 26.12.2014

ЕвгенийП пишет:

В другую сторону крутить?

Ну это как запрограммирует. На самом деле ничего сложного нет, делал устройство и как раз весь ввод был от энкодера. Тут можно посмотреть короткое видео как перемещаться по меню и параметрам энкодером, как выбираются и сохряняются значения, это начало проекта https://www.youtube.com/watch?v=RkG8AM3xSgU

Так же и время и другие параметры устанавливаются энкодером. Буквы правда не вводил, надобности не было, но и сложности ввод букв не представляет, особенно если это ввод настроек, ввел один раз, сохранил и потом при необходимости только корректируешь.

Начет простоты ТС прав, достаточно одного отверстия в корпусе. Код для энкодера взял сдесь же на форуме

http://arduino.ru/forum/apparatnye-voprosy/ispolzuem-enkoder?page=2#comment-111309

Спасибо Dimax за предоставлоенный код, так же ниже в той ветке форума он его дополнил, может кому пригодится. Код работает как часы, во всяком случае у меня проблем не возникло, энкодер с али экспесс.

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

lues пишет:

Ваш способ реализации?

Если устройство предполагает удобный доступ - сделать в нём разъём под клавиатуру. Подошёл - воткнул - сделал - вытащил и ушёл.

Если удобный доступ не гарантирован - сделать управление через web или через Андроид-приложение. Первое мне нравится больше, т.к. более универсально.

wdrakula
wdrakula аватар
Offline
Зарегистрирован: 15.03.2016

ТС, родной! Тебя троллят, а ты ведешься.

Это, конечно, забавно...

---

Делай, как решил, это элементарно. И коррекцию сделать проще некуда:

1.режим навигации по меню - то, что у тебя сейчас есть;

2.режим выбора позиции - катаемся по значению переменной, выбирая буковку, можно встать за последней позицией, для добавления;

3.режим редактирования/добавления буквы, одна из букв выбора - удаление текущей буквы..

4.переход между режимами - длинным нажатием.

---------------

Если сам не можешь такое написать, то иди в "Ищу исполнителя". Но тут, в целом, достаточно просто. Не скажу, что тривиально, но и не сложно.

Красота исполнения во многом зависит от применяемого экрана. Что и как перерисовывать, чтобы не моргало, как подсвечивать выбор и т.п.

Успехов!

lues
Offline
Зарегистрирован: 10.06.2016

Вот реально по сути комментарий. Спасибо.

qwone
qwone аватар
Offline
Зарегистрирован: 03.07.2016

lues пишет:

Вот реально по сути комментарий. Спасибо.

Все равно за вас этот компонент писать не будет. Или вы предлагаете за эту работу деньги?

andriano
andriano аватар
Offline
Зарегистрирован: 20.06.2015

Andrey12 пишет:

Ну это как запрограммирует. На самом деле ничего сложного нет, делал устройство и как раз весь ввод был от энкодера. Тут можно посмотреть короткое видео как перемещаться по меню и параметрам энкодером, как выбираются и сохряняются значения, это начало проекта https://www.youtube.com/watch?v=RkG8AM3xSgU

Вводить одной и той же кнопкой взаимоисключающие команды (например, OK и CANCEL) - принципиально неверное решение. Дрогнула рука, перед нажатием указатель энкодера переместился на другую позицию, и произошла потеря данных, аварийная ситуация и пр.

Нужно не жадничать, и добавить хотя бы одну (а лучше - две) кнопки.

Logik
Offline
Зарегистрирован: 05.08.2014

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

wdrakula
wdrakula аватар
Offline
Зарегистрирован: 15.03.2016

qwone пишет:

lues пишет:

Вот реально по сути комментарий. Спасибо.

Все равно за вас этот компонент писать не будет. Или вы предлагаете за эту работу деньги?

Перефоразирую старый анекдот:

  - Влад! Вот ты за сколько стометровку пробежишь?

 - Ну не знаю... баксов за 300, не меньше.