Salut à toutes et à tous !
J'ai découvert Arduino par hasard il y a environ 2 mois. Je suis en train d'installer un insert bouilleur chez moi (c'est un insert à bois qui chauffe de l'eau qui est stockée dans un ballon tampon puis envoyée à la demande dans des radiateurs en gros).
Pour pouvoir contrôler le plus finement possible mon installation, j'ai besoin de pouvoir mesurer la température à 6 endroits de mon circuit d'eau chaude. Certaines personnes de l'excellent forum FuturaSciences m'ont dit que l'Arduino pouvait être une solution efficace à moindre frais.
Après quelques petites recherches, j'ai commandé un kit de débutant, un écran LCD keypad shield et 3 sondes ds18b20 pour me lancer. J'ai commencé par des manips toutes simples : allumer et éteindre des leds, faire un feu tricolore, gérer un afficheur 7 segments, afficher des messages sur l'écran LCD, faire une horloge, etc.
Et depuis peu, je me suis lancé dans l'utilisation de ses fameuses sondes tout d'abord avec l'affichage sur l'écran de l'ordinateur de 1 puis 2 sondes puis sur l'écran LCD. Et là, je commence à bloquer un peu...
Voilà mon code actuel :
#include <LiquidCrystal.h>
#include <OneWire.h>
#include <DallasTemperature.h>
static const int PIN_LCD_BACKLIGHT = 10;
// select the pins used on the LCD panel
LiquidCrystal lcd(8, 9, 4, 5, 6, 7);
// control LCD backlight
void lcd_backlight_set( bool on )
{
digitalWrite( PIN_LCD_BACKLIGHT, 0 );
pinMode( PIN_LCD_BACKLIGHT, on ? INPUT : OUTPUT );
}
// Control LED on pin 13
void led_set( bool on )
{
pinMode( 13, OUTPUT );
digitalWrite( 13, on );
}
OneWire oneWire1(2);
DallasTemperature sensors(&oneWire1);
void setup()
{
// init serial port
Serial.begin(9600);
Serial.println("# Temp Probe");
// init lcd
lcd.begin(16, 2); // start the library
lcd.setCursor(0,0);
lcd.print("Sondes de");
lcd.setCursor(0,1);
lcd.print("temperatures");
delay (3000);
sensors.begin();
lcd.clear ();
}
void loop()
{
sensors.requestTemperatures(); // Send the command to get temperatures
for( int idx=0; idx<2; idx++ )
{
lcd.setCursor((idx&2)*2,(idx&1));
lcd.setCursor(0,0);
lcd.print("Sonde 1 =");
lcd.setCursor(0,1);
lcd.print("Sonde 2 =");
lcd.setCursor(9,0);
float temp = sensors.getTempCByIndex(idx);
lcd.print( temp );
lcd.print((char)223); // caractère °
lcd.print("C");
Serial.print( temp );
Serial.print("\t");
}
Serial.println();
}
Grâce à cela, j'obtiens, après l'affichage de mon message de bienvenue ("Sondes de température") :
Sonde 1 = 19,69°C
Sonde 2 =
J'ai réussi à traficoter un peu le code pour afficher ce que je viens de vous décrire. Au départ, j'avais les 3 températures sur l'écran du type :
19.56 23.65
21.64
Les objectifs seraient les suivants (oui, il y en a beaucoup) :
1 - J'aimerais afficher si possible seulement 1 chiffre après la virgule.
2 - J'aimerais pouvoir afficher juste 2 températures sur l'écran avec le capteur correspondant
exemple :
radiateurs = 52,4°C
ballon = 83,2°C
3 - Et comme, je vais avoir au moins 6 sondes, pouvoir basculer d'un capteur à l'autre en appuyant sur les boutons de l'écran (exemple : le bouton gauche affiche la température de 2 capteurs, le bouton droite affiche la température de 2 autres capteurs, etc.).
4 - Et dernière chose qui est toute simple que je n'ai pas encore recherché, éteindre/allumer le rétroéclairage en appuyant sur un autre bouton.
Voilà !
Merci par avance pour votre aide.
A plus