Помощь новичку. Меню и энкодер.
Помощь новичку. Меню и энкодер.
Добрый день!
Опишу что хочу получить:
Система контроля работы тэна и вентиляторов в зависимости от датчиков температуры.
Вывод данных на LCD 1602.
Преключение информации на экране с помощью вращения энкодера.
При выборе экрана с входом в настройки (Settings menu) и нажатии на кнопку эенкодера, активация меню.
В пунктах меню настройка параметров с помощью вращения эенодера, переключения по пунктам меню по нажатию на кнопку энкодера. При выборе пункта меню Exit и нажатии кнопку энкодера - выход из меню.
Сталкнулся со следующими проблемами:
1. После загрузки система сразу оказываеться в Меню,что не нормально , вращение энкодера работает коретно, переход по меню также. Но в пункте меню Exit при нажатии кнопки из меню выход не происходит.
2. Если отключить меню, что бы вход не происходил(заведомо внести ошибку в программу), то отображаеться 1 информационный экран, но переход на другие при вращении энкодера не происходит.
Заметил что на это как то влияет Блок энкодера который участвует в работе Меню. Сменив на нем пины подключения(по сути указав другой энкодер), переключение информации на экране стало коректным, но тем самым настйка параметров в меню стала не возможной.
Я попытался более четко определить работу того или иного блока энеодера, отредактировав блок - добавив вход En, высокий сигнал на котром включал бы данный блок энкодера, файл блока приложу к посту, но нужного эфекта это не дало.
Прошу взглянуть на мою программу, указать на ошибки или предложить варианты решения проблем.
Опишу что хочу получить:
Система контроля работы тэна и вентиляторов в зависимости от датчиков температуры.
Вывод данных на LCD 1602.
Преключение информации на экране с помощью вращения энкодера.
При выборе экрана с входом в настройки (Settings menu) и нажатии на кнопку эенкодера, активация меню.
В пунктах меню настройка параметров с помощью вращения эенодера, переключения по пунктам меню по нажатию на кнопку энкодера. При выборе пункта меню Exit и нажатии кнопку энкодера - выход из меню.
Сталкнулся со следующими проблемами:
1. После загрузки система сразу оказываеться в Меню,что не нормально , вращение энкодера работает коретно, переход по меню также. Но в пункте меню Exit при нажатии кнопки из меню выход не происходит.
2. Если отключить меню, что бы вход не происходил(заведомо внести ошибку в программу), то отображаеться 1 информационный экран, но переход на другие при вращении энкодера не происходит.
Заметил что на это как то влияет Блок энкодера который участвует в работе Меню. Сменив на нем пины подключения(по сути указав другой энкодер), переключение информации на экране стало коректным, но тем самым настйка параметров в меню стала не возможной.
Я попытался более четко определить работу того или иного блока энеодера, отредактировав блок - добавив вход En, высокий сигнал на котром включал бы данный блок энкодера, файл блока приложу к посту, но нужного эфекта это не дало.
Прошу взглянуть на мою программу, указать на ошибки или предложить варианты решения проблем.
У вас нет необходимых прав для просмотра вложений в этом сообщении.
Последний раз редактировалось TipTopBY 04 мар 2017, 15:14, всего редактировалось 1 раз.
- Boroda
- Капитан
- Сообщения: 836
- Зарегистрирован: 01 май 2016, 01:04
- Откуда: Коломна
- Имя: Станислав
- Контактная информация:
Помощь новичку. Меню и энкодер.
TipTopBY, никогда так не делайте, будет микросекундный ногодрыг (вкл/выкл).
Лучше убрать из плат выход МК и в конце программы сделать так. Под конец цикла переменная вся обсчитается, а потом уже ее на выход пускаем.
Лучше убрать из плат выход МК и в конце программы сделать так. Под конец цикла переменная вся обсчитается, а потом уже ее на выход пускаем.
У вас нет необходимых прав для просмотра вложений в этом сообщении.
Последний раз редактировалось Boroda 04 мар 2017, 21:53, всего редактировалось 1 раз.
- Boroda
- Капитан
- Сообщения: 836
- Зарегистрирован: 01 май 2016, 01:04
- Откуда: Коломна
- Имя: Станислав
- Контактная информация:
Помощь новичку. Меню и энкодер.
А еще лучше так. Блоки сравнения могут быть раскиданы по всей программе, а вывод наружу на последней плате. Очень просто строится алгоритм, отслеживать надо только порядок блоков сравнения по приоритету срабатывания.
У вас нет необходимых прав для просмотра вложений в этом сообщении.
Последний раз редактировалось Boroda 04 мар 2017, 21:57, всего редактировалось 1 раз.
- Boroda
- Капитан
- Сообщения: 836
- Зарегистрирован: 01 май 2016, 01:04
- Откуда: Коломна
- Имя: Станислав
- Контактная информация:
Помощь новичку. Меню и энкодер.
У Вас получается, что вентилятор всегда будет работать только по последнему условию "включение вентилятора", а плата "отключение вентилятора" будет бесполезна.
Должно быть так.
Должно быть так.
У вас нет необходимых прав для просмотра вложений в этом сообщении.
Последний раз редактировалось Boroda 04 мар 2017, 22:23, всего редактировалось 1 раз.
- Boroda
- Капитан
- Сообщения: 836
- Зарегистрирован: 01 май 2016, 01:04
- Откуда: Коломна
- Имя: Станислав
- Контактная информация:
Помощь новичку. Меню и энкодер.
У Вас все кнопки на землю замыкаются? Если да, то на всех входах от кнопок надо поставить инверсию. Если инверсии нет, то программа при запуске понимает, что нажаты все кнопки и перещелкивает меню.
У вас нет необходимых прав для просмотра вложений в этом сообщении.
Помощь новичку. Меню и энкодер.
Да Вы правы, я учел этот мемент в управлении подстветкой, а потом почему-то упустил, сейчас выставил инверсию на на всех блоках "Select". Но всеравно при загрузке система оказываеться в Меню. Так же выход из меню не отрабатывает.
- Boroda
- Капитан
- Сообщения: 836
- Зарегистрирован: 01 май 2016, 01:04
- Откуда: Коломна
- Имя: Станислав
- Контактная информация:
Помощь новичку. Меню и энкодер.
Немного причесал Вашу программу, проверьте.
У вас нет необходимых прав для просмотра вложений в этом сообщении.
- Boroda
- Капитан
- Сообщения: 836
- Зарегистрирован: 01 май 2016, 01:04
- Откуда: Коломна
- Имя: Станислав
- Контактная информация:
Помощь новичку. Меню и энкодер.
Маленько упростил энкодер. Ну и под него программу. И сделал сброс в первый пункт при входе в меню.
У вас нет необходимых прав для просмотра вложений в этом сообщении.
Последний раз редактировалось Boroda 04 мар 2017, 23:41, всего редактировалось 1 раз.
Помощь новичку. Меню и энкодер.
Проверил. При загручке показывает информационный экран, ка надо. Но вращение энкодера экраны не переключает. Если сместить пины энкодера Меню, то экраны начинают перключаться, в меню входит, но соответственно энкодер в меню не работает.
Помощь новичку. Меню и энкодер.
Как говорил выше, если сделать программно 2 энкодера, на разных пинах, то все работает. Я соединил на плате пины этих твух програмных энеодеров. Вся заработало, хотя я не уверен что это нормальный способ. Причина проблемы с одним блоком энкодера мне кажеться кроеться в прерывании на пинах МК.
Ещё один нюанс, при входе в Меню оказываешься сразу в пункте Exit, хотя по входу Reset должно происходить сброс меню в 1-й пункт. Я так же установил "Сбрасывать меню по переднему фронту входа En", эти настройки не привели к успеху. Проблема осталась.
Ещё один нюанс, при входе в Меню оказываешься сразу в пункте Exit, хотя по входу Reset должно происходить сброс меню в 1-й пункт. Я так же установил "Сбрасывать меню по переднему фронту входа En", эти настройки не привели к успеху. Проблема осталась.
У вас нет необходимых прав для просмотра вложений в этом сообщении.
- Boroda
- Капитан
- Сообщения: 836
- Зарегистрирован: 01 май 2016, 01:04
- Откуда: Коломна
- Имя: Станислав
- Контактная информация:
Помощь новичку. Меню и энкодер.
А давайте так попробуем! Оставил один энкодер, а дальше сигнал переменными передается. Сделал принудительный переход на 1й пункт.
У вас нет необходимых прав для просмотра вложений в этом сообщении.
Последний раз редактировалось Boroda 05 мар 2017, 12:30, всего редактировалось 1 раз.
Помощь новичку. Меню и энкодер.
Все нормально.
Пару моментов для информации. Перекинул с входа MU на MD, что бы меню листало в нужную сторону.
При компиляции не подставляются номера пинов в энкодере, отредактировал уже в скетче вручную.
Добавил условие выхода из меню, установкой Exit:True , что бы меню настроек крутилось по кругу.
Выкладываю последний вариант. Для меня, пока, все проблемы решены. Огромная благодарность Boroda, за помощь.
Пару моментов для информации. Перекинул с входа MU на MD, что бы меню листало в нужную сторону.
При компиляции не подставляются номера пинов в энкодере, отредактировал уже в скетче вручную.
Добавил условие выхода из меню, установкой Exit:True , что бы меню настроек крутилось по кругу.
Выкладываю последний вариант. Для меня, пока, все проблемы решены. Огромная благодарность Boroda, за помощь.
У вас нет необходимых прав для просмотра вложений в этом сообщении.
Последний раз редактировалось TipTopBY 05 мар 2017, 12:59, всего редактировалось 1 раз.
- Boroda
- Капитан
- Сообщения: 836
- Зарегистрирован: 01 май 2016, 01:04
- Откуда: Коломна
- Имя: Станислав
- Контактная информация:
Помощь новичку. Меню и энкодер.
Вот отредактированный блок энкодера с нормальными ногами.
У вас нет необходимых прав для просмотра вложений в этом сообщении.
Помощь новичку. Меню и энкодер.
Boroda, для блока энкодера нужен дополнительный вывод Set -импульсов на щелчок.
Т. к. у некоторых энкодеров есть еще тактильные щелчки при вращении, и при одном щелчке бывает выдает не 1 импульс а 2 или 4 .
У мня два вида KY-40 от китайских товарищей и один выдает 2 ,а другой 4 импульса.
Т. к. у некоторых энкодеров есть еще тактильные щелчки при вращении, и при одном щелчке бывает выдает не 1 импульс а 2 или 4 .
У мня два вида KY-40 от китайских товарищей и один выдает 2 ,а другой 4 импульса.
Если вы не можете объяснить это просто – значит, вы сами не понимаете этого до конца.
☆Альберт Эйнштейн
☆Альберт Эйнштейн
- Boroda
- Капитан
- Сообщения: 836
- Зарегистрирован: 01 май 2016, 01:04
- Откуда: Коломна
- Имя: Станислав
- Контактная информация:
Помощь новичку. Меню и энкодер.
отстал я от жизни. Китайцы, для того, чтоб не использовать надежные оптические энкодеры, всякие "много импульсов" на щелчек придумывают для гнилых контактных, которые через пол-года начинают глючить.AVGN писал(а):для блока энкодера нужен дополнительный вывод Set
Помощь новичку. Меню и энкодер.
Ну, это как повезет. Я как то в феврале к авиамоделистам заезжал. Так они уже три года очень даже механические KY-40 пользуют. Говорят, что нашли надежного производителя и закупаются.Boroda писал(а):отстал я от жизни. Китайцы, для того, чтоб не использовать надежные оптические энкодеры, всякие "много импульсов" на щелчек придумывают для гнилых контактных, которые через пол-года начинают глючить.
Если вы не можете объяснить это просто – значит, вы сами не понимаете этого до конца.
☆Альберт Эйнштейн
☆Альберт Эйнштейн
- brig62
- Лейтенант
- Сообщения: 469
- Зарегистрирован: 13 май 2016, 16:37
- Откуда: Казань
- Имя: Игорь
- Благодарил (а): 1 раз
Помощь новичку. Меню и энкодер.
Вот и я с этим столкнулся. Пробовал разные блоки энкодера. Ровно 4 единицы прибавляет каждый щелчок. Как с этим бороться? Деление на 4 не помогает))AVGN писал(а):ри одном щелчке бывает выдает не 1 импульс а 2 или 4 .
- Dev1
- Майор
- Сообщения: 1045
- Зарегистрирован: 12 июл 2016, 18:04
- Откуда: Гондурас
- Поблагодарили: 3 раза
Помощь новичку. Меню и энкодер.
Стоит обычный блок Encoder. Мой энкодер то же выдает по 4. Делю так:brig62 писал(а):Вот и я с этим столкнулся. Пробовал разные блоки энкодера. Ровно 4 единицы прибавляет каждый щелчок. Как с этим бороться? Деление на 4 не помогает))
Код: Выделить всё
newPosition = myEnc.read()/4;
Win10-64 FLProg v8.2.3 Portable IDE 1.8.19, 2,x,x 

