selve,
sto creando un circuito dove acquisisce il valore della luminosità da una fotoresistenza e temperatura e umidità da un sensore DHT11
La parte del programma che gestisce il sensore DHT11 lo acquista da un esempio specifico creato da Elegoo. Il programma senza aggiungere le righe di codice per la luminosità funziona benissimo, mentre quando sono andato a modificarlo per acquisire le anche la luminosità il blocco di istruzioni del sensore DHT11 non funzionano.
Non capisco perché quando modifico il programma fa visualizzare solo la luminosità mentre temperatura e umidità non lo fa, qualcuno mi potrebbe aiutare?
(arduino deve comunicare con un programma scritto in visual basic ma quella parte funziona)
//librerie
#include <dht_nonblocking.h>;
#define DHT_SENSOR_TYPE DHT_TYPE_11
//dichiarazione void;
//luminosità
void luminosita();
//gestinoe stringa mandata da visual basic
void visualbasic();
static const int DHT_SENSOR_PIN = 8;
DHT_nonblocking dht_sensor( DHT_SENSOR_PIN, DHT_SENSOR_TYPE );
//inizializzo sensore luminosità
int fotoresistenza = A0;
//variabile luminosità
int valo;
int valluminosita;
//variabile per sensore dht11
int t;
int h;
String inputString = "";
bool stringComplete = false;
void setup( )
{
Serial.begin( 9600);
//dichiarazione porte analogicge
//luminosità
pinMode(A0, INPUT);
//riserva 200 caratteri alla frase
inputString.reserve(200);
}
static bool measure_environment( float *temperature, float *humidity )
{
static unsigned long measurement_timestamp = millis( );
/* Measure once every four seconds. */
if( millis( ) - measurement_timestamp > 3000ul )
{
if( dht_sensor.measure( temperature, humidity ) == true )
{
measurement_timestamp = millis( );
return( true );
}
}
return( false );
}
void loop( )
{
//richiama void
luminosita();
//controlla se stringacompletata e diventata tru
if (stringComplete) {
//richima void
visualbasic();
}
float temperature;
float humidity;
if( measure_environment( &temperature, &humidity ) == true )
{
Serial.print( "T = " );
Serial.print( temperature, 1 );
Serial.print( "C, H = " );
Serial.print( humidity, 1 );
Serial.println( "%" );
t = temperature;
h = humidity;
}
}
void serialEvent() {
while (Serial.available()) {
// get the new byte:
//laggi caratteri della serial port
char inChar = (char)Serial.read();
// add it to the inputString:
inputString += inChar;
// if the incoming character is a newline, set a flag so the main loop can
// do something about it:
if (inChar == '\n') {
stringComplete = true;
}
}
}
void visualbasic()
{
//controlla che stringa hai recivuto e per oguno da essi fai azione desiderata
if (inputString=="tem\n")
{
//manda caratteri al visual basic
Serial.println(t);
}
else if (inputString=="umi\n")
{
//manda caratteri al visual basic
Serial.println(h);
}
else if (inputString=="lum\n")
{
//manda caratteri al visual basic
Serial.println(valluminosita);
}
// clear the string:
inputString = "";
stringComplete = false;
}
void luminosita()
{
//leggi la variabile della fotoresistenza
valo = analogRead(fotoresistenza);
//convertilo in percentuale
valluminosita = map(valo, 0,1023, 0, 100);
Serial.print("luminosita: ");
Serial.println(valluminosita);
delay(4000);
}