Форум Вопросы и темы по программированию Arduino, ESP8266, STM32, Digispark и пр.

Дисплей Nextion урок 2

18 сентября, 2023 - 09:38
как можно добавить кнопки к проекту

Юрий51
Ювий Ювий Зарегистрирован:
12.09.2023
18 сентября, 2023 - 09:45 #1
создание кнопок в  nextion editor проблем не составляет. Но как добавить обработку дополнительных кнопок в скетч Arduino ?
Прошу помощи.


Юрий51
Ювий Ювий Зарегистрирован:
12.09.2023
18 сентября, 2023 - 09:46 #2
String data;// функция отправки конца команды
// команда поступающая в дисплей должна кончаться символами «0xFF0xFF0xFF»
void comandEnd() {
for (int i = 0; i < 3; i++) {
mySerial.write(0xff);
}
}
// отправка на Nextion (номер экрана, название переменной) + данные
void SendInt(String dev, int data)
{
mySerial.print(dev); // Отправляем данные dev(номер экрана, название переменной) на Nextion
mySerial.print("="); // Отправляем данные =(знак равно, далее передаем сами данные) на Nextion
mySerial.print(data); // Отправляем данные data(данные) на Nextion
comandEnd();
dev = ""; // Очищаем переменную
data = ""; // Очищаем переменную
}
void setup() {
// открываем последовательный порт
mySerial.begin(9600);
pinMode(LED_BUILTIN, OUTPUT);
}

void loop() {
// ждём данные от дисплея
if (mySerial.available()) // ждём данные от дисплея
{
char inc;
inc = mySerial.read();
data += inc;
if (inc == 0x0A)//конец команды
{

if (data.indexOf("on") >= 0) // если пришёло 'on'
{
flag = !flag;
digitalWrite(LED_BUILTIN, flag); //управление LED
SendInt("Button.bt0.val", flag);
}
data = "";
}
}

}

Юрий51
Ювий Ювий Зарегистрирован:
12.09.2023
18 сентября, 2023 - 09:48 #3
 // библиотека для эмуляции Serial порта#include <SoftwareSerial.h>// создаём объект mySerial и передаём номера управляющих пинов RX и TX// RX - цифровой вывод 8, необходимо соединить с выводом TX дисплея// TX - цифровой вывод 9, необходимо соединить с выводом RX дисплеяSoftwareSerial mySerial(8, 9);byte flag = 0;byte i = 0;// переменная для хранения данныхString data;// функция отправки конца команды// команда поступающая в дисплей должна кончаться символами «0xFF0xFF0xFF»void comandEnd() {  for (int i = 0; i < 3; i++) {    mySerial.write(0xff);  }}// отправка на Nextion (номер экрана, название переменной) + данныеvoid SendInt(String dev, int data){  mySerial.print(dev);   // Отправляем данные dev(номер экрана, название переменной) на Nextion  mySerial.print("=");   // Отправляем данные =(знак равно, далее передаем сами данные) на Nextion   mySerial.print(data);  // Отправляем данные data(данные) на Nextion  comandEnd();  dev = "";    // Очищаем переменную  data = "";   // Очищаем переменную}void setup() {   // открываем последовательный порт  mySerial.begin(9600);  pinMode(LED_BUILTIN, OUTPUT);}void loop() {    // ждём данные от дисплеяif (mySerial.available())  // ждём данные от дисплея{    char inc;    inc = mySerial.read();    data += inc;    if (inc == 0x0A)//конец команды    {               if (data.indexOf("on") >= 0) // если пришёло 'on'        {           flag = !flag;          digitalWrite(LED_BUILTIN, flag);   //управление LED          SendInt("Button.bt0.val", flag);        }      data = "";    } }}

Юрий51
Ювий Ювий Зарегистрирован:
12.09.2023
18 сентября, 2023 - 09:50 #4
не знаю как удалить 2 предыдущих поста

Юрий51
Ювий Ювий Зарегистрирован:
12.09.2023
18 сентября, 2023 - 09:51 #5
скетч



Юрий51
Ювий Ювий Зарегистрирован:
12.09.2023
18 сентября, 2023 - 09:51 #6
// библиотека для эмуляции Serial порта#include <SoftwareSerial.h>
// создаём объект mySerial и передаём номера управляющих пинов RX и TX
// RX - цифровой вывод 8, необходимо соединить с выводом TX дисплея
// TX - цифровой вывод 9, необходимо соединить с выводом RX дисплея
SoftwareSerial mySerial(8, 9);
byte flag = 0;
byte i = 0;
// переменная для хранения данных
String data;


