Bonjour,
Merci infobarquee pour ta réponse. J'ai fait quelques recherches et je suis arrivé à la conclusion qu'il me fallait un MOSFET IRF540N (assez commun d'après ce que j'ai compris).
RDV dans mon magasin d'électronique pour en acheter un pour 3€. J'ai fais tous mes branchements (Sonde DHT22, Ventilo et écran LCD). J'ai bien mis une résistance sur la sonde DHT22 et sur le MOFSET (10K ohms).
Du coup, je me suis fait quelques règles pour que le ventilo tourne plus ou moins vite selon la température.
#include "DHT.h"
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
#define DHTPIN A0
#define DHTTYPE DHT22
DHT dht(DHTPIN, DHTTYPE);
LiquidCrystal_I2C lcd(0x27,16,2); // défini LCD adresse à 0x27 pour un 16 caractères et deux lignes
const int VENTILO=3; //declaration du ventilo sur la broche 3
int TEMP = 0; //on déclare l'entrée sur la broche 0
void setup() {
// put your setup code here, to run once:
analogWrite(VENTILO,0); //Met le ventilo a l'arret au demarrage
pinMode(VENTILO, OUTPUT); //met la broche en sortie
pinMode(TEMP, INPUT); //met la broche en entree
Serial.begin(9600); //initialise le port serie
lcd.init(); // initialise le lcd
lcd.backlight(); //allume le rétroeclairage
}
void loop() {
// put your main code here, to run repeatedly:
float h = dht.readHumidity();
float t = dht.readTemperature();
if (isnan(t) || isnan(h))
{
Serial.println("Capteur de temperature HS");
}
else {
Serial.print("Humidity: ");
Serial.print(h);
Serial.print(" %\t");
Serial.print("Temperature: ");
Serial.print(t);
//Serial.println("");
}
if(analogRead(t) >= 1 && analogRead(t) < 600)
{ analogWrite(VENTILO,50);Serial.println(" Vitesse: 50");lcd.print(t);lcd.print(" - 50");}
if(analogRead(t) >= 600 && analogRead(t) < 700)
{ analogWrite(VENTILO,100);Serial.println(" Vitesse: 100");lcd.print(t);lcd.print(" - 100");}
if(analogRead(t) >= 700 && analogRead(t) < 800)
{ analogWrite(VENTILO,150);Serial.println(" Vitesse: 150");lcd.print(t);lcd.print(" - 150");}
if(analogRead(t) >= 800 && analogRead(t) < 900)
{ analogWrite(VENTILO,200);Serial.println(" Vitesse: 200");lcd.print(t);lcd.print(" - 200");}
if(analogRead(t) >= 900 && analogRead(t) < 60000)
{ analogWrite(VENTILO,255);Serial.println(" Vitesse: 255");lcd.print(t);lcd.print(" - 255");}
Serial.print("Humidite: ");
Serial.print(analogRead(t));
Serial.print(" - ");
Serial.print("Temperature: ");
Serial.println(analogRead(t));
delay(1000);
lcd.clear();
}
Mon ventilateur passe de la vitesse "50" à la vitesse "255" sans grande variation de vitesse...
Voici les log serie:
Humidity: 69.60 % Temperature: 25.40 Vitesse: 50
Humidite: 149 - Temperature: 150
Humidity: 74.20 % Temperature: 25.70 Vitesse: 50
Humidite: 151 - Temperature: 151
Humidity: 74.20 % Temperature: 25.70 Vitesse: 50
Humidite: 150 - Temperature: 150
Humidity: 74.90 % Temperature: 26.00 Vitesse: 255
Humidite: 1016 - Temperature: 1016
Humidity: 74.90 % Temperature: 26.00 Vitesse: 255
Humidite: 1017 - Temperature: 1017
Humidity: 73.70 % Temperature: 26.50 Vitesse: 255
Humidity: 49.70 % Temperature: 26.00 Vitesse: 255
Humidite: 1016 - Temperature: 1016
Humidity: 49.70 % Temperature: 26.00 Vitesse: 255
Humidite: 1017 - Temperature: 1016
Humidity: 49.30 % Temperature: 25.90 Vitesse: 150
Humidite: 561 - Temperature: 560
Humidity: 49.30 % Temperature: 25.90 Vitesse: 50
Humidite: 385 - Temperature: 385
Humidity: 49.40 % Temperature: 25.90 Vitesse: 50
Humidite: 241 - Temperature: 241
On remarque qu'au passage des 26° la lecture de la broche analogique change du tout au tout...
Je ne sais pas pourquoi? Des idées?
Aussi, sur cette broche analogique on peut lire de 0 à 1023 c'est bien ça?
Est-ce qu'on peut calculer la valeur de la broche à X°? Histoire de dire qu'a 20° le ventilo tourne a 50 etc etc?
Merci