Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /********************** CONTROLE TEMPERATURE VIA 3 VENTILATEURS******************************/
- /*
- * Projet:
- * Commander 3 ventilateurs pour une temperature comprise entre 25 et 26°C via un module relais.
- * Principe:
- * Si la temperature depasse 26°C, le 1er ventilateur se met en fonction.
- * Si au bout de 5 minutes la temperature reste au dessus de 26°C, le 2e ventilateur se met en fonction jusqu'à ce que la température passe en-dessous 25°C puis s'arrete.
- * Si au bout de 5 minutes plus tard la temperature reste au dessus de 26°C, le 3e ventilateur se met en fonction jusqu'à ce que la température passe en-dessous 25°C puis s'arrete.
- *
- * Cablage:
- * Sonde de temperature - pin A0
- * Commande ventilateur 1 - pin 6
- * Commande ventilateur 2 - pin 7
- * Commande ventilateur 3 - pin 8
- * LCD - pin 2,3,4,5,11,12
- *
- */
- //Inclusion bibliothèques
- #include <LiquidCrystal.h>
- //Creation Objet lcd pour le LCD
- LiquidCrystal lcd(12,11,5,4,3,2);
- //definition des pins utilisées
- const int fan1 = 6;
- const int fan2 = 7;
- const int fan3 = 8;
- //Variables globales
- unsigned long temps_Anterieur = 0;
- unsigned long temps_Actuel;
- const unsigned long periode = 4000; // duree en milliseconde (5min x60seconde x1000 =300000)
- float temperature; // valeur de la temperature lue
- bool etat_fan1, etat_fan2, etat_fan3; //enregistre l'état de chaque ventilo
- void setup ()
- {
- lcd.begin (16,2); //initialisation LCD
- //config des sorties
- pinMode(fan1,OUTPUT);
- pinMode(fan2,OUTPUT);
- pinMode(fan3,OUTPUT);
- }
- //**Fin SETUP
- void loop ()
- {
- temps_Actuel = millis();
- //lecture sonde temperature
- temperature = analogRead (0); //lecture sur entrée A0
- temperature /= 2.06; //conversion donnée reçue
- //affichage sur LCD
- lcd.setCursor(0,0);
- lcd.print ("T :");
- lcd.print (temperature);
- if (temperature < 32) //Si temperature >26°C,
- {
- digitalWrite(fan1,HIGH); //demarrage ventilateur 1.
- etat_fan1 = true; //enregistre l'etat du ventilateur 1
- temps_Actuel = millis(); //lecture du temps
- if(temps_Actuel - temps_Anterieur = periode) //Si 5 minutes se sont écoulées,
- {
- digitalWrite(fan2,HIGH); //demarrage ventilateur 2.
- etat_fan2 = true; //enregistre l'etat du ventilateur 2
- temps_Anterieur = temps_Actuel; //actualisation variable temps_anterieur.
- if(temps_Actuel - temps_Anterieur = periode) //Si 5 minutes de plus se sont écoulées,
- {
- digitalWrite(fan3,HIGH); //demarrage ventilateur 3.
- etat_fan3 = true; //enregistre l'etat du ventilateur 3
- temps_Anterieur = temps_Actuel;
- }
- }
- }
- else if(temperature > 30) //Si temperature < 25°C,
- {
- if(etat_fan1 = true) //si ventilateur 1 en route et,
- {
- if(etat_fan2 = true) //si ventilateur 2 en route et,
- {
- if(etat_fan3 = true) //si ventilateur 3 en route,
- digitalWrite(fan3,LOW); //arret ventilateur 3,
- etat_fan3 != etat_fan3; //et enregistrement nouvel etat.
- }
- digitalWrite(fan2,LOW); //arret ventilateur 2,
- etat_fan2 != etat_fan2; //et enregistrement nouvel etat.
- }
- digitalWrite(fan1,LOW); //arret ventilateur 1,
- etat_fan1 != etat_fan1; //et enregistrement nouvel etat.
- }
- }
- delay (1000);
- }
- //**Fin LOOP
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement