Nextion + arduino

pit1
Offline
Зарегистрирован: 08.01.2020

Доброго дня всем! С наступающим Новым !!

Содрал проект с сайта:

http://alielectronics.ru/blog/nextion-to-arduino-or-esp8266 Все работает, ну почти. На дисплее 11 кнопок с фиксацией. Код прописан ( в Nextion) только для 4-х. Левые лампочки 4 шт. При подключении к ардуино реагирует только на bt0. При нажатии на bt1-bt3 светики RX TX мигают. Плата их "видит" В скетче прописан только сигнал от bt0.  Помогите прописать скетч для остальных кнопок. Нужно всего три. 

String incStr;
 
void setup() {
  Serial.begin(9600);
  pinMode(2, OUTPUT);
  digitalWrite(2, HIGH);
}
 
void loop() {
  if (Serial.available()) {
    char inc;
    inc = Serial.read();
    incStr += inc;
    if (inc == 0x0A) {
      AnalyseString(incStr);
      incStr = "";
    }
  }
}
 
void AnalyseString(String incStr) {
  if (incStr.indexOf("bt0-on") >= 0) {
    digitalWrite(2, LOW);
  } else if (incStr.indexOf("bt0-off") >= 0) {
    digitalWrite(2, HIGH);
  }
 
  String t1 = "\"" + String(random(25)) + "'C\"";
  SendData("t4.txt", t1);
  t1 = "\"" + String(random(25)) + "'C\"";
  SendData("t5.txt", t1);
}
 
void SendData(String dev, String data)
{
  Serial.print(dev);
  Serial.print("=");
  Serial.print(data);
  Serial.write(0xff);
  Serial.write(0xff);
  Serial.write(0xff);
}
ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015
pit1
Offline
Зарегистрирован: 08.01.2020

Понял, спасибо

String incStr;

void setup() {
  Serial.begin(9600);
  pinMode(2, OUTPUT);
  digitalWrite(2, HIGH);
}

void loop() {
  if (Serial.available()) {
    char inc;
    inc = Serial.read();
    incStr += inc;
    if (inc == 0x0A) {
      AnalyseString(incStr);
      incStr = "";
    }
  }
}

void AnalyseString(String incStr) {
  if (incStr.indexOf("bt0-on") >= 0) {
    digitalWrite(2, LOW);
  } else if (incStr.indexOf("bt0-off") >= 0) {
    digitalWrite(2, HIGH);
  }

  String t1 = "\"" + String(random(25)) + "'C\"";
  SendData("t4.txt", t1);
  t1 = "\"" + String(random(25)) + "'C\"";
  SendData("t5.txt", t1);
}

void SendData(String dev, String data)
{
  Serial.print(dev);
  Serial.print("=");
  Serial.print(data);
  Serial.write(0xff);
  Serial.write(0xff);
  Serial.write(0xff);
}


 

sadman41
Offline
Зарегистрирован: 19.10.2016

Сдерите обработку bt0 для всех остальных и измените циферки в строках.

BOOM
BOOM аватар
Offline
Зарегистрирован: 14.11.2018

sadman41 пишет:
Сдерите обработку bt0 для всех остальных и измените циферки в строках.

И потом (обязательно) - пропишите это всё!!!

genia1991
Offline
Зарегистрирован: 25.12.2019

pit1 пишет:

Доброго дня всем! С наступающим Новым !!

Содрал проект с сайта:

http://alielectronics.ru/blog/nextion-to-arduino-or-esp8266 Все работает, ну почти. На дисплее 11 кнопок с фиксацией. Код прописан ( в Nextion) только для 4-х. Левые лампочки 4 шт. При подключении к ардуино реагирует только на bt0. При нажатии на bt1-bt3 светики RX TX мигают. Плата их "видит" В скетче прописан только сигнал от bt0.  Помогите прописать скетч для остальных кнопок. Нужно всего три. 

String incStr;
 
void setup() {
  Serial.begin(9600);
  pinMode(2, OUTPUT);
  digitalWrite(2, HIGH);
}
 
