Mám arduino uno,5 snímačů dallas DS18b20 a lcd displej nextion.Program mám v zásadě funkční a dělá to,co potřebuji,ale nevím si už rady s načítáním hodnot do displeje nextion(vlastně posílání hodnot).Proto prosím zkušenější o pomoc.
Přikládám kód.
Kód: Vybrat vše
#include <NexButton.h>
#include <NexConfig.h>
#include <NexDualStateButton.h>
#include <NexNumber.h>
#include <NexText.h>
#include <Nextion.h>
#include <OneWire.h>
#include <DallasTemperature.h>
#include <SoftwareSerial.h>
//deklarace komunikace RX TX arduina s displejem - na pinech
SoftwareSerial mySerial (0, 1);
//adresy - vstupní piny senzorů
#define BUS_0 A0
#define BUS_1 A1
#define BUS_2 A2
#define BUS_3 A3
#define BUS_4 A4
//adresace sběrnice snímačů
OneWire oneWire0(BUS_0);
OneWire oneWire1(BUS_1);
OneWire oneWire2(BUS_2);
OneWire oneWire3(BUS_3);
OneWire oneWire4(BUS_4);
//adresace senzorů dallas DS18b20
DallasTemperature sensors0(&oneWire0);
DallasTemperature sensors1(&oneWire1);
DallasTemperature sensors2(&oneWire2);
DallasTemperature sensors3(&oneWire3);
DallasTemperature sensors4(&oneWire4);
//definice nastavené teploty
int tx0;
int tx1;
int tx2;
int tx3;
int tx4;
//definice výstupů = relé
int Rele0 = 9;
int Rele1 = 10;
int Rele2 = 11;
int Rele3 = 12;
int Rele4 = 13;
//definice zobrazené teploty-název teploty vstupu
int teplota0;
int teplota1;
int teplota2;
int teplota3;
int teplota4;
//deklarace objektů v displeji nextion
NexText t0 = NexText (0, 1, "t0");
NexText t1 = NexText (0, 2, "t1");
NexText t2 = NexText (0, 3, "t2");
NexText t3 = NexText(0, 4, "t3");
NexText t4 = NexText(0, 5, "t4");
NexNumber n0 = NexNumber (0, 21, "n0");
NexNumber n1 = NexNumber(0, 22, "n1");
NexNumber n2 = NexNumber(0, 23, "n2");
NexNumber n3 = NexNumber(0, 24, "n3");
NexNumber n4 = NexNumber(0, 25, "n4");
NexButton button0 = NexButton(0, 6, "buton0");
NexButton button1 = NexButton(0, 7, "buton1");
NexButton button2 = NexButton(0, 8, "buton2");
NexButton button3 = NexButton(0, 9, "buton3");
NexButton button4 = NexButton(0, 10, "buton4");
char buffer[100] = {0};
char buffer2[100] = {0};
char buffer3[100] = {0};
char buffer4[100] = {0};
char buffer5[100] = {0};
char buffer6[100] = {0};
char buffer7[100] = {0};
char buffer8[100] = {0};
char buffer9[100] = {0};
char buffer10[100] = {0};
char buffer11[100] = {0};
char buffer12[100] = {0};
char buffer13[100] = {0};
char buffer14[100] = {0};
char buffer15[100] = {0};
void setup(void)
{
mySerial.begin(9600);
Serial.begin(9600);
sensors0.begin();
sensors1.begin();
sensors2.begin();
sensors3.begin();
sensors4.begin();
//nastavená teplota
tx0 = 26;
tx1 = 26;
tx2 = 26;
tx3 = 26;
tx4 = 26;
Serial.begin(9600);
}
void loop(void)
{
//reset snímačů
sensors0.requestTemperatures();
sensors1.requestTemperatures();
sensors2.requestTemperatures();
sensors3.requestTemperatures();
sensors4.requestTemperatures();
//načtení aktuální hodnoty zaslané snímačem
int teplota0 (sensors0.getTempCByIndex(0));
int teplota1 (sensors1.getTempCByIndex(0));
int teplota2 (sensors2.getTempCByIndex(0));
int teplota3 (sensors3.getTempCByIndex(0));
int teplota4 (sensors4.getTempCByIndex(0));
Serial.print("Teplota 0: ");
Serial.println(teplota0);
Serial.print("Teplota 1: ");
Serial.println(teplota1);
Serial.print("Teplota 2: ");
Serial.println(teplota2);
Serial.print("Teplota 3: ");
Serial.println(teplota3);
Serial.print("Teplota 4: ");
Serial.println(teplota4);
delay(100);
//posílání hodnot do nextion
//NexText t0.setText(buffer);
//txt_t1.setText(buffer2);
//txt_t2.setText(buffer3);
//txt_t3.setText(buffer4);
//txt_t4.setText(buffer5);
//Number_n0.setNumber(buffer6);
//Number_n1.setNumber(buffer7);
//Number_n2.setNumber(buffer8);
//Number_n3.setNumber(buffer9);
//Number_n4.setNumber(buffer10);
//button_0.setbuton0(buffer11);
//button_1.setbuton1(buffer12);
//button_2.setbuton2(buffer13);
//button_3.setbuton3(buffer14);
//button_4.setbuton4(buffer15);
//řízení teploty
if(teplota0 >= tx0 ){ //teplota větší než nastavená
Serial.println(" OFF 0"); //zobrazení v seriovém monitoru
digitalWrite(Rele0, LOW); //výstupní pin relé
}
else{
if(teplota0 = tx0-1 ){ //teplota menší než nastavená
Serial.println(" ON 0"); //zobrazení v seriovém monitoru
digitalWrite(Rele0, HIGH); //výstupní pin relé
}
}
if(teplota1 >= tx1 ){ //teplota větší než nastavená
Serial.println(" OFF 1"); //zobrazení v seriovém monitoru
digitalWrite(Rele1, LOW); //výstupní pin relé
}
else{
if(teplota1 = tx1-1 ){ //teplota menší než nastavená
Serial.println(" ON 1"); //zobrazení v seriovém monitoru
digitalWrite(Rele1, HIGH); //výstupní pin relé
}
}
if(teplota2 >= tx2 ){ //teplota větší než nastavená
Serial.println(" OFF 2"); //zobrazení v seriovém monitoru
digitalWrite(Rele2, LOW); //výstupní pin relé
}
else{
if(teplota2 = tx2-1 ){ //teplota menší než nastavená
Serial.println(" ON 2"); //zobrazení v seriovém monitoru
digitalWrite(Rele2, HIGH); //výstupní pin relé
}
}
if(teplota3 >= tx3 ){ //teplota větší než nastavená
Serial.println(" OFF 3"); //zobrazení v seriovém monitoru
digitalWrite(Rele3, LOW); //výstupní pin relé
}
else{
if(teplota3 = tx3-1 ){ //teplota menší než nastavená
Serial.println(" ON 3"); //zobrazení v seriovém monitoru
digitalWrite(Rele3, HIGH); //výstupní pin relé
}
}
if(teplota4 >= tx4 ){ //teplota větší než nastavená
Serial.println(" OFF 4"); //zobrazení v seriovém monitoru
digitalWrite(Rele4, LOW); //výstupní pin relé
}
else{
if(teplota4 = tx4-1 ){ //teplota menší než nastavená
Serial.println(" ON 4"); //zobrazení v seriovém monitoru
digitalWrite(Rele4, HIGH); //výstupní pin relé
}
}
}
Prošel jsem též spousty odkazů,příkladů a hotových projektů na internetu,ale nikde jsem nenašel jak mám vlastně poslat hodnoty do displeje.
Do budoucna přemýšlím ještě o rozšíření o další ovládání.
Předem děkuji všem za pomoc.