Dzień dobry,
Mam problem z obsługą wyświetlacza nextion. Wyświetlacz komunikuje się z ESP32 przez serial port i tu powstaje problem:
Jeżeli nie komunikuje się z suplą nie mam problemu, przy nawiązaniu połączenia na serial port wyrzucane są dane przez suplę i całość się zawiesza. Czy można zablokować komunikację przez serial ?
Poniżej kod:
#include <SPI.h>
#include <Wire.h>
#include "EasyNextionLibrary.h"
#include <DallasTemperature.h>
#include <OneWire.h>
#include <SuplaDevice.h>
#include <supla/control/relay.h>
#include <supla/control/button.h>
#include <supla/control/action_trigger.h>
#include <supla/sensor/DS18B20.h>
// Choose proper network interface for your card:
#ifdef ARDUINO_ARCH_AVR
// Arduino Mega with EthernetShield W5100:
#include <supla/network/ethernet_shield.h>
// Ethernet MAC address
uint8_t mac[6] = {0x00, 0x01, 0x02, 0x03, 0x04, 0x05};
Supla::EthernetShield ethernet(mac);
// Arduino Mega with ENC28J60:
// #include <supla/network/ENC28J60.h>
// Supla::ENC28J60 ethernet(mac);
#elif defined(ARDUINO_ARCH_ESP8266) || defined(ARDUINO_ARCH_ESP32)
// ESP8266 and ESP32 based board:
#include <supla/network/esp_wifi.h>
Supla::ESPWifi wifi("ssid", "pass");
#endif
#define pump1 22
#define pump2 21
#define blower 19
#define heater 18
#define ozone 5
int ledr = 13;
int ledg = 12;
int ledb = 14;
#define ONE_WIRE_BUS 4
#define TEMP_SIZE 7
int pwm = 23;
// Setup a oneWire instance to communicate with any OneWire devices
OneWire oneWire(ONE_WIRE_BUS);
// Pass our oneWire reference to Dallas Temperature.
DallasTemperature DS18B20(&oneWire);
char temperatureCString[TEMP_SIZE];
char previousTemp[TEMP_SIZE] = "init";
int act = 0;
int blow = 0;
int zew = 0;
int set = 5;
int pwm1 = 255;
EasyNex myNex(Serial);
void setup(){
char GUID[SUPLA_GUID_SIZE] = {} ;
char AUTHKEY[SUPLA_AUTHKEY_SIZE] = {};
DeviceAddress ds1addr = {0x28, 0x30, 0xEE, 0x49, 0xF6, 0xB2, 0x3C, 0x2A};
DeviceAddress ds2addr = {0x28, 0xFF, 0x64, 0x1E, 0x9D, 0xD0, 0x26, 0xF5};
new Supla::Sensor::DS18B20(4, ds1addr);
new Supla::Sensor::DS18B20(4, ds2addr);
SuplaDevice.begin(GUID, // Global Unique Identifier
"", // SUPLA server address
"", // Email address used to login to Supla Cloud
AUTHKEY); // Authorization key
pinMode(pwm, OUTPUT);
pinMode(pump1, OUTPUT);
pinMode(pump2, OUTPUT);
pinMode(ozone, OUTPUT);
pinMode(heater, OUTPUT);
pinMode(blower, OUTPUT);
pinMode(ledr, OUTPUT);
pinMode(ledg, OUTPUT);
pinMode(ledb, OUTPUT);
myNex.begin(115200); // Begin the object with a baud rate of 9600
}
void getTemperature() {
int tempC;
do {
DS18B20.requestTemperatures();
tempC = DS18B20.getTempCByIndex(0);
dtostrf(tempC, 3, 1, temperatureCString);
if (tempC == (-127)) {
delay(100);
}
} while (tempC == (-127.0));
}
void loop(){
myNex.NextionListen(); // WARNING: This function must be called repeatedly to response touch events
int act = DS18B20.getTempCByIndex(0);
getTemperature();
myNex.writeNum("x1.val", act);
pwm1 = map(act, 5, set, 255, 160);
myNex.writeNum("x2.val", pwm1);
analogWrite(pwm, pwm1);
if(set > 40){set = 40;}
SuplaDevice.iterate();
}
void trigger9(){
int blow = DS18B20.getTempCByIndex(1);
getTemperature();
myNex.writeNum("x3.val", blow);
int zew = DS18B20.getTempCByIndex(2);
getTemperature();
myNex.writeNum("x4.val", zew);
}
void trigger1() {
digitalWrite(pump2, !digitalRead(pump2));
if(digitalRead(pump2) == HIGH){
myNex.writeNum("b1.bco", 2016); // Set button b0 background color to GREEN (color code: 2016)
}else if(digitalRead(pump2) == LOW){
myNex.writeNum("b1.bco", 63488); // Set button b0 background color to RED (color code: 63488)
}
}
void trigger2() {
digitalWrite(blower, !digitalRead(blower));
if(digitalRead(blower) == HIGH){
myNex.writeNum("b2.bco", 2016); // Set button b0 background color to GREEN (color code: 2016)
}else if(digitalRead(blower) == LOW){
myNex.writeNum("b2.bco", 63488); // Set button b0 background color to RED (color code: 63488)
}
}
void trigger5() {
digitalWrite(heater, !digitalRead(heater));
if(digitalRead(heater) == HIGH){
myNex.writeNum("b5.bco", 2016); // Set button b0 background color to GREEN (color code: 2016)
}else if(digitalRead(heater) == LOW){
myNex.writeNum("b5.bco", 63488); // Set button b0 background color to RED (color code: 63488)
}
}
void trigger0() {
digitalWrite(pump1, !digitalRead(pump1));
if(digitalRead(pump1) == HIGH){
myNex.writeNum("b0.bco", 2016); // Set button b0 background color to GREEN (color code: 2016)
}else if(digitalRead(pump1) == LOW){
myNex.writeNum("b0.bco", 63488); // Set button b0 background color to RED (color code: 63488)
}
}
void trigger3() {
set++;
myNex.writeNum("x0.val", set);
}
void trigger4() {
set--;
myNex.writeNum("x0.val", set);
}