void loop() {
  if (Serial.available()) {
    char inc;
    inc = Serial.read();
    incStr += inc;
    if (inc == 0x0A) {
      AnalyseString(incStr);
      incStr = "";
    }
  }
}
 
void AnalyseString(String incStr) {
  if (incStr.indexOf("bt0-on") >= 0) {
    digitalWrite(2, LOW);
  } else if (incStr.indexOf("bt0-off") >= 0) {
    digitalWrite(2, HIGH);
  }
 
  String t1 = "\"" + String(random(25)) + "'C\"";
  SendData("t4.txt", t1);
  t1 = "\"" + String(random(25)) + "'C\"";
  SendData("t5.txt", t1);
}
 
void SendData(String dev, String data)
{
  Serial.print(dev);
  Serial.print("=");
  Serial.print(data);
  Serial.write(0xff);
  Serial.write(0xff);
  Serial.write(0xff);
}

 

ну скетч так и должен работать.

экран надо было покупать попроще этот не для новичков.

И код всегда лучше самому писать или перед любой покупки железа надо хорошо понимать как работает содранный код что бы потом все получилось.

купите 16и 7 хотя бы экран он без крутостей как этот но есть весь тот функционал что нужен будет и дешевле того

Главное не внешний вид и какой тюнинг изнутри :)

pit1
Offline
Зарегистрирован: 08.01.2020

Попробовал. Очень старался.


String incStr;

void setup() {
  Serial.begin(9600);
  pinMode(2, OUTPUT);
  digitalWrite(2, HIGH);
}

void loop() {
  if (Serial.available()) {
    char inc;
    inc = Serial.read();
    incStr += inc;
    if (inc == 0x0A) {
      AnalyseString(incStr);
      incStr = "";
    }
  }
}

