BOOLEAN e Libreria

Ciao a tutto stavo provando una cosa semplice

//DHT_11_SENSORE_TEMPERATURA_UMIDITA'
#include <dht11.h>          //LIBRERIA
dht11 DHT;                  //ISTANZA per Libreria
const byte dht11_pin(4);    //DICHIARO il Pin
byte DHT_11=0;              //byte di LETTURA
byte Temperatura=0;         //byte di COPIA LETTURA
byte Umidita=0;             //byte di COPIA LETTURA
boolean Differenza_dht11=0; //byte di ON_OFF


void DHT_11_SENSORE_TEMPERATURA_UMIDITA() 
{                                      //INIZIO VOID
 Temperatura=(DHT.temperature);        //Questo byte diventa UGUALE alla LETTURA in LIBRERIA
 Umidita=(DHT.humidity);               //Questo byte diventa UGUALE alla LETTURA in LIBRERIA
 DHT_11=DHT.read(dht11_pin);           //Questo byte LEGGE in LIBRERIA
 if((Temperatura!=DHT.temperature)     //SE questo byte diventa DIVERSO dalla LETTURA in Libreria
  ||(Umidita!=DHT.humidity!=DHT_11))   //OPPURE questo byte diventa DIVERSO dalla LETTURA in Libreria
   {
    Differenza_dht11=1;             //Questo byte và ON
   }
 if(Differenza_dht11==1)            //SE questo é ON
   {
    Serial.println(Temperatura);       //FAI QUESTO
    Serial.println(Umidita);           //FAI QUESTO
    Serial.println(Differenza_dht11);   
   }
Differenza_dht11=0;                //POI questo byte torna ad OFF
}                                      //FINE VOID

void setup() 
{
 Serial.begin(9600);/*SERIALE MONITOR*/
 Serial1.begin(9600);/*SERIALE ESP8266*/
 Serial2.begin(9600);/*SERIALE BLUETOOTH*/
 for(byte i=0;i<5;i++){pinMode(Ruote[i],OUTPUT);}/*PINMODE RUOTE*/
 pinMode(dht11_pin,INPUT);
}



void loop()
{
DHT_11_SENSORE_TEMPERATURA_UMIDITA(); 
} or paste code here

Funziona tutto tranne la BOOLEANA che non mi torna ad FALSE.

Io sapevo che si dichiarava con bool non boolean. Ma poi a cosa serve? Scritto così basta inserire le print all'interno del primo if. Poi credo ci sia un != di troppo.

vorrei lanciare " Serialprint" solo se temperatura o umidità cambiano, ma la booleana mi rimane sempre ad 1.......ho visto adesso!= di troppo....adesso funziona

Si ma dato che nella prima if valorizzi solo la bool non ha senso la seconda if. Se sposti le serial.print nel primo if ottieni lo stesso risultato.

la seconda if mi serve per ampliare lo schetck in futuro.

boolean is a non-standard type alias for bool defined by Arduino. It’s recommended to instead use the standard type bool, which is identical.

Quindi usa bool e true/false per i valori e non 1/0 altrimenti tanto vale usare una variabile byte a cui poi assegni 0 o 1

Che infatti sono la stessa cosa. Il senso di una booleana è se il suo uso rende più chiaro il codice, ma per fare questo il nome della variabile booleana dovrebbe anche essere una chiara domanda o situazione, a cui si può rispondere solo vero / falso. Quindi 'Differenza_dht11' che dal nome potrebbe anche rappresentare un valore qualsiasi, potrebbe essere più chiara come booleana se chiamata 'differente', o 'differenteDaDHT'. Mi pare che in qualche "norma stringente" consiglino pure di far precedere le booleane da 'b_', le globali da 'g_' per rendere ancora più evidente il tipo di variabile.

This topic was automatically closed 120 days after the last reply. New replies are no longer allowed.