Super_Cinci:
N'hésite pas à nous mettre ton code, il y a sûrement quelques optimisations qui te rendraient bien service...
Yes, le voilà, j'ai fait une grosse pause pour cause de fêtes diverses, mais courant de la semaine prochaine je m'y remet !
#include <LiquidCrystal.h>
#include <Wire.h>
#include "RTClib.h"
RTC_DS1307 RTC;
LiquidCrystal lcd(12, 11, 7, 6, 5, 4);
int contrast = 3; // reglage du contraste du LCD
int bouton = 2; // bouton de selection
int select = 0; // fonction à incrementer pour la selection du menu
const int sensorPin = A0;
const float baselineTemp = 20.0;
void setup()
{
pinMode(contrast, OUTPUT);
pinMode(bouton, INPUT);
attachInterrupt(0, selection, FALLING);
Serial.begin(57600); // Communication serie
Wire.begin();
RTC.begin();
if (! RTC.isrunning())
{
Serial.println("RTC is NOT running!");
// following line sets the RTC to the date & time this sketch was compiled
//RTC.adjust(DateTime(__DATE__, __TIME__));
}
lcd.begin(16, 2);
lcd.setCursor(5,0);
lcd.print("Bonjour");
delay(500);
lcd.clear();
}
void loop()
{
DateTime now = RTC.now();
int sensorVal = analogRead(sensorPin);
//Serial.print("sensor Value: ");
//Serial.print(sensorVal);
float voltage = (sensorVal/1024.0) * 5.0;
float temperature = (voltage - .5) * 100;
//Serial.println(select);
//delay(300);
switch(select)
{
case 0:
lcd.setCursor (0,0);
lcd.print("Mode Selection ");
lcd.setCursor(0,1);
lcd.print("Heure : ");
lcd.print(now.hour(), DEC);
lcd.print('h');
lcd.print(now.minute(), DEC);
break;
case 1:
lcd.setCursor(0,0);
lcd.print("Temperature ");
lcd.setCursor(0,1);
lcd.print(temperature);
lcd.setCursor(5,1);
lcd.print(" ");
delay(300);
break;
case 2:
lcd.setCursor(0,0);
lcd.print("Pression ");
lcd.setCursor(0,1);
lcd.print(" ");
break;
default: // revient au menu racine
select=0;
lcd.clear();
break;
}
}
void selection()
{
select++;
Serial.print(select);
delay(20); // empêche le rebond
}
Y a encore pas mal de chose qui vont pas, notamment le rafraîchissement de la température, je ne sais pas pourquoi, mais ça ne réagis pas du tout comme l'heure...
Si je faisais une fonction température du style :
void temperature()
{
sensorVal = analogRead(sensorPin);
float voltage = (sensorVal/1024.0) * 5.0;
float temperature = (voltage - .5) * 100;
}
Puis que je demande a mon LCD d'afficher ça :.
case 1:
lcd.setCursor(0,0);
lcd.print("Temperature ");
lcd.setCursor(0,1);
lcd.print(temperature());
lcd.setCursor(5,1);
lcd.print(" ");
break;
est-ce que ça fonctionnerais ?