Étape 3: croquis
Voici l’esquisse que la carte Arduino s’exécute. Le code détermine essentiellement ce que la lecture de la sonde d’humidité est et la compare à la limite de l’humidité la lecture. Si elle est supérieure, il exécute la boucle openValve. Si elle est inférieure, puis il exécute la boucle de writeSensor. La boucle d’openValve ouvre la vanne et clignote le mot arrosage un certain nombre de fois déterminé par la variable blinkCount avant de fermer la vanne. La boucle writeSensor affiche simplement le capteur de lecture sur l’écran LCD. Si la lecture de l’humidité est inférieure à la limite de l’humidité, un certain nombre d’instructions sont exécutées pour déterminer quelle lumière LED devrait lumière vers le haut et où le servo serait positionné.
Auteur : Nick Brown
Révision : 03/12/15
Semestre : Automne 2015
Inclure des instructions
#include
#include
#include
LiquidCrystal_I2C lcd(0x27,16,2) ;
#define servopin 9 / / Defines servomoteur comme indicateur de broche 9 de Servo ;
int valvePin = 10 ; Électrovanne est connecté à la broche 10
int moistureLimit = 450 ; La limite de l’humidité avant les besoins de la plante à
être arrosé est 450
int greenLimit = 350 ; La limite d’humidité que la LED verte s’allume
int yellowLimit = 400 ; La limite d’humidité entre le premier et le deuxième
feux LED jaunes
int blinkCount = 4 ; représente la quantité de temps que le message « arrosage » sera
cligner des yeux avant que la soupape se ferme
qu’int = 7 ; LED verte est connecté à la broche 7
int yellow1led = 6 ; LED jaune premier est connecté à la broche 6
int yellow2led = 5 ; Deuxième LED jaune est connecté à la broche 5
int redled = 4 ; La LED rouge est connectée à la borne 4
void setup() {}
initialiser une communication série 9600 bits par seconde :
Serial.Begin(9600) ;
LCD.init() ;
LCD.backlight (); //turns le rétro-éclairage sur
pinMode (valvePin, sortie) ; Définit la valve et voyants comme sorties
pinMode (que, sortie) ;
pinMode (yellow1led, sortie) ;
pinMode (yellow2led, sortie) ;
pinMode (redled, sortie) ;
Indicator.Attach(servopin) ; moteur servo se fixe à la broche
Delay(1000) ; attendre 1000msec}
void loop() {}
lire l’entrée sur la broche analogique 0 :
int moistureValue = analogRead(A0) ;
Serial.println(moistureValue) ; Si l’instruction indique qu’à la lecture de l’humidité est supérieure à la
limite de l’humidité. Si donc, la vanne ouverte de la boucle s’exécute, la LED rouge sera
s’allume et le moteur servo sera positionné à l’angle 0.
Si (moistureValue > moistureLimit)
{
digitalWrite(redled,HIGH) ;
digitalWrite(yellow1led,LOW) ;
digitalWrite(yellow2led,LOW) ;
digitalWrite(greenled,LOW) ;
Indicator.Write(0) ;
OpenValve (valvePin) ;
}
Si si la déclaration n’est pas conclue, la boucle de writesensor se déroulera
et une série d’if déclarations seront déroulera déterminer comment humide la
le sol est. Ces déclarations dira wich LED lumière a besoin d’être éclairé
et quelle position le servomoteur doit être en.
d’autre
{
writeSensor(moistureValue) ;
digitalWrite(redled,LOW) ;
Si (yellowLimit > moistureValue)
{
Si (greenLimit > moistureValue)
{
digitalWrite(greenled,HIGH) ;
digitalWrite(yellow2led,LOW) ;
digitalWrite(yellow1led,LOW) ;
Indicator.Write(180) ;
}
d’autre
{
digitalWrite(yellow1led,HIGH) ;
digitalWrite(greenled,LOW) ;
digitalWrite(yellow2led,LOW) ;
Indicator.Write(120) ;
}
}
d’autre
{
digitalWrite(yellow2led,HIGH) ;
digitalWrite(yellow1led,LOW) ;
Indicator.Write(60) ;
}
}
}
Boucle de vanne ouverte s’exécute lorsque le sol est trop sec
void OpenValve (int pinNum) {}
valve s’ouvre
digitalWrite(pinNum,HIGH) ;
L’écran LCD clignote le mot clin comte fois l’arrosage
avant que la vanne est fermée.
LCD.Clear() ; pour (int i = 0; i < blinkCount ; j’ai ++)
{
Imprimer l’arrosage à l’écran
LCD.Print("Watering") ;
retarder (1000) ;
Désactiver l’affichage :
lcd.noDisplay() ;
Delay(500) ;
Activer l’affichage :
LCD.Display() ;
Delay(500) ;
LCD.Clear() ;
}
digitalWrite(pinNum,LOW) ;
}
writeSensor boucle s’exécute lorsque le sol est suffisamment humide
Sub writeSensor(int sensorData)
{
mis en place nombre de l’écran LCD de colonnes et de lignes :
LCD.Begin (16, 2) ;
Imprimer un message à l’écran LCD.
LCD.Print (« capteur ») ;
lcd.setCursor (0, 1) ;
imprimer que la lecture de l’humidité passée dans le paramètre sensorData :
LCD.Print(sensorData) ;
}