// функция отправки конца команды
// команда поступающая в дисплей должна кончаться символами «0xFF0xFF0xFF»
void comandEnd() {
for (int i = 0; i < 3; i++) {
mySerial.write(0xff);
}
}
// отправка на Nextion (номер экрана, название переменной) + данные
void SendInt(String dev, int data)
{
mySerial.print(dev); // Отправляем данные dev(номер экрана, название переменной) на Nextion
mySerial.print("="); // Отправляем данные =(знак равно, далее передаем сами данные) на Nextion
mySerial.print(data); // Отправляем данные data(данные) на Nextion
comandEnd();
dev = ""; // Очищаем переменную
data = ""; // Очищаем переменную
}
void setup() {
// открываем последовательный порт
mySerial.begin(9600);
pinMode(LED_BUILTIN, OUTPUT);
}

void loop() {
// ждём данные от дисплея
if (mySerial.available()) // ждём данные от дисплея
{
char inc;
inc = mySerial.read();
data += inc;
if (inc == 0x0A)//конец команды
{

if (data.indexOf("on") >= 0) // если пришёло 'on'
{
flag = !flag;
digitalWrite(LED_BUILTIN, flag); //управление LED
SendInt("Button.bt0.val", flag);
}
data = "";
}
}

}

Юрий51
Ювий Ювий Зарегистрирован:
12.09.2023
18 сентября, 2023 - 10:51 #7
Похоже разобрался сам.
При нажатии кнопки скрипт
 print "хon"
printh 0d 0a
где х это номер кнопки
Скетч для двух кнопок ниже

Юрий51
Ювий Ювий Зарегистрирован:
12.09.2023
18 сентября, 2023 - 10:51 #8
// библиотека для эмуляции Serial порта#include <SoftwareSerial.h>
// создаём объект mySerial и передаём номера управляющих пинов RX и TX
// RX - цифровой вывод 8, необходимо соединить с выводом TX дисплея
// TX - цифровой вывод 9, необходимо соединить с выводом RX дисплея
SoftwareSerial mySerial(8, 9);
byte flag = 0; //для первой кнопки
byte flag1 = 0; //для второй кнопки
byte i = 0;
// переменная для хранения данных
String data;


// функция отправки конца команды
// команда поступающая в дисплей должна кончаться символами «0xFF0xFF0xFF»
void comandEnd() {
for (int i = 0; i < 3; i++) {
mySerial.write(0xff);
}
}
// отправка на Nextion (номер экрана, название переменной) + данные
void SendInt(String dev, int data)
{
mySerial.print(dev); // Отправляем данные dev(номер экрана, название переменной) на Nextion
mySerial.print("="); // Отправляем данные =(знак равно, далее передаем сами данные) на Nextion
mySerial.print(data); // Отправляем данные data(данные) на Nextion
comandEnd();
dev = ""; // Очищаем переменную
data = ""; // Очищаем переменную
}
void setup() {
// открываем последовательный порт
mySerial.begin(9600);
pinMode(13, OUTPUT);
pinMode(12, OUTPUT);
}

void loop()
{
// ждём данные от дисплея
if (mySerial.available()) // ждём данные от дисплея
{
char inc;
inc = mySerial.read();
data += inc;
if (inc == 0x0A)//конец команды
{
if (data.indexOf("0on") >= 0) // если пришёло '0on' первая кнопка
{
flag = !flag;
digitalWrite(13, flag); //управление LED
SendInt("Button.bt0.val", flag);
}
if (data.indexOf("1on") >= 0) // если пришёло '1on'вторая кнопка
{
flag1 = !flag1;
digitalWrite(12, flag1); //управление LED
SendInt("Button.bt1.val", flag1);
}
data = "";
}
}
}

Юрий51
Ювий Ювий Зарегистрирован:
12.09.2023
2 ноября, 2023 - 13:21 #9
Вы код не может добавлять в соответствующие поле! Как вам помочь? Не читабельно! 

Будущее за микроконтроллерами
Admin Admin Зарегистрирован:
3.07.2018

Войдите или Зарегистрируйтесь, чтобы получить возможность отправлять комментарии

Cлучайные товары

Посмотреть товар в Магазине »

Мы в соц сетях

Подпишись на канал Telegram

Portal-PK (Портал ПК) © 2015 - 2024
Разработка проектов
AT Block
DWIN Box