#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd( 0x27, 16, 2 );
const uint8_t pin_potentiometre = A0;
const int16_t valeur_min = 50;
const int16_t valeur_max = 150;
void setup()
{
Serial.begin( 115200 );
lcd.init();
lcd.backlight();
lcd.print( F( "VALEUR :" ) );
}
void loop()
{
gestion_potentiometre();
}
void gestion_potentiometre()
{
// Variable pour mémoriser la valeur précédente
static int16_t valeur_precedente = INT16_MAX;
// Lire la valeur brute du potentiomètre, et la formater
int16_t valeur_actuelle = map( analogRead( pin_potentiometre ), 50, 1023 - 50, valeur_min, valeur_max );
valeur_actuelle = round( constrain( valeur_actuelle, valeur_min, valeur_max ) / 5.f ) * 5;
// Si la valeur a été modifiée
if ( valeur_precedente != valeur_actuelle )
{
// Afficher la modification dans le moniteur série
Serial.print( F( "La valeur a été modifiée : " ) );
Serial.print( valeur_precedente );
Serial.print( F( " -> " ) );
Serial.println( valeur_actuelle );
// Mémoriser la valeur actuelle pour la prochaine comparaison
valeur_precedente = valeur_actuelle;
// Afficher la valeur actuelle sur le LCD
char texte[7];
snprintf_P( texte, sizeof( texte ), PSTR( "%6hd" ), valeur_actuelle );
lcd.setCursor( 10, 0 );
lcd.print( texte );
}
}