|
|
Ligne 1 : |
Ligne 1 : |
− | #include <math.h>
| |
− | #define LIGHT_SENSOR A0
| |
| | | |
− | int sensorPin = A5; // Déclaration de la broche d'entrée de thermomètre
| |
− | double Thermistor(int RawADC) //Calcul température du capteur correspondant
| |
− | {
| |
− | double Temp;
| |
− | Temp = log(10000.0 * ((1024.0 / RawADC - 1)));
| |
− | Temp = 1 / (0.001129148 + (0.000234125 + (0.0000000876741 * Temp * Temp )) * Temp );
| |
− | Temp = Temp - 227.15; // conversion de degrés Kelvin en °C
| |
− | return Temp;
| |
− | }
| |
− |
| |
− | int PinNumeriqueHumidite=2; // Broche Numérique mesurant l'humidité
| |
− | int humidite;
| |
− |
| |
− | void setup()
| |
− | {
| |
− | Serial.begin (9600); //Connexion série à 9600 baud
| |
− | pinMode(10, OUTPUT); //Pin 10 en entrée numérique de la pompe
| |
− | pinMode(PinNumeriqueHumidite, INPUT); //Pin 3 en entrée numérique du capteur humidité
| |
− | }
| |
− |
| |
− | void loop()
| |
− | {
| |
− |
| |
− | int readVal = analogRead(sensorPin); //Lecture valeur analogique de la température
| |
− | double temperature = Thermistor(readVal);
| |
− |
| |
− | int luminosite = analogRead(LIGHT_SENSOR); //Lecture valeur numérique de la luminosité
| |
− |
| |
− | Serial.println("Température = "); //Affichage valeur température
| |
− | Serial.print(temperature);
| |
− | Serial.println(" degrés.");
| |
− | delay(500);
| |
− |
| |
− | humidite = digitalRead(PinNumeriqueHumidite); //Affichage valeur humidité
| |
− | Serial.println("Humidité = ");
| |
− | Serial.println(humidite);
| |
− | delay(500);
| |
− |
| |
− | Serial.println("Luminosité = "); //Affichage valeur luminosité
| |
− | Serial.println(luminosite);
| |
− | delay(500);
| |
− |
| |
− | if (humidite==1) //Condition pour sol sec
| |
− | {
| |
− | if ((temperature>2) && (temperature<=10)) //Condition arrosage pour 2°C<T<10°C
| |
− | {
| |
− | if (luminosite>100) //Condition pour luminosité>100
| |
− | {
| |
− | digitalWrite(10, HIGH);
| |
− | delay(500);
| |
− | digitalWrite(10, LOW);
| |
− | }
| |
− | else
| |
− | {
| |
− | digitalWrite(10, LOW);
| |
− | }
| |
− | }
| |
− |
| |
− |
| |
− | if ((temperature>10) && (temperature<25)) //Condition arrosage pour 10°C<T<25°C
| |
− | {
| |
− | digitalWrite(10, HIGH); // Pompe allumée
| |
− | delay (10000);
| |
− | digitalWrite(10, LOW);
| |
− | }
| |
− | if (temperature>=25) //Condition arrosage pour T>25°C
| |
− |
| |
− | {
| |
− | digitalWrite(10, HIGH);
| |
− | delay(15000);
| |
− | digitalWrite(10, LOW);
| |
− | }
| |
− | else
| |
− | {
| |
− | digitalWrite(10, LOW);
| |
− | }
| |
− | }
| |
− | else
| |
− | {
| |
− | digitalWrite(10, LOW);
| |
− | }
| |
− | }
| |