Bonjour à tous! ![]()
Je viens ici vous demandez conseils, je suis élève en Terminale STI2D, et j'ai un projet à réaliser en fin d'année. Je travaille sur une simulation d'arrosage automatique, je pars avec aucune base d’électronique et de codage. Cependant, j'ai réussi à faire quelques trucs sympa à l'aide du microprocesseur ARDUINO accompagné de son shield GROVE.
Je viens aujourd'hui vous expliquez ce que j'aimerai faire. J'ai réussi à afficher sur un Grove - LCD RGB Backlight l'humidité que j'obtenais au bout de mon capteur d'humidité. Cette valeur, je l'ai ensuite convertie en % (me basant sur une échelle de 0 (Totalement sec) à 800 (100% humide, trempé dans l'eau)). Je suis satisfait de ce travail, mais maintenant j'aimerai simulé à l'aide d'un Analog Servo, donc un petit moteur, l'arrosage automatique avec les conditions suivantes ;
un % d'humidité < 30%
présence = LOW
Je vous mets ci-dessous le code que j'ai en ce moment, fonctionnel, mais pas dans les conditions que je souhaites. Merci d'avance de votre aide!
#include <Wire.h>
#include "rgb_lcd.h"
#include <Servo.h>
rgb_lcd lcd;
const int colorR = 181;
const int colorG = 163;
const int colorB = 197;
Servo myservo;
int pos = 0;
int humidite;
int humidite_pourcentage;
boolean presence = HIGH;
void setup()
{
lcd.begin(16, 2);
lcd.setRGB(colorR, colorG, colorB);
myservo.attach(8);
}
void loop()
{
humidite = analogRead(A0);
presence = digitalRead(2);
humidite_pourcentage = humidite * 100/800;
if (!presence && humidite_pourcentage < 30)
{
digitalWrite(3,HIGH);
delay(100);
digitalWrite(3,LOW);
lcd.setCursor(0,0);
lcd.print("Humidite = ");
lcd.println(humidite);
delay(100);
lcd.setCursor(0,1);
lcd.print("Humidite % = ");
lcd.println(humidite_pourcentage);
delay(100);
while(!presence && humidite_pourcentage < 30){
for (pos = 0; pos <= 180; pos += 1) {
myservo.write(pos);
delay(15);
}
for (pos = 180; pos >= 0; pos -= 1) {
myservo.write(pos);
delay(15);
}
}
}
}