void AnalyseString(String incStr) {
  if (incStr.indexOf("bt0-on") >= 0) {
    digitalWrite(2, LOW);
  } else if (incStr.indexOf("bt0-off") >= 0) {
    digitalWrite(2, HIGH);
  }
void setup() {
  Serial.begin(9600);
  pinMode(3, OUTPUT);
  digitalWrite(3, HIGH);
}

void loop() {
  if (Serial.available()) {
    char inc;
    inc = Serial.read();
    incStr += inc;
    if (inc == 0x0A) {
      AnalyseString(incStr);
      incStr = "";
    }
  }
}

void AnalyseString(String incStr) {
  if (incStr.indexOf("bt1-on") >= 0) {     
    digitalWrite(3, LOW);
  } else if (incStr.indexOf("bt1-off") >= 0) {
    digitalWrite(3, HIGH);
  }
  String t1 = "\"" + String(random(25)) + "'C\"";
  SendData("t4.txt", t1);
  t1 = "\"" + String(random(25)) + "'C\"";
  SendData("t5.txt", t1);
}

void SendData(String dev, String data)
{
  Serial.print(dev);
  Serial.print("=");
  Serial.print(data);
  Serial.write(0xff);
  Serial.write(0xff);
  Serial.write(0xff);
}

Теперь подсвечивается последняя фигурная скобка. Пишет ошибку:exit status 1
 
a function-definition is not allowed here before '{' token
 

 

pit1
Offline
Зарегистрирован: 08.01.2020
void setup() {
  Serial.begin(9600);
  pinMode(2, OUTPUT);   // - Номер пина поменял на 3
  digitalWrite(2, HIGH);    //-то же
}
 
void AnalyseString(String incStr) {
  if (incStr.indexOf("bt0-on") >= 0) {      //  bt0  на  bt1
    digitalWrite(2, LOW);
  } else if (incStr.indexOf("bt0-off") >= 0) {   // bt0  на  bt1
    digitalWrite(2, HIGH);
  }

Что то я леплю горбатого к стенке. При компиляции высвечивает 

  void SendData(String dev, String data)

{                                       Вот эту строчку и пишет:   Serial.print(dev);exit status 1
                                                                                   
                                                                                     a function-definition is not allowed here before '{' token
 Serial.print("=");
  Serial.print(data);
  Serial.write(0xff);
  Serial.write(0xff);
  Serial.write(0xff);
}
pit1
Offline
Зарегистрирован: 08.01.2020

В этот последний блок я вообще не лазил. 

lilik
Offline
Зарегистрирован: 19.10.2017

Число открывающих и закрывающих скобок должно быть одинаковым.

sadman41
Offline
Зарегистрирован: 19.10.2016

Размножать нужно было обработку, а не всю программу:

...
pinMode(3, OUTPUT);
digitalWrite(3, HIGH);
....

if (incStr.indexOf("bt1-on") >= 0) {    
    digitalWrite(3, LOW);
  } else if (incStr.indexOf("bt1-off") >= 0) {
    digitalWrite(3, HIGH);
  }

 

pit1
Offline
Зарегистрирован: 08.01.2020

genia1991

Ну скетч так и работает оригинал который, но сам проект на доделанный И дисплей работает. 

Даже одно реле включается на 2-м пине. Переписываемся на форуме третий день. Задача архи сложная, добавить 6 ну может 12 практически одинаковых строчек в скетч. И будет человеку счастье. Вы советуете "купить 16и 7 хотя бы экран" Это название или торговая марка? Чистое бла - бла. Полезной информации ноль.

lilik
Offline
Зарегистрирован: 19.10.2017

А ещё у вас несколько лууп и сетап. Просто вы ничего не понимаете в предмете, а я не заметил, думал просто скобку потеряли и не видите сгоряча.

pit1
Offline
Зарегистрирован: 08.01.2020

lilik пишет:

А ещё у вас несколько лууп и сетап. Просто вы ничего не понимаете в предмете, а я не заметил, думал просто скобку потеряли и не видите сгоряча.

Я баран в этом. Пытаюсь, но пока не совсем получается . Ключевое слово -Совсем.



String incStr;

void setup() {
  Serial.begin(9600);
  pinMode(2, OUTPUT);
  digitalWrite(2, HIGH);
 pinMode(3, OUTPUT);
  digitalWrite(3, HIGH);
}

void loop() {
  if (Serial.available()) {
    char inc;
    inc = Serial.read();
    incStr += inc;
    if (inc == 0x0A) {
      AnalyseString(incStr);
      incStr = "";
    }
  }
}

void AnalyseString(String incStr) {
  if (incStr.indexOf("bt0-on") >= 0) {
    digitalWrite(2, LOW);
  } else if (incStr.indexOf("bt0-off") >= 0) {
    digitalWrite(2, HIGH);
if (incStr.indexOf("bt1-on") >= 0) {
    digitalWrite(3, LOW);
  } else if (incStr.indexOf("bt1-off") >= 0) {
    digitalWrite(3, HIGH);
  }

  String t1 = "\"" + String(random(25)) + "'C\"";
  SendData("t4.txt", t1);                               // Теперь светится эта строка.
  t1 = "\"" + String(random(25)) + "'C\"";
  SendData("t5.txt", t1);
}

void SendData(String dev, String data)
{
  Serial.print(dev);
  Serial.print("=");
  Serial.print(data);
  Serial.write(0xff);
  Serial.write(0xff);
  Serial.write(0xff);
}

 

lilik
Offline
Зарегистрирован: 19.10.2017

Нет закрывающей скобки после, например, 61 строки. 

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

pit1 пишет:
Я баран в этом. Пытаюсь, но пока не совсем получается . Ключевое слово -Совсем.
Точно? А не "баран"?

andriano
andriano аватар
Offline
Зарегистрирован: 20.06.2015

pit1 пишет:

...Переписываемся на форуме третий день. Задача архи сложная, добавить 6 ну может 12 практически одинаковых строчек в скетч. И будет человеку счастье. Вы советуете "купить 16и 7 хотя бы экран" Это название или торговая марка? Чистое бла - бла. Полезной информации ноль.

Вот выделенную мною фразу последнее время часто встречаю на форуме.

Причем, высказывают ее исключительно люди с нулевым уровнем знаний.

Интересно, как человек с нулевым уровнем может оценить количество информации по теме, в которой он ничего не смыслит?

sadman41
Offline
Зарегистрирован: 19.10.2016

Дак эквивалентно и оценивает...

pit1
Offline
Зарегистрирован: 08.01.2020

ЕвгенийП пишет:

pit1 пишет:
Я баран в этом. Пытаюсь, но пока не совсем получается . Ключевое слово -Совсем.
Точно? А не "баран"?

Согласен и на Баран.

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

andriano пишет:

Интересно, как человек с нулевым уровнем может оценить количество информации по теме, в которой он ничего не смыслит?

Абсолютно адекватно!

Польза информации - не объективная вещь. Она неотделима от получателя этой самой информации.

Если я, по каким-то причинам (например, из-за полного отсутствия необходимых знаний), не могу воспринять и использовать полученную информацию, то какая мне от неё польза? Нулевая! А какая ещё?

pit1
Offline
Зарегистрирован: 08.01.2020

Доброго дня! Вы были правы. Поставил скобку и скетч загрузился. Но что то ещё не всё. При нажатии на кнопку bt1 на D3 ничего нету. Светодиод TX на плате мигает. Еще одна особенность: если нажимаю bt0 - ВКЛ мигает TX при ОТКЛ - мигают оба и TX  и RX,  Я в тупике. Может что то со скетчем? Помогите пж-та... С ув. Петр.

BOOM
BOOM аватар
Offline
Зарегистрирован: 14.11.2018

Попробуй так (мошт поможет?):

/*
 * Прописал как следует ))
 */
String incStr;

const uint8_t pin_bt0 = 2;
const uint8_t pin_bt1 = 3;

void setup() {
  Serial.begin(9600);
  pinMode(pin_bt0, OUTPUT);
  digitalWrite(pin_bt0, HIGH);
  pinMode(pin_bt1, OUTPUT);
  digitalWrite(pin_bt1, HIGH);
}

void loop() {
  if (Serial.available()) {
    char inc;
    inc = Serial.read();
    incStr += inc;
    if (inc == 0x0A) {
      AnalyseString(incStr);
      incStr = "";
    }
  }
}

void AnalyseString(String incStr) {
  if (incStr.indexOf("bt0-on") >= 0) {
    digitalWrite(pin_bt0, LOW);
  }
  if (incStr.indexOf("bt0-off") >= 0) {
    digitalWrite(pin_bt0, HIGH);
  }
  if (incStr.indexOf("bt1-on") >= 0) {
    digitalWrite(pin_bt1, LOW);
  }
  if (incStr.indexOf("bt1-off") >= 0) {
    digitalWrite(pin_bt1, HIGH);
  }

  String t1 = "\"" + String(random(25)) + "'C\"";
  SendData("t4.txt", t1);                               // Теперь НЕ светится эта строка. )))
  t1 = "\"" + String(random(25)) + "'C\"";
  SendData("t5.txt", t1);

}

void SendData(String dev, String data) {
  Serial.print(dev);
  Serial.print("=");
  Serial.print(data);
  Serial.write(0xff);
  Serial.write(0xff);
  Serial.write(0xff);
}
Скетч использует 4536 байт (55%) памяти устройства. Всего доступно 8192 байт.
Глобальные переменные используют 254 байт (24%) динамической памяти, оставляя 770 байт для локальных переменных. Максимум: 1024 байт.

 

sadman41
Offline
Зарегистрирован: 19.10.2016

Мошт в некстионовском проекте bt1 вовсе не bt1, а abc1.

BOOM
BOOM аватар
Offline
Зарегистрирован: 14.11.2018

А хрен его знает )) Я только условия поправил, а то у него вложенные как-то странно были #13

pit1
Offline
Зарегистрирован: 08.01.2020

BOOM Большое человеческое СПАСИБО!!! Все работает. Как я могу отблагодарить? 

BOOM
BOOM аватар
Offline
Зарегистрирован: 14.11.2018

Да пользуйся на здоровье ))