Sziasztok,
Egy kis problémába ütköztem. Szeretnék mérni két db hőmérsékletet, és egy darab nyomásértéket. A Hőm. Max6675K hőelemekkel, a nyomást pedig sima analóg bemeneten 0-5V között. Majd mindezt kitenném egy Nextion LCD-re I2C-n .
A program működik, soros monitoron minden szépen látszik is, de a kijelzőre nem jut ki a mért érték, vagy ha igen, akkor is csak egyszer. A csatolt képen továbbá az is látszik, hogy ha a sisak értékre ugyanazt méri mint az előző, akkor nem küld újabbat.
Tudnátok ebben segíteni, hogy az LCD-re miért nem jut ki adat? ( az 50,22 érték azt jelenti, hogy nem kapott adatot írhattam volna error-t is )
A kód:
#include <max6675.h>
float sisak;
float sisakold;
float sisaknew;
float cefre; //Hőmérséklet változók
int pressureIn = A0;
int sensorValue = 0;
float barValue = 0;
int Pressure = 0; //Nyomásméréshez szükséges változók
int T0_gnd = 45;
int T0_vcc = 47;
int T0_so = 53;
int T0_cs = 51;
int T0_sck = 49; //Max6675 K-hőelemhez szükséges lábkiosztás
int T1_gnd = 33;
int T1_vcc = 35;
int T1_so = 41;
int T1_cs = 39;
int T1_sck = 37; //Max6675 K-hőelemhez szükséges lábkiosztás
MAX6675 thermocouple(T0_sck, T0_cs, T0_so);
MAX6675 thermocouple1(T1_sck, T1_cs, T1_so); //Max6675 K-hőelem könyvtárához kell
void setup() {
Serial.begin(9600); // Soros port nyitás
pinMode(T0_vcc, OUTPUT);
pinMode(T0_gnd, OUTPUT);
pinMode(T1_vcc, OUTPUT);
pinMode(T1_gnd, OUTPUT);
digitalWrite(T0_vcc, HIGH);
digitalWrite(T0_gnd, LOW);
digitalWrite(T1_vcc, HIGH);
digitalWrite(T1_gnd, LOW); // Kimenetek beállítása, hőelemek táp alá
}
void loop() {
sisaknew = (thermocouple.readCelsius()); // Hőmérséklet érték beolvasása
(Serial.available()>1); // bevallom nem tudom mi célt szolgál egy másik működő mérésemben benne volt
if (sisaknew==sisakold)
{;}
else
{ sisakold=sisaknew; // szintén nem tiszta a dolog, hogy miért kell az if, else kombó de a másik mérésem csak így működött.
sisak=sisaknew;
Serial.print("sisak.txt="); // a nextion sisak.txt=**** néven várja a kiírandó adatot
Serial.write(0x22);
Serial.print(sisak);
Serial.write(0x22);
Serial.write(0xff);
Serial.write(0xff);
Serial.write(0xff); // szintén a várt formátum miatt szükséges
}
cefre = (thermocouple1.readCelsius()); // mivel az első hőmérséklet sem tökéletes, ezért nem csináltam tovább, de a soros monitoron így is jön
sensorValue = analogRead(pressureIn);
Pressure = map(sensorValue, 0, 1023, -28, 272);
barValue = Pressure * 0.006895;
Serial.print("cefre.txt=");
Serial.print(cefre);
Serial.print("press.txt=");
Serial.println(barValue);
delay(1000);
}
![](https://img.index.hu/imgfrm/6/3/8/0/THM_0013636380.jpg)
![](https://img.index.hu/imgfrm/6/3/8/1/THM_0013636381.png)