Go Down

Topic: 3 led (Read 740 times) previous topic - next topic

-d0b-

Nov 24, 2014, 08:19 pm Last Edit: Nov 24, 2014, 09:17 pm by -d0b-
salve

non capisco come mai questo sketch non riesca a gestire 3 led... dovrebbero accendersi in base alla temperatura ed umidita, lettura effettuata attraverso un sensore dht11.

Code: [Select]
////  problema non accende led3
 
#include "DHT.h"
 
#define DHTPIN 2    // Il pin a cui è collegato il sensore
 
#define DHTTYPE DHT11   // DHT 11
 
DHT dht(DHTPIN, DHTTYPE);
 
 // Vegngono inizializzati i pin a cui sono connessi i LED
int led1 = 4;
int led2 = 5;
int led3 = 6;
int ritardo = 1000;
 
// Vengono indicate le temperature per cui i LED si devono accendere
int temp_max = 26;
int temp_min = 30;
int humi_min = 50;
 
 
void setup() {
  Serial.begin(9600);
  Serial.println("DHTxx test!");
  pinMode(led1, OUTPUT);
  pinMode(led2, OUTPUT);
  pinMode(led3, OUTPUT);
  dht.begin();
}
 
void loop() {
  // Legge la temperatura e l'umidità ogni 250 millisecondi!
  // Vengono inizializzate le variabili in cui vengono scritti i valori letti
  float h = dht.readHumidity();
  float t = dht.readTemperature();
 
  // Controlla se la lettura è andata a buon fine
  if (isnan(t) || isnan(h)) {
    Serial.println("Failed to read from DHT");
  } else {
    Serial.print("Umidità =>   ");
    Serial.print(h); // Stampa nel seriale la percentuale dell'umidità
    Serial.print(" %t");
    Serial.print("         Temperatura =>   ");
    Serial.print(t); // Stampa nel seriale il valore della temperatura
    Serial.println(" *C");
  }
 
/// accende led1
  if (t >= temp_max) {
    digitalWrite(led1, HIGH);   // Viene accesso il LED rosso
    delay(ritardo);  
    digitalWrite(led1, LOW);   // Viene spento il LED rosso
  }

/// accende led2  
    if (t <= temp_min) {
    digitalWrite(led2, HIGH);   // Viene accesso il LED blu
    delay(ritardo);  
    digitalWrite(led2, LOW);   // Viene spento il  LED blu
  }

/// accende led3 ----  MA NON SI ACCENDE PERCHE?
  if (t <= humi_min) {
    digitalWrite(led3, HIGH);   // Viene accesso il LED rosso
    delay(ritardo);  
    digitalWrite(led3, LOW);   // Viene spento il  LED rosso
  }
  
}



questo lo schema.... si capisce poco... comunque i collecamenti son giusti rispetto allo sketch e le temperature sono impostate perche si accendano i led...

il led che non si illumina è il primo partendo da sinistra



puo essere un problema di alimentazione =>Sappi che oltre i due led in serie avrai bisogno di un'alimentazione esterna; ad esempio con 5 led hai bisogno di un alimentatore esterno da 12V.

pippo72

ciao

A livello hardware hai fatto un grosso errore: non ci sono resistenze il serie ai led, rischi di danneggiare il micro.

Quote
Sappi che oltre i due led in serie avrai bisogno di un'alimentazione esterna; ad esempio con 5 led hai bisogno di un alimentatore esterno da 12V.
Guarda che non hai nessun led messo in serie con altri led.

Per quanto riguarda il terzo led:
Code: [Select]
/// accende led3 ----  MA NON SI ACCENDE PERCHE?
  if (t <= humi_min) {
    digitalWrite(led3, HIGH);   // Viene accesso il LED rosso
    delay(ritardo); 
    digitalWrite(led3, LOW);   // Viene spento il  LED rosso
  }

hai sbagliato variabile: hai scritto t al posto di h
credo dovrebbe essere cosi:
Code: [Select]
if (h <= humi_min) {
eccetera


ciao
pippo72

Go Up