Skip to content
Snippets Groups Projects
Commit 15806e20 authored by Puissegur Alexis's avatar Puissegur Alexis
Browse files

organizing

parent 5a624244
No related branches found
No related tags found
No related merge requests found
#include "Bouton.h"
#include "Led.h"
#include "Meteo.h"
#include "Screen.h"
#include "Luminosite.h"
#include "Bluetooth.h"
#include "Son.h"
#define SPAN 3000
#define HEADER_LIGHT_ON "LIGHT"
#define HEADER_SOUND_ON "SOUND"
#define REMAINING_TIME 10000
#define FAb4 740
#define LAb4 932
/*
Thingz prend ses mesures et envoie les donnes l'appli java (toutes les 5mins par ex)
l'appli java est une IHM configurable qui :
affiche les donnes en temps rel sur des graphiques
sait s'il faut arroser la plante ou non
envoie un mail au prof si besoin pour arroser
envoie via bluetooth si arrosage possible ou urgent et si en semaine ou weekend
son plus ou moins long
Messages bluetooth :
LIGHT;
SOUND;WEEKEND
SOUND;SEMAINE
*/
Bouton monBouton1;
Led maLed1;
Meteo meteo;
Screen monEcran1;
Bluetooth bluetooth;
Luminosite luminosite;
Son buzzer;
int humi;
int lumi;
int temp;
unsigned long timeStamp;
boolean ledHasToBeTurnedOn;
unsigned long timePushed;
unsigned long alarmTimeStamp;
void setup()
{
temp = 0;
lumi = 0;
humi = 0;
timeStamp = 0;
ledHasToBeTurnedOn = false;
timePushed = 0;
alarmTimeStamp = 0;
}
void updateSensors(){
temp = meteo.temperature();
lumi = luminosite.etat();
humi = meteo.getHumidity();
}
void display(){
monEcran1.setContrast(70, false);
updateSensors();
monEcran1.printMsg("CRYING PLANT !",0);
monEcran1.printMsg(((String)"TEMP : ") + temp,2);
monEcran1.printMsg(((String)"HUMI : ") + humi,3);
monEcran1.printMsg(((String)"LUMI : ") + lumi,4);
}
void sendBluetoothDataToServer(){
}
void dealWithSound(String data){
if(0){ // on weekend then water
} else { // on weekday then trigger the alarm for 5min
alarmTimeStamp = millis();
}
}
void receiveFromBluetooth() {
String buffer;
if (bluetooth.dataAvailable()){
buffer = bluetooth.receive();
}
if (buffer.startsWith(HEADER_LIGHT_ON)){
// DO NOTHING YET
}
else if (buffer.startsWith(HEADER_SOUND_ON)){
dealWithSound(buffer); // change
}
}
void fireAlarm(){
buzzer.tone(FAb4,600);
buzzer.tone(LAb4,200);
}
void loop()
{
if(millis() - timePushed < REMAINING_TIME){
if(millis() - timeStamp > SPAN){
timeStamp = millis();
display();
}
} else {
monEcran1.clear();
monEcran1.setContrast(0, false);
}
if (monBouton1.estTenuAppuye()) {
timePushed = millis();
maLed1.inverse();
}
if(millis() - alarmTimeStamp < REMAINING_TIME && millis() > REMAINING_TIME){
fireAlarm();
}
}
La plante qui pleure (Thingz) - Cahier des charges
FAIT :
lire l’humidité
afficher l’humidité à l’écran
lire et afficher la température à l’écran
lire et afficher l’intensité lumineuse à l’écran
n’afficher la température et l’humidité que pendant 5 minutes après qu’on ait appuyé sur le bouton
PAS FAIT :
calculer s’il y a besoin d’arroser (peut prendre en compte aussi la température)
Si besoin d’arroser, allumer la LED bleue
allumer LED que si mouvement détecté dans la pièce dans les 15 dernières minutes
émettre un signal sonore si le besoin d‘arrosage est vraiment urgent et si mouvement détecté dans la pièce dans les 15 dernières minutes
Utiliser le bouton qui tourne (poteur ?) pour régler le seuil d’humidité critique (seuil à partir duquel l‘arrosage est demandé (et du coup afficher ce seuil sur l’écran)
Bluetooth (important pour que ce soit un objet CONNECTE) :
envoyer toutes les 5 minutes à un PC les données (température, humidité, luminosité, seuil d’humidité de la plante)
c’est l’application PC qui détermine s’il y a besoin d’arroser. si on est en semaine, demander à Thingz d’allumer la LED et faire du buzz à la détection de mouvement. Si c’est le week-end : déclencher l’arrosage d’urgence
arrosage d’urgence : allumer la prise connectée, sur laquelle est branchée un ventilateur. Autour de l’axe du ventilateur est accroché une ficelle qui tient un couvercle hermétique en papier sous un verre d’eau à l’envers dans le pot de la plante.
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment