Je voudrais utiliser tout le temps un circuit Arduino que j'ai conçu mais il faudrait que le circcuit puisse
s'activer et se désactiver quasiment completement.
Sur un LCD l'heure est affichée, la température et l'humidité aussi. Avec des boutons poussoirs on peut régler et activer une minuterie qui sonnera avec un buzzer. Un autre bouton poussoir permet d'enregistrer une température et d'afficher la différence par rapport à la température actuelle
Comment faire pour arreter de lire et d'envoyer des données ?
voir code ci dessous: Si "actDesact" fait 0 et ce que l'arduino dépensera de l'énergie à lire "boutonM"?
if (actDesact ==1) {
if (digitalRead(boutonM) ==1) {
(instructions)
}
Peut on lire des boutons poussoirs dans des analogs?
Un arduino pro mini est il adapté pour ce genre de circuit?
Le code entier:
#define DHT11PIN 5 //capteur DHT11
#include <dht11.h>
#include <LiquidCrystal.h>
LiquidCrystal lcd(7, 8, 9, 10,11,12); //écran LCD
dht11 DHT11;
int tempEnregistree;
int actualAugmentation=0;
boolean flag;
int boutonTemp=6; //bouton poussoir pour enregistrer une temperature
int heuresM; //heure à laquelle sonnera la minuterie
int minutesM; //mintute à laquelle sonnera la minuterie
int minutes; // minutes actuelles
int heures; //heure actuelle
int boutonAppel=13; //bouton pour activer la minuterie
int boutonMinutes=2; // réglage des minutes de la minuterie
int boutonHeures=3; //réglage des heures de la minuterie
int allumage=0; //1 ou 0 si minuterie est activée ou pas
unsigned long Depart;
void setup() {
flag=0; // minuterie désactivée
Serial.begin(9600);
pinMode(boutonMinutes, INPUT_PULLUP); // boutons poussoirs
pinMode(boutonAppel, INPUT_PULLUP);
pinMode(boutonHeures, INPUT_PULLUP);
pinMode (boutonTemp, INPUT_PULLUP);
minutes=03 ; //réglage des minutes et de l'heure avant de téléverser
heures=18;
lcd.begin(16, 2);
lcd.setCursor(3, 0);
lcd.print(":"); // deux points pour séparer heures et minutes (ex: 01:45)
uint8_t chk = DHT11.read(DHT11PIN);
lcd.setCursor(7, 0);
lcd.print(DHT11.temperature, DEC);
lcd.setCursor(9, 0);
lcd.print("C"); //prise de temperature et d'humidité et affichage sur LCD
lcd.setCursor(11, 0);
lcd.print(DHT11.humidity, DEC);
lcd.print("%");
Depart=millis();
}
void loop() {
if((millis()-Depart)>=60000) { //toutes les minutes
minutes=minutes+1; //minutes+1
uint8_t chk = DHT11.read(DHT11PIN);
lcd.setCursor(7, 0);
lcd.print(DHT11.temperature, DEC);
lcd.setCursor(9, 0);
lcd.print("C"); //prise de temperature et humidité toutes les minutes + affichage
lcd.setCursor(11, 0);
lcd.print(DHT11.humidity, DEC);
lcd.print("%");
Depart=millis(); //etc
}
if (minutes <=9) {
lcd.setCursor(4, 0);
lcd.print("0"); //affichage des minutes propre (14:08 et pas 14:8)
lcd.setCursor(5, 0);
lcd.print(minutes);
}
else {
lcd.setCursor(4,0);
lcd.print(minutes);
}
if (heures <=9) {
lcd.setCursor(1, 0);
lcd.print("0"); //affichage des heures plus propre
lcd.setCursor(2, 0);
lcd.print(heures);
}
else {
lcd.setCursor(1,0);
lcd.print(heures);
}
if (minutes ==60) { //si 60 minutes se sont écoulées
minutes=0; // minutes reviennent à 0
heures=heures+1; //les heures augmentent de 1
}
if (heures==24){ //pareil pour les heures
heures=0;
}
if (minutesM ==60) { //pareil que pour l'heure normale même chose pour tout
minutesM=0;
}
if (heuresM==24){
heuresM=0;
}
if (minutesM <=9) {
lcd.setCursor(3, 1);
lcd.print("0");
lcd.setCursor(4, 1);
lcd.print(minutesM);
}
else {
lcd.setCursor(3,1);
lcd.print(minutesM);
}
if (heuresM <=9) {
lcd.setCursor(0, 1);
lcd.print("0");
lcd.setCursor(1, 1);
lcd.print(heuresM);
}
else {
lcd.setCursor(0,1);
lcd.print(heuresM);
}
if (digitalRead(boutonMinutes)==LOW) {
if (minutesM<1000) minutesM++; //augmente les minutes de la minuterie à chaque appuie de bouton puis relaché
while((digitalRead(boutonMinutes)==LOW));
}
if (digitalRead(boutonAppel) ==0){
allumage=1; //activation de la minuterie
}
if (digitalRead(boutonHeures) ==LOW){
if (heuresM<32767) heuresM++; //heures +1
while((digitalRead(boutonHeures)==LOW));
}
if (allumage==1) { //si la minuterie est activée
if (heuresM==heures) { // si l'heure pour la minuterie est égale à celle de l'heure actuelle
if (minutesM==minutes) { // si les minutes pour la minuterie sont égales à celles des minutes actuelles
allumage=0; //minuterie désactivée
digitalWrite(4, HIGH);
delay(300);
digitalWrite(4, LOW); //sonnerie avec un buzzer
delay(300);
digitalWrite(4, HIGH);
delay(300);
digitalWrite(4, LOW);
delay(300);
digitalWrite(4, HIGH);
delay(300);
digitalWrite(4, LOW);
delay(300);
digitalWrite(4, HIGH);
delay(300);
digitalWrite(4, LOW);
delay(300);
allumage==0;
}
}
}
if (digitalRead(boutonTemp) ==0) {
tempEnregistree=DHT11.temperature;
flag= !flag; //enregistrement des tempéraures
if (flag==1) {
DHT11.temperature=tempEnregistree;
lcd.setCursor(7,1);
lcd.print("+");
}
if (flag==0) {
lcd.setCursor(7,1); //ne plus afficher la différence si la personne rappuie sur le bouton
lcd.print(" ");
}
while((digitalRead(boutonTemp) ==0));
}
if (flag==1) {
actualAugmentation=(DHT11.temperature)-tempEnregistree;
lcd.setCursor(8,1); //affichage de la température actuelle moins la température enregistrée
lcd.print(actualAugmentation);
}
}




