Library qui ne réagit pas comme prévue

Bonjour,

Je voudrais créé une bibliothèque pour m'exercer, mais je bloque car la partie LCD::LCD ne s'exécute pas :confused: (Test01 ne s'affiche pas) et comme j'arrive pas à trouver un moyen de debugger tous ça, je me retourne vers vous :slight_smile:

Au passage si vous avec des solutions de debbugage sans des serial.print je prends :smiley:

.ino

#include "LCD.h"

LCD CrystalLCD;

void setup(void)
{
    Serial.begin(9600);
    Serial.println("Test 02");
}

void loop(void)
{
   
}

.h

#ifndef LCD_h
#define LCD_h


class LCD
{
  public:
    LCD();
    void firstLine();
    void secondLine(float tempInCelsius);

  private:
};

#endif

.cpp

#include "LCD.h"
#include <LiquidCrystal_I2C.h>

LiquidCrystal_I2C lcd(0x27, 16, 2);

LCD::LCD()
{
    Serial.println("Test 01");
    lcd.backlight();
    lcd.setCursor(0, 0);
    lcd.print("Hello");
}

void LCD::secondLine(float tempInCelsius){
    lcd.clear();
    lcd.setCursor(0, 1);
    lcd.print("T = ");
    lcd.print(tempInCelsius);
}

Bonjour,

Ta class LCD est instanciée avant l'appel de setup(), donc au moment de l'appel du constructeur la liaison série n'est pas initialisée. Donc pas d'affichage.

Merde c'est vrais et c'est tellement... comme erreur en plus comme :slight_smile:

Merci :slight_smile:

Si tu veux voir ce qui se passe, tu peux mettre un constructeur vide et renommer ton constructeur en LCD:begin(). Comme ça, l'initialisation se déroulera dans le setup()

Si j'ai compris je supprime le contenue du LCD::LCD{}, mais je ne vois pas le lien avec le LCD::begin()

Le code qui est actuellement dans le constructeur tu le mets dans une méthode LCD:begin() que tu peux appeler où bon te semble dans ton code comme par exemple dans le setup() après avoir initialisé le lien série.