Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <LiquidCrystal.h>
- #include <TimedAction.h>
- LiquidCrystal screen(8, 9, 4, 5, 6, 7);
- // valve
- int port_valve = 6;
- // variables capteurs de niveau
- float step_watter = 0;
- float step_watter_convert = 0;
- int capteurPIN = A2;
- int reserv_max = 300;
- // variables LEDs ( indice du niveau de l'eau )
- int LED_R = A3;
- int LED_O = A4;
- int LED_V = A5;
- // port pour la lumiere
- int Lumiere_Port = A6;
- // variables capteur humidite
- float val = 0;
- float val_convert = 0;
- int soilPIN = A1;
- int soilPOWER = 7;
- // variables de vie de la plante
- float temps_lumiere = 12 * 60 * 60; // en secondes
- float niveau_deau_critique = 20; // quand le niveau d'eau est au plus bas et qu'il faut remplir
- float niveau_deau_bon = 100; // quand le niveau d'eau est au maximum
- int humidite_min = 10; // quand le niveau d'humidite est minimal et qu'il faut arroser
- int humidite_max = 50; // quand le niveau d'humidite est au maximal et qu'il ne faut plus arroser
- // plan pour gerer le temps
- /*
- +---------------- gerer le temps ----------------+
- etablir une list d'heure:numero de tache, correspondant a une etape programmer
- 1 = prendre les valeurs du capteur de niveau d'eau
- 2 = prendre capteur d'humidite
- 3 = allumer lumiere
- 4 = eteindre lumiere
- */
- void thread_lampe() {
- int status = 0;
- while(status == 0){
- printf("\nYolo");
- pinMode(Lumiere_Port, HIGH);
- delay(temps_lumiere);
- pinMode(Lumiere_Port, LOW);
- delay(temps_lumiere);
- }
- }
- int open_valve(){
- digitalWrite(port_valve, HIGH);
- return 0;
- }
- int close_valve(){
- digitalWrite(port_valve, LOW);
- return 0;
- }
- // fonctions niveau d'eau
- int get_flood() {
- step_watter = analogRead(capteurPIN);
- step_watter_convert = (step_watter / reserv_max)*100;
- return step_watter_convert
- }
- // fonctions humidite.
- int get_moisture(){
- val = analogRead(soilPIN);
- digitalWrite(soilPOWER, LOW);//turn D7 "Off"
- return val;//send current moisture value
- }
- int print_display_moisture(){
- Serial.print("\n[+] display moisture and refresh screen");
- screen.clear();
- screen.setCursor(0, 0);
- screen.print("HUMIDITE:");
- val_convert = (val / 867)*100;
- screen.print(val_convert);
- screen.print("%");
- }
- void life_flower_manager(){
- // variables
- moisture = get_moisture();
- step_watter_convert = get_flood();
- // gerer le niveau d'eau et l'affichage
- screen.setCursor(0, 1);
- screen.print("NIVEAU:");
- if(step_watter_convert <= niveau_deau_critique) {
- screen.print("BAS");
- pinMode(LED_V, LOW);
- pinMode(LED_O, LOW);
- pinMode(LED_R, HIGH);
- }
- else if(step_watter_convert >= niveau_deau_bon) {
- screen.print("HAUT");
- pinMode(LED_V, HIGH);
- pinMode(LED_O, LOW);
- pinMode(LED_R, LOW);
- }
- else if(step_watter_convert > niveau_deau_critique && step_watter < niveau_deau_bon){
- screen.print("MOYEN");
- pinMode(LED_V, LOW);
- pinMode(LED_O, HIGH);
- pinMode(LED_R, LOW);
- }
- }
- // main function arduino
- void setup(){
- //humidite
- Serial.begin(9600);
- pinMode(soilPOWER, OUTPUT);
- digitalWrite(soilPOWER, LOW);
- Serial.print("\n[+] initialize smart flower software version 1.0.1");
- screen.begin(16, 2);
- screen.clear();
- //niveau led
- pinMode(LED_R , OUTPUT);
- pinMode(LED_O , OUTPUT);
- pinMode(LED_V , OUTPUT);
- // valve
- pinMode(port_valve, OUTPUT);
- // lumiere
- pinMode(Lumiere_Port, OUTPUT);
- TimedAction Thread_Lux = TimedAction(2, thread_lampe);
- }
- void loop(){
- Serial.print("\n[+] starting smart flower");
- Thread_Lux.check();
- life_flower_manager();
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement