Sploc Creative Commons License 2016.04.10 0 0 1805

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);

}