На сайте Описание работы с TFT Nextion экранами (первый запуск, создание интерфейса, обработчик для arduino) - Описания, примеры, подключение к Arduino нашел урок по работе
с кнопками, управлением ШИМ и прочей периферией Nextion.
Я попытался начать с одной кнопкой - заработало нормально
но подключить вторую не смог. Правда с Си++ знаком очень
поверхностно. Если не сложно посмотрите код ,как подключить вторую кнопку.
‘’’
#include <SoftwareSerial.h> // Подключаем библиотеку
//SoftwareSerial для работы с программным UART
const uint8_t pinRX = 4;
const uint8_t pinTX = 5;
const uint8_t pinVD1 = 6;
const uint8_t pinVD2 = 7;
const uint8_t pinR = A0;
SoftwareSerial softSerial(pinRX,pinTX);
void setup(){
softSerial.begin(9600); // Инициируем передачу данных по программному UART на
//скорости 9600 бит/сек
pinMode(pinVD1, OUTPUT); // вывод pinVD1 как выход
pinMode(pinVD2, OUTPUT); // вывод pinVD2 как выход
// Устанавливаем состояние первого светодиода:
softSerial.print((String) "print h0.val"+char(255)+char(255)+char(255)); // Отправляем
//команду дисплею: print h0.val заканчивая её тремя байтами 0xFF
while(!softSerial.available()){}
// Ждём ответа. Дисплей должен вернуть состояние слайдера h0, отправив 4 байта данных
analogWrite(pinVD1, softSerial.read()); delay(10);
// Устанавливаем на выводе pinVD1 сигнал ШИМ с коэффициентом заполнения равным
//значению первого принятого байта ответа дисплея
while(softSerial.available()){softSerial.read(); delay(10);} // Читаем остальные 3
//байта ответа ничего с ними не делая, так как установленный диапазон значений слайдера
//от 0 до 255 уместился в первом байте данных
// Устанавливаем состояние второго светодиода:
softSerial.print((String) "print bt0.val"+char(255)+char(255)+char(255)); // Отправляем
//команду дисплею: «print bt0.val» заканчивая её тремя байтами 0xFF
while(!softSerial.available()){}
// Ждём ответа. Дисплей должен вернуть состояние кнопки bt0, отправив 4 байта данных,
//где 1 байт равен 0x01 или 0x00, а остальные 3 равны 0x00
digitalWrite(pinVD2, softSerial.read()); delay(10); // Устанавливаем на
//выводе pinVD2 состояние в соответствии с первым принятым байтом ответа дисплея
while(softSerial.available()){softSerial.read(); delay(10);}
// Читаем остальные 3 байта ответа ничего с ними не делая, так как состояние кнопки было
//передано в первом байте
}
void loop(){
if(softSerial.available()>0){
String str; // Объявляем строку для получения этих данных
while(softSerial.available()){str+=char(softSerial.read()); delay(10);}
// Читаем принятые от дисплея данные побайтно в строку str
for(int i=0; i<str.length(); i++){
// Проходимся по каждому символу строки str
if(memcmp(&str[i],"h0" ,2)==0){i+=5; analogWrite (pinVD1, str[i-3]);}else
// Если в строке str //начиная с символа i находится текст "h0", значит после него следует 4
// символа (байта)
//данных слайдера, первый из который следует указать как ШИМ для вывода pinVD1
if(memcmp(&str[i],"ON" ,2)==0){i+=1; digitalWrite(pinVD2, HIGH); }else
// Если в строке
//str начиная с символа i находится текст "ON", значит кнопка дисплея была включена,
//устанавливаем высокий уровень на выводе pinVD2
if(memcmp(&str[i],"OFF",3)==0){i+=2; digitalWrite(pinVD2, LOW); }
// Если в строке str
//начиная с символа i находится текст "OFF", значит кнопка дисплея была выключена,
//устанавливаем низкий уровень на выводе pinVD2
}
}
if(millis()%500<=5){delay(5);
// Следующее действие
//выполняем каждые пол секунды
softSerial.print((String)"t0.txt=\""+analogRead(pinR)+"\""+char(255)+char(255)+char(255));
//Отправляем команду дисплею: «t0.txt="текст"» заканчивая её тремя байтами 0xFF. Эта
//команда устанавливает значение для текстового поля t0
} // В качестве текста передаётся значение в
//аналогового входа pinR считанное функцией analogRead
}
‘’’