/****************************************************************************************************************************************
 * Projet Chronomètre et minuteur cyclique avec LCD 20X4 réalisé par:  Daniel Talbot Technicien                                         *
 * Pour Ez-Weekend-Project au Club Technique des Laurentides                                                                            *
 * Dans le cadre du programme C.I.P.A.D. (Cours d'initiation à la Programmation Arduino pour Débutant(e)s) gratuit et sans inscription. *
 * Copiez ce lien pour accéder à la vidéo concernant ce projet                                                                          *
 * https://www.youtube.com/watch?v=AWijKwh_13I                                                                                          *
 * ou celui-ci pour accéder à toutes les leçons déjà publiées...                                                                        *
 * https://www.youtube.com/playlist?list=PLoffRtP427acSg1FbpFuH_g5ptz-aovFN                                                             *
 *                                                                                                                                      *
 ****************************************************************************************************************************************/ 
 
#include <LiquidCrystal_I2C.h>

LiquidCrystal_I2C lcd1(0x25, 20, 4);
LiquidCrystal_I2C lcd2(0x26, 20, 4);
LiquidCrystal_I2C lcd3(0x27, 16, 2);

void setup() {
  // put your setup code here, to run once:
  lcd1.init(); lcd1.backlight();
  lcd2.init(); lcd2.backlight();
  lcd3.init(); lcd3.backlight();
  /*
    lcd1.setCursor(8,0);lcd1.print("LCD1");
    lcd2.setCursor(8,0);lcd2.print("LCD2");
    lcd3.setCursor(6,0);lcd3.print("LCD3");
  */

  lcdPrintCenter("LCD 1", 1, 0);
  lcdPrintCenter("LCD 2", 2, 0);
  lcdPrintCenter("LCD 3", 3, 0);

}

void loop() {
  // put your main code here, to run repeatedly:

}

//fonction lcdPrintCenter(1er paramètre, 2e paramètre, 3e paramètre).
//fonction lcdPrintCenter(texte à afficher, choix de l'écran lcd, No de la ligne).
void lcdPrintCenter(String texte, int lcd, int ligne) {
  //int wide = 20; // Défini le nombre de colonne par ligne.
  int len = texte.length(); // Défini la longeur de la variable "texte"
  switch (lcd) { // Commute vers l'afficheur correspondant à la variable "lcd"
    case 1: // Sélectionne lcd1.
      lcd1.setCursor((20 - len) / 2, ligne);  // positionne le curseur au centre de la ligne choisie et soustrait la longeur du text à afficher
      lcd1.print(texte);  // Affiche le texte demandé sur lcd1.
      break; // Quitte la case 1

    case 2:  // Sélectionne lcd2.
      lcd2.setCursor((20 - len) / 2, ligne);  // positionne le curseur au centre de la ligne choisie et soustrait la longeur du text à afficher
      lcd2.print(texte); // Affiche le texte demandé sur lcd2.
      break; // Quitte la case 2

    case 3: // Sélectionne lcd3.
      lcd3.setCursor((16 - len) / 2, ligne);  // positionne le curseur au centre de la ligne choisie et soustrait la longeur du text à afficher
      lcd3.print(texte); // Affiche le texte demandé sur lcd3.
      break; // Quitte la case 3

  }  // Quitte la fonction switch.

}  // Quitte la fonction lcdPrintCenter(texte à afficher, choix de l'écran lcd, No de la ligne).