В часах используется pcf8563 - все вопросы к нему. За этот год ни разу не корректировал, отстали чуть более минуты, хотя я их точно стазу не выставлял. С ёмкостным тачем не должно быть проблем, он обрабатывается в МК Nextion мы уже получаем факт нажатия.
Тоже облизнулся но ... цена останавливает. Да и для мелких деталек на экране резистивный лучше. Я свой старый GloFiIsh иногда использую именно из за тача и стилуса. Небольшие заметки удобно делать, в Ведроиде пальцами тыкать запаришься.
Подскажите кто знает есть дисплей все на нем настройл отправка по ID. как без библиотеки работать с ним не могу понял. Подключил к аппаратному сериалу и он кидает в него квадратики((9 Скорост ьвыставлена на нем не могу понял. херь какая то отправлю команду на него типа t1.txt='123' ничего не происходит. херь какая то((( инфу рыл рыл да не нарыл. Если можно строчку кода или ссылку путевую. спс
Ну этот код я видал((( он у меня чет то работает то нет((( но это же пол беды мне больше важно получать данные от трех клавиш. И я вижу что он отправляет только квадратики билн фигян какая то.
Подскажите кто знает есть дисплей все на нем настройл отправка по ID. как без библиотеки работать с ним не могу понял. Подключил к аппаратному сериалу и он кидает в него квадратики((9 Скорост ьвыставлена на нем не могу понял. херь какая то отправлю команду на него типа t1.txt='123' ничего не происходит. херь какая то((( инфу рыл рыл да не нарыл. Если можно строчку кода или ссылку путевую. спс
Вот код для отправки данных
// Arduino Mega
// Разработал stambylov@ya.ru для новичков
//ПОдключение Nextion к Arduino Mega (используем порт №2 для Serial, т.к. порт №1 может понадобится для наладки программы)
//Nextion Arduino
// tx rx(pin19)
// rx tx(pin18)
String temp = ""; // переменная, хранящая все что угодно
void setup()
{
}
void loop() {
Serial1.begin(9600); // Открываем порт Сериал для Nextion
GenerateNewData(); // переходим в функцию отправки данных
delay(5000); // Ждем 5 секунд
}
// Отправка данных на Nextion
void GenerateNewData()
{
temp = "123"; //данные 123
SendData("page1.t1.txt", "\"" + temp + "\""); //Передаем данные для отправки на Nextion в функцию SendData
temp = ""; // Очищаем переменную
}
// отправка на Nextion (номер экрана, название переменной) + данные
void SendData(String dev, String data)
{
Serial1.print(dev); // Отправляем данные dev(номер экрана, название переменной) на Nextion
Serial1.print("="); // Отправляем данные =(знак равно, далее передаем сами данные) на Nextion
Serial1.print(data); // Отправляем данные data(данные) на Nextion
Serial1.write(0xff); // Отправляем данные 0xff(значение показывающее Nextion конец передачи) на Nextion
Serial1.write(0xff); // Отправляем данные 0xff(значение показывающее Nextion конец передачи) на Nextion
Serial1.write(0xff); // Отправляем данные 0xff(значение показывающее Nextion конец передачи) на Nextion
dev = ""; // Очищаем переменную
data = ""; // Очищаем переменную
}
А как принять данные корректно? у меня в ком порту квадратики при нажатии! скорость выставлена одинаковая в чем подвох?
вот посмотри обработку данных с nextoin
// Arduino Mega
// Разработал stambylov@ya.ru для новичков
//ПОдключение Nextion к Arduino Mega (используем порт №2 для Serial, т.к. порт №1 может понадобится для наладки программы)
//Nextion Arduino
// tx rx(pin19)
// rx tx(pin18)
String temp = ""; // переменная, хранящая все что угодно
// переменная для хранения сообщения полученного с nextion
String incStr;
void setup()
{
Serial.begin(9600); // Открываем порт для отладки программы
Serial.println("Start System"); // Выводим начало старта
Serial1.begin(9600); // Открываем порт Сериал для Nextion
}
void loop() {
// Читаем полученные данные с Nextion
if (Serial1.available()) {
char inc;
inc = Serial1.read();
incStr += inc;
if (inc == 0x23) {
incStr = "";
}
if (inc == 0x0A) {
Serial.println("Nextion: ");
Serial.println(incStr);
AnalyseString(incStr); // Переходим в функцию для обработки данных
incStr = "";
inc = "";
}
}
GenerateNewData(); // переходим в функцию отправки данных
delay(5000); // Ждем 5 секунд
}
// Отправка данных на Nextion
void GenerateNewData()
{
temp = "123"; //данные 123
SendData("page1.t1.txt", "\"" + temp + "\""); //Передаем данные для отправки на Nextion в функцию SendData
temp = ""; // Очищаем переменную
}
// отправка на Nextion (номер экрана, название переменной) + данные
void SendData(String dev, String data)
{
Serial1.print(dev); // Отправляем данные dev(номер экрана, название переменной) на Nextion
Serial1.print("="); // Отправляем данные =(знак равно, далее передаем сами данные) на Nextion
Serial1.print(data); // Отправляем данные data(данные) на Nextion
Serial1.write(0xff); // Отправляем данные 0xff(значение показывающее Nextion конец передачи) на Nextion
Serial1.write(0xff); // Отправляем данные 0xff(значение показывающее Nextion конец передачи) на Nextion
Serial1.write(0xff); // Отправляем данные 0xff(значение показывающее Nextion конец передачи) на Nextion
dev = ""; // Очищаем переменную
data = ""; // Очищаем переменную
}
// Смотрим что получили
void AnalyseString(String incStr) {
if (incStr.indexOf("Data1") >= 0) {
// выполняем действие которое надо
}
incStr = "";
}
А как принять данные корректно? у меня в ком порту квадратики при нажатии! скорость выставлена одинаковая в чем подвох?
Простой Проект с кнопкой и текстовым полем на Nextion ссылка
Код для работы с проектом:
// Arduino Mega
// Разработал stambylov@ya.ru для новичков
//ПОдключение Nextion к Arduino Mega (используем порт №2 для Serial, т.к. порт №1 может понадобится для наладки программы)
//Nextion Arduino
// tx rx(pin19)
// rx tx(pin18)
String temp = ""; // переменная, хранящая все что угодно
// переменная для хранения сообщения полученного с nextion
String incStr;
void setup()
{
Serial.begin(9600); // Открываем порт для отладки программы
Serial.println("Start System"); // Выводим начало старта
Serial1.begin(9600); // Открываем порт Сериал для Nextion
}
void loop() {
// Читаем полученные данные с Nextion
if (Serial1.available()) {
char inc;
inc = Serial1.read();
incStr += inc;
if (inc == 0x23) {
incStr = "";
}
if (inc == 0x0A) {
Serial.println("Nextion: ");
Serial.println(incStr);
AnalyseString(incStr); // Переходим в функцию для обработки данных
incStr = "";
inc = "";
}
}
}
// отправка на Nextion (номер экрана, название переменной) + данные
void SendData(String dev, String data)
{
Serial1.print(dev); // Отправляем данные dev(номер экрана, название переменной) на Nextion
Serial1.print("="); // Отправляем данные =(знак равно, далее передаем сами данные) на Nextion
Serial1.print(data); // Отправляем данные data(данные) на Nextion
Serial1.write(0xff); // Отправляем данные 0xff(значение показывающее Nextion конец передачи) на Nextion
Serial1.write(0xff); // Отправляем данные 0xff(значение показывающее Nextion конец передачи) на Nextion
Serial1.write(0xff); // Отправляем данные 0xff(значение показывающее Nextion конец передачи) на Nextion
dev = ""; // Очищаем переменную
data = ""; // Очищаем переменную
}
// Смотрим что получили
void AnalyseString(String incStr) {
if (incStr.indexOf("Data1") >= 0) {
// отправляем на Nextion
temp = "Hello,123"; //данные Hello,123
SendData("page0.t1.txt", "\"" + temp + "\""); //Передаем данные для отправки на Nextion в функцию SendData
temp = ""; // Очищаем переменную
}
incStr = "";
}
Да это я видел. А проще никак крч да? Печаль( А что думаете про мои квадратики в ком порту? Я как их увидел голову сломал. Во многих постах сразу видно код если по ID передача идет а у меня квадратики.
Да это я видел. А проще никак крч да? Печаль( А что думаете про мои квадратики в ком порту? Я как их увидел голову сломал. Во многих постах сразу видно код если по ID передача идет а у меня квадратики.
Вот как работает ваш и другие коды на получение данных от экрана. Вот о чем я говорю. Причем так везде! т.е. и в CoolTerm и в Arduino IDE ппц не могу понять. как будто скорости разные хотя я выставлял в экране скорость.
С принятием данных разобрался. Теперь осталось понят ь почему он не хочет хавать даже жестко такую строчку page0.t2.txt="31"0xff0xff0xff. Пытаюсь банально руками изменить компанент t0. никакой реакции(((
page0 не нужно! Т.к. дисплей разумеет что работа ведется именно с этой страницей! ИЗМЕНЕНИЯ чего либо на "НЕ АКТИВНОЙ" странице НЕ ПРОКАТИТ!
Если в проекте много страниц, то нужно, т.к. например открыта страница page1, а данные нужно кинуть на page0 в переменную, чтоб при переходе данные отобразились сразу и те которые именно сейчас.
page0 не нужно! Т.к. дисплей разумеет что работа ведется именно с этой страницей! ИЗМЕНЕНИЯ чего либо на "НЕ АКТИВНОЙ" странице НЕ ПРОКАТИТ!
Если в проекте много страниц, то нужно, т.к. например открыта страница page1, а данные нужно кинуть на page0 в переменную, чтоб при переходе данные отобразились сразу и те которые именно сейчас.
Сегодня закончил свой первый проект с уно плюс nextion благодаря этой теме ))) Квадратики в порту - это числовое значение так отображает ардуино-монитор. Вот мой пример - на главном экране брошен компонент Number, стоит тип Global, т.к с нескольких экранов передаю данные. Наименование компонента NumSetVal. в обработке на событие нажатия пишу:
print "delay.val=" - это то что оправит в порт
print NumSetVal.val - значение
printh 0d 0a - Добавляю конец строки и перенос на новую
в ардуине ловлю:
char cmd[100];
int au16data[6]={0,0,0,0,0,0};
...
void SendData(String dev, String data)
{
nextion.print(dev); // Отправляем данные dev(номер экрана, название переменной) на Nextion
nextion.print("="); // Отправляем данные =(знак равно, далее передаем сами данные) на Nextion
nextion.print(data); // Отправляем данные data(данные) на Nextion
nextion.write(0xff); // Отправляем данные 0xff(значение показывающее Nextion конец передачи) на Nextion
nextion.write(0xff); // Отправляем данные 0xff(значение показывающее Nextion конец передачи) на Nextion
nextion.write(0xff); // Отправляем данные 0xff(значение показывающее Nextion конец передачи) на Nextion
dev = ""; // Очищаем переменную
data = ""; // Очищаем переменную
delay(50);
}
...
loop() {
String stringVar = String(au16data[0], DEC);
SendData("MainM.NumSetVal.val",stringVar);
if (nextion.available()>0) {
char _end = 0x0a;
int countEnd = 0;
while (nextion.available() > 0) {
delay(10);
char txt = nextion.read();
cmd[countEnd++]=txt;
if (txt=='\r') {
break;
}
if (countEnd > 99) {
break;
}
}
char *s;
if (NULL != ( s = strstr(cmd, "delay.val="))) {
int result = atoi(s + 10);
au16data[0]=result;
}
clean_buffer(cmd,100);
}
....
}
Вот как-то так )) а отправку с ардуины в экран я воспользовался примером для новичков из этого топика
P.S. да кстати никаких библиотек по экрану не подключал. Все с нуля
День добрый уважаемые форумчане. Собственно глупый вопрос от новичка в програмировании. С недавнего времени я стал углубляться в програмирование ардуинки, пересмотрев кучу видосов и прочитав часть информации с форумов, но все сразу не запомнишь, вот поэтому решил начать с тестового проекта который у меня в голове, и поэлементно я пытаюсь понять что означает каждая строчка кода (сразу повторюсь, я до этого вообще не увлекался програмированием, вот и прошу не судите строго). К теме. У меня ардуинка UNO и дисплей Nextion 3,5 NX4832T035_011 (как я понимаю обычная версия). СОбственно часть проекта проста, нажатие кнопки на дисплее, которая передает код кнопки на ардуинку и адрдуинка включает реле. Собственно все работает, но я использовал библиотеку nextion-master. Кода дошло время организовать на дисплее время и дату, все темы которые я находил ссылались на библиотеку ITEADLIB_Arduino_Nextion-master. После установки данноый библиотеки и удаления той, начались танцы с бубнами а точнее:
Это просто куски из скетча, но я каждую строку понимал. После прочтения этой темы я нашел инструкцию для новичка в которой нашел
void loop() {
// Читаем полученные данные с Nextion
if (Serial1.available()) {
char inc;
inc = Serial1.read();
incStr += inc;
if (inc == 0x23) {
incStr = "";
}
if (inc == 0x0A) {
Serial.println("Nextion: ");
Serial.println(incStr);
AnalyseString(incStr); // Переходим в функцию для обработки данных
incStr = "";
inc = "";
}
}
где каждую из строчек я вообще понять не могу, не говоря уже о том, что бы это реализовать в моем прошлом коде с библиотекой nextion-master под библиотеку ITEADLIB_Arduino_Nextion-master. В примерах этой библиотеки я копался, там есть пример с кнопкой, но мне кажется что там все обрабатывает ардуинка, в каком то из примеров помойму даже страницы дисплея переключает ардуинка, хотя это прекрасно можно сделать и в самом дисплее. А кода еще прочел вот это руководстово https://www.itead.cc/ru/blog/%D1%80%D1%83%D0%BA%D0%BE%D0%B2%D0%BE%D0%B4%D1%81%D1%82%D0%B2%D0%BE-%D0%BF%D0%BE-%D0%B1%D0%B8%D0%B1%D0%BB%D0%B8%D0%BE%D1%82%D0%B5%D0%BA%D0%B8-nextion-arduino, я вробще встал в ступор (когда хотел реализовать часы). вообще не мог понять зачем использовать char buffer[10] = {0}; для кнопоки и что делает вот этот код
* @param ptr - the parameter was transmitted to pop event function pointer.
*
*/
void b0PopCallback(void *ptr)
{
NexButton *btn = (NexButton *)ptr;
memset(buffer, 0, sizeof(buffer));
btn->getText(buffer, sizeof(buffer));
if (strcmp(buffer,"ON"))
{
digitalWrite(9, HIGH);
strcpy(buffer, "ON");
}
else
{
digitalWrite(9, LOW);
strcpy(buffer, "OFF");
}
btn->setText(buffer);
Ребят, может кому не лень будет объяснить человеку каждые строки, который на код смотрит как баран на новые ворота. На крайний случай можено и в личке, да бы тему не засорять моими тупыми вопросами.
Скажу так. Сам втыкался. И понял что библиотеки для экрана тупость) как по мне так удобнее делат ьвсе без них. и как раз развебершься. Даже не совсем понял по какому куску ты хочешь чтобы тебе пояснение дали.
да бы ардуинка поняла код кнопки и соответственно включила реле.
Seltvik, а вообще вариант без использования библиотек дисплея меня больше устраивает, если я его правильно конечно понимаю, то есть часть информации с кодом будет обрабатваться самим дисплеем, часть ардуинкой, но соответственно код будет еще больше? Только вот нужно понять в какую литиратуру мне лезть за знаниями). Я понимаю что уже много прошу, но на этом куске примера можно реализовать что бы ардуина поняля код кнопки и включила реле, без использования библиотек с пояснением каждой строки?
В общем пришел я к выводу, буду учиться без использования библиотек. С подключенной бибилиотекой от автора, динамической памяти ардуинки съедается 53% что как я понимаю не есть хорошо, с любительской - 28%, но а без бибилиотеки около 13%. Только вот все же интересует вопрос, например те же самые часы реального времени с настройкой времени и даты возможно реализовать без библиотеки?
не могу я принять с ардуино код нажатия кнопки и отобразить его в мониторе порта , один раз как то получилось, но вместо кода шли вопросительные знаки, не гоовря уже о том, что бы переделать тот кусок. Я где то косячу, причем конкретно
Не понимаю зачем вам эти библиотеки, когда общение между экраном и арду достаточно тривиально,чтобы сделать это обычным опросом serial порта, а на экране при нажатии на конопку происходило событие print "but1" и какой-нибудь символ означающий конец строки.
Алгоритм простой:
На экране:
1) Нажали кнопку
2) Послали кодовое слово в порт
3) Закончили кодовое слово опознаваемым символом (конец строки или перенос каретки или и то и другое)
На арду :
1) В цикле опрашиваем порт
2) Собираем полученные данные в какую-то переменную и ждем нашего опознаваемого символа
3) Символ появился тогда разбираем полученное слово, и от его значения выполняем те или иные действия в основной программе(включили/выключили порт/реле).
Пример в коде:
Экран:
print "start" // наше кодовое слово
printh 0a // опознаваемый символ
В арду:
char NexCmd[100];
loop ...
if (Serial.available()>0) {
char end1 = 0x0a;
int countEnd = 0;
while (nextion.available() > 0) {
delay(10);
char txt = Serial.read();
NexCmd[countEnd++]=txt;
if (txt==end1) {
break;
}
if (countEnd > 99) {
break;
}
}
В общем пришел я к выводу, буду учиться без использования библиотек. С подключенной бибилиотекой от автора, динамической памяти ардуинки съедается 53% что как я понимаю не есть хорошо, с любительской - 28%, но а без бибилиотеки около 13%. Только вот все же интересует вопрос, например те же самые часы реального времени с настройкой времени и даты возможно реализовать без библиотеки?
не могу я принять с ардуино код нажатия кнопки и отобразить его в мониторе порта , один раз как то получилось, но вместо кода шли вопросительные знаки, не гоовря уже о том, что бы переделать тот кусок. Я где то косячу, причем конкретно
За подробное описание я бы был очень признателен. Я повторюсь, что в этом деле я вообще новичок, даже по сегодняшний день на примерах и на тестовых проектах я комментирую каждую строку да бы в дальнейшем можно было всегда посмотреть то, что забыл, мне так проще понимать програмирвоание.
Я видел в некоторых примерах char NexCmd[100], но что означает цифра в квадратных скобках, причем она разная бывает, я не знаю. Так же как и "конец строки или перенос каретки или и то и другое" для меня это пока ничего не значит, вот сегодня буду искать информацию по этому.
ТАк же вот нтересует вопрос по поводу библиотеки SoftwareSerial.h. В каких то прмиерах она есть, в каких то нету, она вообще нужна?
Ребят, я еще раз прошу прощения за мои незнания, но только так я смогу более углубиться во все.
p.s. да бы не засорять тем моими вопросами, можно перейти на лс, я просто напишу совю почту может появиться желающий терпеть мои вопросы Bukmop.BY@gmail.com, а там уже обменяться любым месенджером
Ребят, кто пробовал, знает, подскажите как сделать:
Есть всего одна страница, на ней нужно выводить соответственно две картинки, плохо или хорошо. То есть ардуина шлёт плохо Nextion показывает одну картинку, хорошо, другую. Поделитесь куском кода кто так делал, что нужно отправлять ардуина и какой код нужно прописать в дисплее на картинки. На форуме всё не то, везде в основном обработка кода присылаемого дисплеем в ардуина от кнопок. А мне нужно чтоб ардуина управляла двумя картинками. Спасибо!
В часах используется pcf8563 - все вопросы к нему. За этот год ни разу не корректировал, отстали чуть более минуты, хотя я их точно стазу не выставлял. С ёмкостным тачем не должно быть проблем, он обрабатывается в МК Nextion мы уже получаем факт нажатия.
а как же с много тактильностью? Как обрабатывается несколько касаний?
Это уже надо у них на форуме спрашивать. У них сначала железо, потом софт допиливают. (
Заманчивая штука! Но придется обождать.
Тоже облизнулся но ... цена останавливает. Да и для мелких деталек на экране резистивный лучше. Я свой старый GloFiIsh иногда использую именно из за тача и стилуса. Небольшие заметки удобно делать, в Ведроиде пальцами тыкать запаришься.
У меня уже 3-4 проекта на стадии завершения. Решил выкинуть DS3231(модуль с памятью). Потренеруюсь в часами и памятью дисплея...
А ценник- я бы не сказал, что КУСАЧИЙ... Смотря для какого проекта.
Жду 9 дюймовый...
Ну разве что для мелких. Зато пальцем по кнопкам... после смартфона резистивный тач очень напрягает :)
Зато пальцем по кнопкам...
Какие нах пальцы и кнопки... берёшь стилус и пишешь. )))
Каримов: "У меня уже 3-4 проекта на стадии завершения. Решил выкинуть DS3231(модуль с памятью). Потренеруюсь в часами и памятью дисплея..."
Как время с дисплея на Ардуино передать? все не могу разобраться...
Подскажите кто знает есть дисплей все на нем настройл отправка по ID. как без библиотеки работать с ним не могу понял. Подключил к аппаратному сериалу и он кидает в него квадратики((9 Скорост ьвыставлена на нем не могу понял. херь какая то отправлю команду на него типа t1.txt='123' ничего не происходит. херь какая то((( инфу рыл рыл да не нарыл. Если можно строчку кода или ссылку путевую. спс
Охренеть! Тут вся тема в ссылках и коде.
Ну этот код я видал((( он у меня чет то работает то нет((( но это же пол беды мне больше важно получать данные от трех клавиш. И я вижу что он отправляет только квадратики билн фигян какая то.
Подскажите кто знает есть дисплей все на нем настройл отправка по ID. как без библиотеки работать с ним не могу понял. Подключил к аппаратному сериалу и он кидает в него квадратики((9 Скорост ьвыставлена на нем не могу понял. херь какая то отправлю команду на него типа t1.txt='123' ничего не происходит. херь какая то((( инфу рыл рыл да не нарыл. Если можно строчку кода или ссылку путевую. спс
Вот код для отправки данных
А как принять данные корректно? у меня в ком порту квадратики при нажатии! скорость выставлена одинаковая в чем подвох?
А как принять данные корректно? у меня в ком порту квадратики при нажатии! скорость выставлена одинаковая в чем подвох?
вот посмотри обработку данных с nextoin
А как принять данные корректно? у меня в ком порту квадратики при нажатии! скорость выставлена одинаковая в чем подвох?
Простой Проект с кнопкой и текстовым полем на Nextion ссылка
Код для работы с проектом:
Да это я видел. А проще никак крч да? Печаль( А что думаете про мои квадратики в ком порту? Я как их увидел голову сломал. Во многих постах сразу видно код если по ID передача идет а у меня квадратики.
Да это я видел. А проще никак крч да? Печаль( А что думаете про мои квадратики в ком порту? Я как их увидел голову сломал. Во многих постах сразу видно код если по ID передача идет а у меня квадратики.
Проще забыть про Nextion и Arduino!
Какие квадратики, чем смотрите?
Ком портом в Arduino IDE. завтра скрин залью че за херня не пойму( все работало раньше а щас фигня какая то. может что то упустил
А в нормальной терминалке посмотреть не судьба?
Вот как работает ваш и другие коды на получение данных от экрана. Вот о чем я говорю. Причем так везде! т.е. и в CoolTerm и в Arduino IDE ппц не могу понять. как будто скорости разные хотя я выставлял в экране скорость.
А вот просто напрямую подключен через адаптер.
С принятием данных разобрался. Теперь осталось понят ь почему он не хочет хавать даже жестко такую строчку page0.t2.txt="31"0xff0xff0xff. Пытаюсь банально руками изменить компанент t0. никакой реакции(((
page0 не нужно! Т.к. дисплей разумеет что работа ведется именно с этой страницей! ИЗМЕНЕНИЯ чего либо на "НЕ АКТИВНОЙ" странице НЕ ПРОКАТИТ!
page0 не нужно! Т.к. дисплей разумеет что работа ведется именно с этой страницей! ИЗМЕНЕНИЯ чего либо на "НЕ АКТИВНОЙ" странице НЕ ПРОКАТИТ!
Если в проекте много страниц, то нужно, т.к. например открыта страница page1, а данные нужно кинуть на page0 в переменную, чтоб при переходе данные отобразились сразу и те которые именно сейчас.
page0 не нужно! Т.к. дисплей разумеет что работа ведется именно с этой страницей! ИЗМЕНЕНИЯ чего либо на "НЕ АКТИВНОЙ" странице НЕ ПРОКАТИТ!
Если в проекте много страниц, то нужно, т.к. например открыта страница page1, а данные нужно кинуть на page0 в переменную, чтоб при переходе данные отобразились сразу и те которые именно сейчас.
Посмотрите пост от меня выше с предложенным кодом для Arduino и прикрепленным файлом для Nextion
может объявить GLOBAL?
может объявить GLOBAL?
Обявление GLOBAL дает возможность использовать данные, например переменной t0.txt на других страницах, если это надо.
Сегодня закончил свой первый проект с уно плюс nextion благодаря этой теме ))) Квадратики в порту - это числовое значение так отображает ардуино-монитор. Вот мой пример - на главном экране брошен компонент Number, стоит тип Global, т.к с нескольких экранов передаю данные. Наименование компонента NumSetVal. в обработке на событие нажатия пишу:
print "delay.val=" - это то что оправит в порт
print NumSetVal.val - значение
printh 0d 0a - Добавляю конец строки и перенос на новую
в ардуине ловлю:
Вот как-то так )) а отправку с ардуины в экран я воспользовался примером для новичков из этого топика
P.S. да кстати никаких библиотек по экрану не подключал. Все с нуля
Вот измененный код обработки данных, намного проще
Метод обработки входящих значений хорош если мы знаем разрядность числа
Допустим, что число к нам приходит от 0 до 9999
Можно также сделать отдельную функцию для обработки
Код снизу:
d_tramp:
"Как время с дисплея на Ардуино передать? все не могу разобраться..."
Я пишу на BASCOMe.
День добрый уважаемые форумчане. Собственно глупый вопрос от новичка в програмировании. С недавнего времени я стал углубляться в програмирование ардуинки, пересмотрев кучу видосов и прочитав часть информации с форумов, но все сразу не запомнишь, вот поэтому решил начать с тестового проекта который у меня в голове, и поэлементно я пытаюсь понять что означает каждая строчка кода (сразу повторюсь, я до этого вообще не увлекался програмированием, вот и прошу не судите строго). К теме. У меня ардуинка UNO и дисплей Nextion 3,5 NX4832T035_011 (как я понимаю обычная версия). СОбственно часть проекта проста, нажатие кнопки на дисплее, которая передает код кнопки на ардуинку и адрдуинка включает реле. Собственно все работает, но я использовал библиотеку nextion-master. Кода дошло время организовать на дисплее время и дату, все темы которые я находил ссылались на библиотеку ITEADLIB_Arduino_Nextion-master. После установки данноый библиотеки и удаления той, начались танцы с бубнами а точнее:
в моем коде той библиотеки использовались строчки
вот и после смены библиотеки он стал ругаться на эти строки
Это просто куски из скетча, но я каждую строку понимал. После прочтения этой темы я нашел инструкцию для новичка в которой нашел
где каждую из строчек я вообще понять не могу, не говоря уже о том, что бы это реализовать в моем прошлом коде с библиотекой nextion-master под библиотеку ITEADLIB_Arduino_Nextion-master. В примерах этой библиотеки я копался, там есть пример с кнопкой, но мне кажется что там все обрабатывает ардуинка, в каком то из примеров помойму даже страницы дисплея переключает ардуинка, хотя это прекрасно можно сделать и в самом дисплее. А кода еще прочел вот это руководстово https://www.itead.cc/ru/blog/%D1%80%D1%83%D0%BA%D0%BE%D0%B2%D0%BE%D0%B4%D1%81%D1%82%D0%B2%D0%BE-%D0%BF%D0%BE-%D0%B1%D0%B8%D0%B1%D0%BB%D0%B8%D0%BE%D1%82%D0%B5%D0%BA%D0%B8-nextion-arduino, я вробще встал в ступор (когда хотел реализовать часы). вообще не мог понять зачем использовать char buffer[10] = {0}; для кнопоки и что делает вот этот код
Ребят, может кому не лень будет объяснить человеку каждые строки, который на код смотрит как баран на новые ворота. На крайний случай можено и в личке, да бы тему не засорять моими тупыми вопросами.
И кстати в чем вообще разница этих библиотек?
Скажу так. Сам втыкался. И понял что библиотеки для экрана тупость) как по мне так удобнее делат ьвсе без них. и как раз развебершься. Даже не совсем понял по какому куску ты хочешь чтобы тебе пояснение дали.
ваша и авторская библиотеки две разные вещи и код с одной на другой не пойдёт.
сам я пользовался упрощённой (мне пока достаточно).
но для более серьёзных вещей с полным использованием возможностей дисплея надо или авторскую (от ITED) использовать или самому разбираться.
этот кусок из авторской библиотеки
мне нужно понять, что бы я мог его внидрить в мой кусок
да бы ардуинка поняла код кнопки и соответственно включила реле.
Seltvik, а вообще вариант без использования библиотек дисплея меня больше устраивает, если я его правильно конечно понимаю, то есть часть информации с кодом будет обрабатваться самим дисплеем, часть ардуинкой, но соответственно код будет еще больше? Только вот нужно понять в какую литиратуру мне лезть за знаниями). Я понимаю что уже много прошу, но на этом куске примера можно реализовать что бы ардуина поняля код кнопки и включила реле, без использования библиотек с пояснением каждой строки?
я давал раньше кусочек кода, который использую я - без библиотеки.
повторю с небольшими изменениями:
времени объяснять нет, уж извини.
Но по идее разберешься, все прост даже для меня )
https://www.itead.cc/wiki/Nextion_Instruction_Set
https://www.arduino.cc/reference/en/
вот и все что Вам нужно. Разберетесь сами - запомните навсегда. Прочитаете расписанное по строчкам - через день забудете. ИМХО, конечно.
В общем пришел я к выводу, буду учиться без использования библиотек. С подключенной бибилиотекой от автора, динамической памяти ардуинки съедается 53% что как я понимаю не есть хорошо, с любительской - 28%, но а без бибилиотеки около 13%. Только вот все же интересует вопрос, например те же самые часы реального времени с настройкой времени и даты возможно реализовать без библиотеки?
Встрял я пока в переделовании этого куска
не могу я принять с ардуино код нажатия кнопки и отобразить его в мониторе порта , один раз как то получилось, но вместо кода шли вопросительные знаки, не гоовря уже о том, что бы переделать тот кусок. Я где то косячу, причем конкретно
Не понимаю зачем вам эти библиотеки, когда общение между экраном и арду достаточно тривиально,чтобы сделать это обычным опросом serial порта, а на экране при нажатии на конопку происходило событие print "but1" и какой-нибудь символ означающий конец строки.
Алгоритм простой:
На экране:
1) Нажали кнопку
2) Послали кодовое слово в порт
3) Закончили кодовое слово опознаваемым символом (конец строки или перенос каретки или и то и другое)
На арду :
1) В цикле опрашиваем порт
2) Собираем полученные данные в какую-то переменную и ждем нашего опознаваемого символа
3) Символ появился тогда разбираем полученное слово, и от его значения выполняем те или иные действия в основной программе(включили/выключили порт/реле).
Пример в коде:
Экран:
print "start" // наше кодовое слово
printh 0a // опознаваемый символ
В арду:
char NexCmd[100];
loop ...
if (Serial.available()>0) {
char end1 = 0x0a;
int countEnd = 0;
while (nextion.available() > 0) {
delay(10);
char txt = Serial.read();
NexCmd[countEnd++]=txt;
if (txt==end1) {
break;
}
if (countEnd > 99) {
break;
}
}
...
if (NULL != (strstr(NexCmd, "start"))) {
Наше действие на нажатие кнопки на экране
}
P.S. пояснения по коду более подробные нужны?
В общем пришел я к выводу, буду учиться без использования библиотек. С подключенной бибилиотекой от автора, динамической памяти ардуинки съедается 53% что как я понимаю не есть хорошо, с любительской - 28%, но а без бибилиотеки около 13%. Только вот все же интересует вопрос, например те же самые часы реального времени с настройкой времени и даты возможно реализовать без библиотеки?
Встрял я пока в переделовании этого куска
не могу я принять с ардуино код нажатия кнопки и отобразить его в мониторе порта , один раз как то получилось, но вместо кода шли вопросительные знаки, не гоовря уже о том, что бы переделать тот кусок. Я где то косячу, причем конкретно
смотри посты с #282
ВМЕСТО FF FF FF в конце Пробуй "конец строки"+"возврат коретки"
Всем спасибо, сегодня на ночь опять буду читать.
Dr_grizzly
За подробное описание я бы был очень признателен. Я повторюсь, что в этом деле я вообще новичок, даже по сегодняшний день на примерах и на тестовых проектах я комментирую каждую строку да бы в дальнейшем можно было всегда посмотреть то, что забыл, мне так проще понимать програмирвоание.
Я видел в некоторых примерах char NexCmd[100], но что означает цифра в квадратных скобках, причем она разная бывает, я не знаю. Так же как и "конец строки или перенос каретки или и то и другое" для меня это пока ничего не значит, вот сегодня буду искать информацию по этому.
ТАк же вот нтересует вопрос по поводу библиотеки SoftwareSerial.h. В каких то прмиерах она есть, в каких то нету, она вообще нужна?
Ребят, я еще раз прошу прощения за мои незнания, но только так я смогу более углубиться во все.
p.s. да бы не засорять тем моими вопросами, можно перейти на лс, я просто напишу совю почту может появиться желающий терпеть мои вопросы Bukmop.BY@gmail.com, а там уже обменяться любым месенджером
Ребят, кто пробовал, знает, подскажите как сделать:
Есть всего одна страница, на ней нужно выводить соответственно две картинки, плохо или хорошо. То есть ардуина шлёт плохо Nextion показывает одну картинку, хорошо, другую. Поделитесь куском кода кто так делал, что нужно отправлять ардуина и какой код нужно прописать в дисплее на картинки. На форуме всё не то, везде в основном обработка кода присылаемого дисплеем в ардуина от кнопок. А мне нужно чтоб ардуина управляла двумя картинками. Спасибо!
https://www.itead.cc/wiki/Nextion_Instruction_Set#vis:_Hide.2Fshow_compo... - в этом разделе описано. Хинт - на странице два компонента с картинками, одна картинка перекрывает другую. Ардуина просит, в зависимости от чего-либо - показать одну и скрыть другую. Это самое простое решение в лоб.
Какой хинт?
Там для меня не понятно, мне бы пример куска кода ардуина и дисплея. А не ломать голову гугл переводчиком.