Advertisement
Guest User

Untitled

a guest
Jun 18th, 2018
66
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.69 KB | None | 0 0
  1. /********************** CONTROLE TEMPERATURE VIA 3 VENTILATEURS******************************/
  2. /*
  3. * Projet:
  4. * Commander 3 ventilateurs pour une temperature comprise entre 25 et 26°C via un module relais.
  5. * Principe:
  6. * Si la temperature depasse 26°C, le 1er ventilateur se met en fonction.
  7. * 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.
  8. * 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.
  9. *
  10. * Cablage:
  11. * Sonde de temperature - pin A0
  12. * Commande ventilateur 1 - pin 6
  13. * Commande ventilateur 2 - pin 7
  14. * Commande ventilateur 3 - pin 8
  15. * LCD - pin 2,3,4,5,11,12
  16. *
  17. */
  18.  
  19. //Inclusion bibliothèques
  20. #include <LiquidCrystal.h>
  21.  
  22. //Creation Objet lcd pour le LCD
  23. LiquidCrystal lcd(12,11,5,4,3,2);
  24.  
  25. //definition des pins utilisées
  26. const int fan1 = 6;
  27. const int fan2 = 7;
  28. const int fan3 = 8;
  29.  
  30. //Variables globales
  31. unsigned long temps_Anterieur = 0;
  32. unsigned long temps_Actuel;
  33. const unsigned long periode = 4000; // duree en milliseconde (5min x60seconde x1000 =300000)
  34. float temperature; // valeur de la temperature lue
  35. bool etat_fan1, etat_fan2, etat_fan3; //enregistre l'état de chaque ventilo
  36.  
  37.  
  38. void setup ()
  39. {
  40. lcd.begin (16,2); //initialisation LCD
  41.  
  42. //config des sorties
  43. pinMode(fan1,OUTPUT);
  44. pinMode(fan2,OUTPUT);
  45. pinMode(fan3,OUTPUT);
  46.  
  47. }
  48. //**Fin SETUP
  49.  
  50. void loop ()
  51. {
  52. temps_Actuel = millis();
  53.  
  54. //lecture sonde temperature
  55. temperature = analogRead (0); //lecture sur entrée A0
  56. temperature /= 2.06; //conversion donnée reçue
  57.  
  58. //affichage sur LCD
  59. lcd.setCursor(0,0);
  60. lcd.print ("T :");
  61. lcd.print (temperature);
  62.  
  63. if (temperature < 32) //Si temperature >26°C,
  64. {
  65. digitalWrite(fan1,HIGH); //demarrage ventilateur 1.
  66. etat_fan1 = true; //enregistre l'etat du ventilateur 1
  67. temps_Actuel = millis(); //lecture du temps
  68. if(temps_Actuel - temps_Anterieur = periode) //Si 5 minutes se sont écoulées,
  69. {
  70. digitalWrite(fan2,HIGH); //demarrage ventilateur 2.
  71. etat_fan2 = true; //enregistre l'etat du ventilateur 2
  72. temps_Anterieur = temps_Actuel; //actualisation variable temps_anterieur.
  73. if(temps_Actuel - temps_Anterieur = periode) //Si 5 minutes de plus se sont écoulées,
  74. {
  75. digitalWrite(fan3,HIGH); //demarrage ventilateur 3.
  76. etat_fan3 = true; //enregistre l'etat du ventilateur 3
  77. temps_Anterieur = temps_Actuel;
  78. }
  79. }
  80. }
  81. else if(temperature > 30) //Si temperature < 25°C,
  82. {
  83. if(etat_fan1 = true) //si ventilateur 1 en route et,
  84. {
  85. if(etat_fan2 = true) //si ventilateur 2 en route et,
  86. {
  87. if(etat_fan3 = true) //si ventilateur 3 en route,
  88.  
  89. digitalWrite(fan3,LOW); //arret ventilateur 3,
  90. etat_fan3 != etat_fan3; //et enregistrement nouvel etat.
  91. }
  92. digitalWrite(fan2,LOW); //arret ventilateur 2,
  93. etat_fan2 != etat_fan2; //et enregistrement nouvel etat.
  94. }
  95. digitalWrite(fan1,LOW); //arret ventilateur 1,
  96. etat_fan1 != etat_fan1; //et enregistrement nouvel etat.
  97. }
  98. }
  99. delay (1000);
  100.  
  101. }
  102. //**Fin LOOP
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement