Ciao a tutti
Mi scuso per non aver fatto la presentazione ma l’altra volta un utente mi ha postato dove farla ma non riesco più a ritrovarmi la sezione giusta , quindi se qualcuno è così gentile da postarmi la sezione sarò lieto di farla . Nel frattempo avrei qualche domanda da fare , ho realizzato un circuito per controllare l’attivazione di una ventola 12 volt con un relè a due canali quelli sulle basette per intenderci, in funzione però della temperatura rilevata dal sensore dht 11 ( quando la temperatura supera i 23 gradi voglio accendere la ventola e quando cala sotto i 23 voglio spegnerla ). Per poi visualizzare tutto su un display 20x4. Una volta scaricato il programma le schermo si accende visualizzo temperatura e umidità correttamente ma quando vado a far salire la temperatura sopra i 23 gradi la ventola non parte. Sto utilizzando arduino mega 2560. Ora vi posto il programma che ho realizzato magari qualcuno riesce a capire subito dove ho sbagliato ( io ancora sono un principiante ). Grazie in anticipo
#include "DHT.h"
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
#define DHTPIN 8 // pin sensore temperatura
#define relè 7 // pin relè
#define DHTTYPE DHT11 // definisco il tipo di sensore che uso
DHT dht(DHTPIN, DHTTYPE); // convalido pin e sensore
LiquidCrystal_I2C lcd(0x27,20,4); // indirizzo comunicazione dysplay 20x4
void setup()
{
// Attivo il display 20x4
lcd.init(); // inizializzo lcd
lcd.init();
// stampo messaggio sull'lcd
lcd.backlight();
lcd.setCursor(0,0);
lcd.print("Temperatura :");
lcd.setCursor(0,1);
lcd.print("Umidita % :");
lcd.setCursor(0,2);
lcd.print("Umidita terra % :");
// Imposto il pin 9 sul relè
pinMode(7, OUTPUT);
// Attivo il sensore di temperatura (DHT11)
dht.begin();
}
void loop()
{
// Lettura umidità e temperatura del sensore DHT11
int t = dht.readTemperature();
int h = dht.readHumidity();
lcd.setCursor(18, 0);
lcd.print(t);
lcd.setCursor(18, 1);
lcd.print(h);
// Misura la temperatura e se maggiore di 26 gradi attiva relè per accendere la ventola
if (t >= 23 )
digitalWrite (7, HIGH); // Attiva Relè 2
else
digitalWrite (7, LOW); // Spegni Relè 2
delay (2000);
}
sembra comunqe che la tua presentazione ci sia...
ad uno sguardo veloce il tuo programma dovrebbe andare, ma ci lascia alcuni dubbi:
alla riga 30 imposti il pin 7, ma scrivi di impostare il 9
alla riga 26 stampi una scritta che non usi
alla riga 5 definisci una macro che non usi
alla riga 16 inizializzi 2 volte il display
alle rige 42 e 43 inizializzi di continuo variabili che potevano essere globali
tutti appunti minori, il programma dovrebbe essere funzionante, anche se un po' zoppicante
anche alla riga 58 hai dei dubbi su quanto "dura" una IF o una ELSE
magari il programma non è tuo, ma lo hai solo copiato?
controlla bene il cablaggio, perchè il programma dovrebbe andare
casomai sposta il releè sul pin 13
perchè non partite subito col 13, così vi togliete i dubbi fin da subito?
Non e' che tu sia stato molto chiaro:
cosa non va? non si accende il led? non scatta il rele? non si accende la ventola? non paete il motore dell'autobus?
hai messo a posto anche qualche cosa d'altro? i problemi che ti ho indicato?, lo schema?
insomma aiutaci ad aiutarti
Lucab:
Se ti riferisci al led sopra la scheda relè si è rosso però
mi riferivo al led interno allo arduino, che si accende spegne assieme al pin 13
Viene comodo sia per collaudare arduino nuovi che per check rapidi senza mettete un led esterno
Nel caso attuale, se si illumina il led interno il programma va, cerchi il.problema nel cablaggio. Viceversa: viceversa
Brunello l unica differenza nel tuo schema è che la scheda relè che sto utilizzando bisogna alimentarla a 12 volt sennò non da segni di vita ??
Dici che il funzionamento è lo stesso , cioè funziona sempre al contrario ??