передача данных на Nextion

andrwgldmn
andrwgldmn аватар
Offline
Зарегистрирован: 05.12.2018

Доброго всем. Помогите, пожалуйста, разобраться как правильно отправлять данные на дисплей. Пересмотрел кучу мануалов и родилось что-то такое:

#include <OneWire.h>
#include <DallasTemperature.h>
#include "Nextion.h"
#include <AM2320_asukiaaa.h>
AM2320_asukiaaa mySensor;
OneWire oneWire(10);
DallasTemperature ds(&oneWire);

NexText t3  = NexText(0, 9, "t3");
NexText t4  = NexText(0, 10, "t4");

char buffer[100] = {0};
char buffer_second[100] = {0};

void setup() {
    Serial.begin(9600); 
    nexInit();
    ds.begin();
    Wire.begin();
    mySensor.setWire(&Wire);
}
void loop() {
  t3.setText(buffer);
  t4.setText(buffer_second);

  int temp = ds.getTempCByIndex(0);
  int hum = mySensor.humidity;
 
  memset(buffer, 0, sizeof(buffer));
  itoa(temp, buffer, 10);
  memset(buffer_second, 0, sizeof(buffer_second));
  itoa(hum, buffer_second, 10);
  mySensor.update();
  ds.requestTemperatures();

  Serial.println();
  Serial.println("temp: " + String(ds.getTempCByIndex(0)));  
  Serial.println();
  Serial.println("humidity: " + String(mySensor.humidity) + " %");
  Serial.println();
}


 

В наличии датчики ds18b20 и AM2320, Uno и сама Nextion панель. На экране ничего нету в итоге. Что я сделал не так? Спасибо.

 

 

sadman41
Онлайн
Зарегистрирован: 19.10.2016

Serial.println(buffer) что показывает?

andrwgldmn
andrwgldmn аватар
Offline
Зарегистрирован: 05.12.2018

sadman41 пишет:

то, что выдаёт датчик, только целым числом (что сейчас не очень важно)

sadman41
Онлайн
Зарегистрирован: 19.10.2016

Вижу два варианта:
1) проблемы с подключением;
2) неправильно имя поля определено.
 

b707
Offline
Зарегистрирован: 26.05.2017

andrwgldmn, у вас плата Уно, у нее всего один Сериал. Этот Сериал у вас занят под отладочный вывод (строки 36-40)

Куда же подключен Некстион? - ему тоже нужен Сериал, причем отдельный от того, первого

andrwgldmn
andrwgldmn аватар
Offline
Зарегистрирован: 05.12.2018

sadman41 пишет:

страница 0, id 9, objname t3

вроде бы правильно.. или это не там?

с подключением вроде тоже верно: TX панели на RX(0 пин) ардуины и RX панели на TX(1 пин) ардуины

b707 пишет:

andrwgldmn, у вас плата Уно, у нее всего один Сериал. Этот Сериал у вас занят под отладочный вывод (строки 36-40)

Куда же подключен Некстион? - ему тоже нужен Сериал, причем отдельный от того, первого

Сериал убрал из скетча, но ситуация неизменна

b707
Offline
Зарегистрирован: 26.05.2017

andrwgldmn пишет:

Сериал убрал из скетча, но ситуация неизменна

просто убрать лишнее мало.

Во-первых. совсем убирать Сериал не надо - он нужен Некстиону.

Во-вторых, надо обьснить Некстиону, что он использует именно этот Сериал.

В-третьих, скорости Сериала и некстиона должны совпадать.

andrwgldmn
andrwgldmn аватар
Offline
Зарегистрирован: 05.12.2018

b707 пишет:

andrwgldmn пишет:

Сериал убрал из скетча, но ситуация неизменна

просто убрать лишнее мало.

Во-первых. совсем убирать Сериал не надо - он нужен Некстиону.

Во-вторых, надо обьснить Некстиону, что он использует именно этот Сериал.

В-третьих, скорости Сериала и некстиона должны совпадать.

1. оставил только   Serial.begin(9600);

2. там вроде бы прямо в библиотеке надо изменить сериал2 на просто сериал или мимо?

3. в библиотеке глянул - тоже 9600
 

sadman41
Онлайн
Зарегистрирован: 19.10.2016

Так, как в Уно нет второго сериала, скетч с Serial2 в библиотеке не скомпилировался бы даже.

b707
Offline
Зарегистрирован: 26.05.2017

sadman41 пишет:
Так, как в Уно нет второго сериала, скетч с Serial2 в библиотеке не скомпилировался бы даже.

тем не менее по умолчанию библиотека использует именно Serial2 - там в конфиге такой макрос:

#define nexSerial Serial2

его надо поменять на Serial

 

andrwgldmn
andrwgldmn аватар
Offline
Зарегистрирован: 05.12.2018

b707 пишет:

sadman41 пишет:
Так, как в Уно нет второго сериала, скетч с Serial2 в библиотеке не скомпилировался бы даже.

тем не менее по умолчанию библиотека использует именно Serial2 - там в конфиге такой макрос:

#define nexSerial Serial2

его надо поменять на Serial

 

сделано, но без толку

sadman41
Онлайн
Зарегистрирован: 19.10.2016

Это должно работать, если с коннектом всё ОК

  Serial.begin(9600);
   ...  
  char buffer[100];
  snprintf(buffer, sizeof(buffer), "t3.txt="\"%d C\"\xFF\xFF\xFF", temp);
  Serial.print(buffer);
  snprintf(buffer, sizeof(buffer), "t4.txt="\"%d %%\"\xFF\xFF\xFF", hum);
  Serial.print(buffer);
  ...

 

andrwgldmn
andrwgldmn аватар
Offline
Зарегистрирован: 05.12.2018

b707 пишет:

sadman41 пишет:

понял в чём была ошибка. надо было закоментить в NexConfig.h #define dbSerial Serial и прописать в прошивке для панели bauds=9600
ну и #define nexSerial Serial2 сменить на #define nexSerial Serial, само собой