Bonjour,
Je suis élève de terminal STI2D et je doit effectuer un travail qui consiste à créer un prototype de pluviomètre en utilisant arduino.
Mes objectifs sont les suivants:
-
Capter la pluviométrie et l'afficher en temps réel sur le shield lcd(en mm)
-
Afficher la pluviométrie du jour sur le shield lcd (en mm)
-
Mémoriser la pluviométrie journalière dans la mémoire de l'arduino et pouvoir accéder à cette mémoire (des 7 derniers jour seulement) via le lcd et ses joysticks.
Le pluviomètre est un pluviomètre à auget basculeur (capteur ILS), que je simule à l'aide d'un bouton poussoir pour le moment.
L'état de mon projet est que j'arrive à acquérir les impulsions du BP, et a afficher la pluviométrie en temps réel, les problèmes que je doit résoudre sont:
-
si l'état du bouton poussoir est inchangé pendant x minutes, on remet la pluviométrie en temps réel à zéro (car cela signifie qu'il ne pleut plus) en veillant à ce qu'elle est été ajoutée à la pluviométrie du jour.
-
Toute les 24h je stocke la valeur de la pluviométrie du jour dans la mémoire, valeur qui est constamment incrémenter par la pluviométrie en temps réel.
-
J'accède à ces valeurs que l'on peut appeler "historique" via les joysticks
Je n'attend évidement pas le programme fait, mais des pistes de recherches correspondant aux problèmes que je rencontre, ou bien des alternatives/ correction à mon projet.
Ci dessous le code actuel de mon programme ainsi que le cablâge et le LCD.
#include <LiquidCrystal.h>
const int buttonPin = 2;
int buttonState = 0;
int comptage = 0;
float volumejour = 0;
float volume = 0;
LiquidCrystal lcd(8,9,4,5,6,7);
void setup(){
pinMode(buttonPin, INPUT);
Serial.begin(9600);
lcd.begin(16,2);
}
void loop(){
buttonState = digitalRead(buttonPin);
if (buttonState == 1){
comptage = comptage+1;
Serial.println ("Comptage");
Serial.println (comptage);
volume = comptage * 0.27;
Serial.println ("Comptage");
Serial.println (volume);
lcd.setCursor(7, 0);
lcd.print(volume);
lcd.setCursor(14, 0);
lcd.write("mm");
lcd.setCursor(0, 0);
lcd.write("Direct");
if (buttonState == 1){
volumejour = volume;
Serial.println ("Comptage");
Serial.println (volumejour);
lcd.setCursor(7, 1);
lcd.print(volumejour);
lcd.setCursor(14, 1);
lcd.write("mm");
lcd.setCursor(0, 1);
lcd.write("Jour");
while (digitalRead(buttonPin) == HIGH){}
}
}
}