#ifndef STM32_I2C_LCD_H
#define STM32_I2C_LCD_H

/*****************************************************************/
            /*  Paramètres à modifier en fonction    *
             *  de votre carte STM32 et votre écran  */

/* Inclure les en-têtes nécessaires pour la bibliothèque HAL de la STM32 */
#include "stm32l1xx_hal.h"  // Remplacez par la bibliothèque HAL appropriée pour votre microcontrôleur

/* Définitions des paramètres du LCD */
#define I2C_ADDR 0x3f       // Adresse I2C du PCF8574 utilisé pour contrôler le LCD
#define LCD_COLS 16         // Nombre de colonnes du LCD
#define LCD_ROWS 2          // Nombre de lignes du LCD

/******************************************************************/

/* Définitions des broches du LCD */
#define RS_BIT   0      // Bit pour le Register Select
#define EN_BIT   2      // Bit pour le Enable
#define BL_BIT   3      // Bit pour le rétroéclairage (BackLight)
#define D4_BIT   4      // Bit pour le Data 4
#define D5_BIT   5      // Bit pour le Data 5
#define D6_BIT   6      // Bit pour le Data 6
#define D7_BIT   7      // Bit pour le Data 7

/* Déclarations des fonctions pour manipuler le LCD */
void lcd_init(I2C_HandleTypeDef *hi2c);             // Initialisation du LCD avec l'interface I2C
void lcd_write_string(char *str);                   // Écriture d'une chaîne de caractères sur le LCD
void lcd_set_cursor(uint8_t rowuint8_t column);   // Positionnement du curseur sur le LCD
void lcd_clear(void);                               // Effacement de l'affichage du LCD
void lcd_backlight(uint8_t state);                  // Contrôle de l'état du rétroéclairage

#endif  // STM32_I2C_LCD_H