Здесь два варианта развития событий, либо вы пользуетесь двухсторонней связью экран-ардуино либо только передаете данные в ардуино. Во втором случае вы можете вообще обойтись без библиотек и обрабатывать только посылки формата
65 2 2 0 ffff ffff ffff (событие_номер страницы_id элемента_значение_конец посылки)
Вот выдержка из описания дисплэя
65: This message is a touch event
0: The page ID is 0
2: Component ID (the number of the first button in the Editor)
0: Type of event. A «0» means a Release event, A «1» is a Press event
FFFF FFFF FFFF: The end of message pattern
У каждого нажатия они свои, поэтому особых проблем возникнуть не должно и экран станет красивым пультом управления с возможностью анимации иконки при нажатии, но без обратной связи, в противном случае библиотека необходима для удобства работы.
По сути вам достаточно добавить любой кликабельный элемент, например кнопку, и поставить галочку во вкладке Event
Причем код экран может отправлять как при нажатии на кнопку (Press Event), так и при событии, когда вы убираете палец с кнопки (Release Event)
Вы можете посмотреть результат нажатия на терминале запустив соответствующий пример из библиотеки либо в эмуляторе
Собственно вот что получится на выходе, если запустить симулятор
Далее я запустил пример из библиотеки для кнопки
К сожалению описания что он должен делать нет, как всегда, собственно, поэтому приходится разбираться самому
void buttonToggle(boolean &buttonState, String objName, uint8_t picDefualtId, uint8_t picPressedId);
Этот кусочек кода из библиотеки дает понятие какие аргументы принимает функция, с большой вероятностью так придется просматривать все функции библиотеки.
Итак, разбираем кусок if
if (message == «65 0 2 0 ffff ffff ffff») { //если получаем код нажатой кнопки
myNextion.buttonToggle(button2State, «b1», 0, 2);//меняем цвет (фон) кнопки
Предпочел бы прочитать это в комментариях к нему, но не догадываться самому. Как итог пример не заработал )))
Но если заменить buttonToggle на что попроще то получится пример, который обрабатывает нажатие 2х кнопок ON и OFF для светодиода, для полноты ощущений еще и меняет надписи на кнопках со стандартных на нужные:
if (message == "65 0 1 0 ffff ffff ffff") {
myNextion.setComponentText("b0", "ON");
Дополнительная информация
#include <SoftwareSerial.h>
#include <Nextion.h>
SoftwareSerial nextion(2, 3);// Nextion TX to pin 2 and RX to pin 3 of Arduino
Nextion myNextion(nextion, 9600); //create a Nextion object named myNextion using the nextion serial port @ 9600bps
boolean button1State;
boolean button2State;
void setup() {
Serial.begin(9600);
myNextion.init(); // send the initialization commands for Page 0
pinMode(13, OUTPUT);
}
void loop() {
String message = myNextion.listen(); //check for message
if (message == "65 0 1 0 ffff ffff ffff") {
myNextion.setComponentText("b0", "ON");
digitalWrite(13, HIGH);
}
if (message == "65 0 2 0 ffff ffff ffff") {
myNextion.setComponentText("b1", "OFF");
digitalWrite(13, LOW);
}
}
Результат работы кода: при нажатии на кнопку на ней меняется надпись на «ON» и загорается диод на 13 ноге, вторая кнопка его выключает.
Думаю как поймать момент нажатия понятно, а вот с обработкой события еще нужно будет разбираться, в любом случае библиотека не единственная, но самая простая в обращении и я хочу понять именно ее, помощь приветствуется.
особенно про сценарии применения и их реализацию.
За обзор плюс.
Но если упс неуправляемый — то смысл? они дольше 20 минут всеравно не держат…
В обслуживании Smart-UPS RT 8000 XL с доп батарейными модулями все с картами AP9618. Условия эксплуатации — не самые лучшие. Сети нет (можно сделать сеть только между локально стоящими ИБП… от 3-х… до 6 штук), но есть круглосуточный обслуживающий персонал. Так вот чтоб он видел «что с ними происходит и решили поставить монитор чтоб можно было отслеживать состояние ИБП, а что там уж будет отображаться родная ВЭБморда или через программу Power Shute — это уже без разницs. Тут поиск самого маленького и дешевого компьютера с выходом VGA с LAN и хотябы одним USB…
Опустим нюансы, скажу лишь про то, что об использовании их родного конвертера СОМ-ЮСБ лучше забыть сразу, у меня их поделка вылетала раз в 4-6 дней, без перезагрузки компа не лечилось.
Подключил напрямую к СОМ, работает больше года непрерывно.
Но как по мне, то если необходимо надежное соединение, то только СОМ.
Бесспорно… вот только он не «дальнобойный»… а так да, лежит пару заказанных и не опробованных конвертеров COM <-> LAN, все никак руки не дойдут…
Тогда RS485, но плата для него денег прилично стоит.
Случайно не MOXA? Имею такие в хозяйстве, 2хRS232-TCP.
Про RS485 уже думал, но провода тянуть… по эстакадам кабельным… жуть, хочу все таки монитор с одноплатником в стойку а дальше попробовать вытянуть по силовым проводам через «PowerLine»… сейчас пытаюсь выбрать чего нить не сильно быстродействующее но дальнобойное и дуракоустойчивое.
А платы нет, не моха (моха есть только преобразователь USB <-> во всё...) такие вот 1 и 2 ждут своей
очередиучасти.(rasbery PI)
Для «сделать индикатор уровня заряда АКБ в качестве разминки» — выше крыши, плюс они — OLED со всеми вытекающими плюшками.
А если уж охота большой экран тач и все такое — то про Arduino лучше забыть и перейти на STM.
Там и память норм и DMA есть — вобщем — взрослое все.
Ибо если этот экран в связке с Arduino юзать это ну примерно как приделать к велосипеду двигатель от болида — да, работать будет и ехать даже, и даже хорошо ехать, но потенциал раскрыт даже на 10% не будет.
Вот что я делал с подобным экраном пол года назад
Но с ардуиной я его тогда не дружил, не было необходимости.
Т.е. — да, просто, но у Вас мозги в экране в десятки раз превосходят мозги управления.
Базовую менюшку сделать — можно заюзать кучу готовых библиотек, а на самом деле и самому написать — 5 минут. 3D графики — да — не будет, а зачем она на 1.3" экране? Ну или для задачи «уровень заряда АКБ»?
Пример:
Или:
Этого более чем достаточно.
для людей, которым необходимо просто сделать разовое устройство для своих нужд и нет желания учить лишние языки программирования, абсолютно без разницы чьи там в платах мозги круче — главное, чтобы всё работало, как планировалось =)
я как-то тоже делал небольшое видео, связав с гироскопом
Тогда и экрана вообще не надо, а если надо — смарт дешевый подключил и все — управляй с него всегда — еще и дешевле выйдет чем данный экран.
По сути — это не экран, а полноценный комп, мощнее в десятки раз того, что им пытается управлять :D
А что касается отладки — полно библиотек, которые уже реализуют меню и стандартные конфигурируемые значения там (цифры, логические значения, строки) — все давно уже сделано — бери и пользуйся.
Я все прототипы пишу на JS, сэмулировав там через canvas буфер OLED-а. Почему на JS — очень быстро ваять прототипы + только один поток (если воркеры не юзать) — почти также как в однокристаллке.
Написать, подправить и отладить, а затем просто перекодить на Си. JS — Си-подобный язык — достаточно быстро переносится.
Ну и пять минут — утрированно естественно. Пару часов примерно. Не нагнетайте.
Там вроде бы какой-то СТМ стоит, так что больше. А уж памяти…
Кстати, если очень хочется, то можно, управление и на экран перенести. Только это не экран. Это можно считать компьютером с вводом выводом через UART и сенсорный экран.
А к чему Вы это?
Про что я и говорил.
Будем считать, я неудачно пошутил, а у вас всё очень выверено и точно.
А к чему вы это говорили? Ситуации, когда система отображения данных
мощнее системы сбора данных встречается.
Во первых — мне (надеюсь как и многим другим) было интересно.
Во вторых — ваши труды, как мне кажется, выводят данный ресурс на более достойный уровень.
P.S. уж больно надоели эти рейтузы, тем более на одном и том же. )
Да и вообще в ФЛПроге можно собирать прошивки для ардуины без необходимости писать код.
Не рыба, не мясо — ИМХО. ©
А тут Учебный курс по AVR
Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.