Buona sera, sono partito da sketch trovato in rete e modificato per realizzare il mio progetto, ho collegato un sensore DHT11 e una sonda DS1820 e un display Nextion. Premetto che sono all'inizio del mondo Arduino e non conosco ancora bene il linguaggio di programmazione, sul display visualizzo correttamente la temperatura e umidita del DHT11 mentre della sonda DS1820 non riesco far visualizzare la temperatura sotto lo 0, mi potete indicare, per favore dove ho commesso l'errore? ho cercato in rete ma non ho capito dove ho sbagliato. grazie
#include <DallasTemperature.h>
#include <OneWire.h>
#include "Nextion.h"
#include "DHT.h"
NexProgressBar j0 = NexProgressBar(0, 6, "j0");
NexText txt_temp = NexText(0, 3, "t0");
NexText txt_umid = NexText(0, 5, "t2");
NexDSButton bt0 = NexDSButton(0, 7, "bt0");
NexText txt_temp2 = NexText(0, 3, "t3");
#define DHTPIN 2
#define DHTTYPE DHT11
DHT dht(DHTPIN, DHTTYPE);
#define ONE_WIRE_BUS 3
OneWire oneWire(ONE_WIRE_BUS);
DallasTemperature sensors(&oneWire);
int temp = 0;
int temp_perc = 0;
int temp2 = 0;
char buffer[100] = {0};
char buffer2[100] = {0};
char buffer3[100] = {0};
int led = 13;
uint32_t dual_state;
void setup(void){
nexInit();
pinMode(led, OUTPUT);
}
void loop(void){
j0.setValue(temp_perc);
txt_temp.setText(buffer);
txt_umid.setText(buffer2);
txt_temp2.setText(buffer3);
int temp = dht.readTemperature();
int umid = dht.readHumidity();
sensors.requestTemperatures();
int temp2 = (sensors.getTempCByIndex(0));
memset(buffer, 0, sizeof(buffer));
itoa(temp, buffer, 10);
memset(buffer2, 0, sizeof(buffer2));
itoa(umid, buffer2, 10);
memset (buffer3, 0, sizeof (buffer3));
itoa(temp2, buffer3, 10);
temp_perc=(temp/0.5);
bt0.getValue(&dual_state);
if(dual_state>0) {
digitalWrite(led, HIGH);
} else {
digitalWrite(led, LOW);
}
}