#include <LiquidCrystal_I2C.h> // la librairie pour contrôler l'afficheur
const uint8_t colonnes = 20; // le nombre de colonnes de l'afficheur
const uint8_t lignes = 4; // le nombre de lignes de l'afficheur
LiquidCrystal_I2C lcd( 0x27, colonnes, lignes ); // créer l'afficheur
void setup()
{
Serial.begin( 115200 );
// initialiser l'afficheur
lcd.init();
lcd.backlight();
}
void loop()
{
const uint32_t temps = millis(); // temps actuel
static const uint16_t interval_defilement = 100; // interval du défilement, en millisecondes
static uint32_t temporisation_defilement = 0; // temporisation pour le défilement du texte
// s'il est temps de déplacer le texte
if ( temporisation_defilement == 0 || temps - temporisation_defilement >= interval_defilement )
{
temporisation_defilement = temps; // réinitialiser pour la prochaine temporisation
static const char texte[] = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"; // texte à afficher
static const uint8_t longueur_texte = strlen( texte ); // longueur du texte
static const uint8_t position_x_max = colonnes - 1; // position horizontale maximale
static int8_t position_x_actuelle = -longueur_texte; // position horizontale du curseur
static bool debut = true;
//++position_x_actuelle;
Serial.print( F( "position_x_actuelle = " ) );
Serial.println( position_x_actuelle );
if ( position_x_actuelle >= -longueur_texte && position_x_actuelle <= 0 )
{
lcd.setCursor( 0, 0 );
//lcd.print( texte - position_x_actuelle );
for ( int i = -position_x_actuelle; i < max( longueur_texte, colonnes ); ++i )
{
lcd.print( texte[i] );// - position_x_actuelle );
}
}
/*else if ( position_x_actuelle <= colonnes - longueur_texte )
{
lcd.setCursor( position_x_actuelle - 1, 0 );
lcd.print( ' ' );
//lcd.print( texte );
for ( int i = 0; i < ( colonnes - position_x_actuelle ); ++i )
{
lcd.print( texte[i] );
}
}*/
else if ( position_x_actuelle <= colonnes + longueur_texte )
{
lcd.setCursor( position_x_actuelle - 1, 0 );
lcd.print( ' ' );
for ( int i = 0; i < ( colonnes - position_x_actuelle ); ++i )
{
lcd.print( texte[i] );
}
}
if ( ++position_x_actuelle == colonnes + 1 )
{
position_x_actuelle = -longueur_texte;
}
}
}