Помощь новичку. Меню и энкодер.
Вот попробуйте блок.brig62 писал(а):Вот и я с этим столкнулся. Пробовал разные блоки энкодера. Ровно 4 единицы прибавляет каждый щелчок. Как с этим бороться? Деление на 4 не помогает))
От Автора:
Энкодер Детектор
Блок служит для детектирования переключения Энкодера.
Параметры
Set -Импульсов на щелчок
Так как у некоторых энкодеров есть еще тактильные щелчки при вращении, и при одном щелчке бывает выдает не 1 импульс а 2 или 4 ( может и больше)
Вел делитель для получения соответствия щелчок-изменение числа.
DT , CLK - номера пинов подключенных одноименные выхода энкодера (можно использовать любые пины)
period - Период опроса состояния энкодера, в микросекундах, завесить от энкодора
На механических энкодерах достаточно 1000мкс
!!!!Возможны конфликты с блоками где используется Timer1 (из известных мне Rremote, Servo)
!!!!Нельзя использовать совместно с ШИМ на
Arduino Uno 9, 10
Arduino Leonardo 9, 10, 11
Arduino Mega 11, 12, 13
Добавлено (16.03.2017, 11:30)
---------------------------------------------
Что значит "Стоит обычный блок Encoder" ?Dev1 писал(а):Стоит обычный блок Encoder. Мой энкодер то же выдает по 4. Делю так:Код
newPosition = myEnc.read()/4;
В встроенных есть блок Encoder?
И куда Вы приведенный Вами код вставляете?
У вас нет необходимых прав для просмотра вложений в этом сообщении.
Если вы не можете объяснить это просто – значит, вы сами не понимаете этого до конца.
☆Альберт Эйнштейн
☆Альберт Эйнштейн
Кто сейчас на конференции
Сейчас этот форум просматривают: нет зарегистрированных пользователей и 4 гостя