Buon giorno,
rieccomi con un problema, non credo legato a Nextion display. Mi esegue il loop corretto dei tasti ma quando inserisco la parte per aggiornare il grafico mi esegue solo quello senza più rispondere ai tasti. Ho provato ad inserire un delay ma non funziona cmq la lettura dei tasti e non capisco perché
Grazie anticipatamente
[code]
#include "Nextion.h"
#include "DHT.h"
#define DHTPIN 2
#define DHTTYPE DHT22
DHT dht(DHTPIN, DHTTYPE);
#define LEVEL_HIGH (90)
#define LEVEL_LOW (0)
#define CH0_OFFSET (40 - LEVEL_HIGH/2)
#define CH1_OFFSET (CH0_OFFSET + 40 * 1)
const int led =8;
const int led2 =5;
int temp;
int umid;
byte imptemp;
byte impumid;
byte impore;
unsigned long ora;
void n0PopCallback(void *ptr);
void b0PopCallback(void *ptr);
void b1PopCallback(void *ptr);
void b2PopCallback(void *ptr);
void b3PopCallback(void *ptr);
void b4PopCallback(void *ptr);
void b5PopCallback(void *ptr);
void b6PopCallback(void *ptr);
void b7PopCallback(void *ptr);
void b8PopCallback(void *ptr);
void b9PopCallback(void *ptr);
void n1PopCallback(void *ptr);
void n2PopCallback(void *ptr);
NexNumber n0 = NexNumber(0, 3, "n0");
NexButton b0 = NexButton(0, 1, "b0");
NexButton b1 = NexButton(0, 2, "b1");
NexButton b2 = NexButton(0, 6, "b2");
NexButton b3 = NexButton(0, 7, "b3");
NexNumber n1 = NexNumber(0, 8, "n1");
NexNumber n2 = NexNumber(0, 14, "n2");
NexButton b4 = NexButton(0, 10, "b4");
NexButton b5 = NexButton(0, 11, "b5");
NexButton b6 = NexButton(0, 12, "b6");
NexButton b7 = NexButton(0, 13, "b7");
NexButton b8 = NexButton(0, 16, "b8");
NexButton b9 = NexButton(0, 17, "b9");
NexWaveform s0 = NexWaveform(3, 1, "s0");
NexText txt_gradi = NexText(1, 11, "t5");
NexText txt_umid = NexText(1, 12, "t6");
static uint8_t ch0_data = LEVEL_LOW;
static uint8_t ch1_data = LEVEL_LOW;
char buffer[100] = {0};
NexTouch *nex_listen_list[] =
{
&n0,
&b0,
&b1,
&b2,
&b3,
&n1,
&n2,
&b4,
&b5,
&b6,
&b7,
&b8,
&b9,
NULL
};
void n0PopCallback(void *ptr)
{
n0.setValue(0);
}
void n1PopCallback(void *ptr)
{
n1.setValue(0);
}
void n2PopCallback(void *ptr)
{
n2.setValue(0);
}
void b0PopCallback(void *ptr)
{
n0.getValue(imptemp);
imptemp ++;
n0.setValue(imptemp);
}
void b1PopCallback(void *ptr)
{
n0.getValue(imptemp);
imptemp --;
n0.setValue(imptemp);
}
void b2PopCallback(void *ptr)
{
n0.getValue(imptemp);
imptemp++;
imptemp++;
imptemp++;
imptemp++;
imptemp++;
imptemp++;
imptemp++;
imptemp++;
imptemp++;
imptemp++;
n0.setValue(imptemp);
}
void b3PopCallback(void *ptr)
{
n0.getValue(imptemp);
imptemp --;
imptemp --;
imptemp --;
imptemp --;
imptemp --;
imptemp --;
imptemp --;
imptemp --;
imptemp --;
imptemp --;
n0.setValue(imptemp);
}
void b4PopCallback(void *ptr)
{
n1.getValue(impumid);
impumid ++;
n1.setValue(impumid);
}
void b6PopCallback(void *ptr)
{
n1.getValue(impumid);
impumid++;
impumid++;
impumid++;
impumid++;
impumid++;
impumid++;
impumid++;
impumid++;
impumid++;
impumid++;
n1.setValue(impumid);
}
void b5PopCallback(void *ptr)
{
n1.getValue(impumid);
impumid --;
n1.setValue(impumid);
}
void b7PopCallback(void *ptr)
{
n1.getValue(impumid);
impumid --;
impumid --;
impumid --;
impumid --;
impumid --;
impumid --;
impumid --;
impumid --;
impumid --;
impumid --;
n1.setValue(impumid);
}
void b8PopCallback(void *ptr)
{
n2.getValue(impore);
impore ++;
n2.setValue(impore);
}
void b9PopCallback(void *ptr)
{
n2.getValue(impore);
impore --;
n2.setValue(impore);
}
void setup(void)
{
nexInit();
dht.begin();
Serial.begin(9600);
pinMode(led,OUTPUT);
pinMode(led2,OUTPUT);
n0.attachPop(n0PopCallback);
n1.attachPop(n1PopCallback);
n2.attachPop(n2PopCallback);
b0.attachPop(b0PopCallback);
b1.attachPop(b1PopCallback);
b2.attachPop(b2PopCallback);
b3.attachPop(b3PopCallback);
b4.attachPop(b4PopCallback);
b5.attachPop(b5PopCallback);
b6.attachPop(b6PopCallback);
b7.attachPop(b7PopCallback);
b8.attachPop(b8PopCallback);
b9.attachPop(b9PopCallback);
}
void loop()
{
nexLoop(nex_listen_list);
Serial.println(dht.readTemperature());
Serial.println(dht.readHumidity());
if(dht.readTemperature() >= imptemp)
{
digitalWrite(led,HIGH);
}
else
{
digitalWrite(led,LOW);
}
if(dht.readHumidity() >= impumid)
{
digitalWrite(led2,HIGH);
}
else
{
digitalWrite(led2,LOW);
}
delay(3000);
static uint32_t started = 0;
if (millis() - started >= 3000)
{
started = millis();
if (LEVEL_HIGH == ch0_data)
{
ch0_data = LEVEL_LOW;
}
else
{
ch0_data = LEVEL_HIGH;
}
}
ch1_data = ch0_data;
s0.addValue(0, CH0_OFFSET + ch0_data);
s0.addValue(1, CH1_OFFSET + ch1_data);
}
[/code]