HD44780 module avec l'écran LCD 1602, 2X16 caractères + i2c aucun afichage

hello
en résumé:
ton scan dit : 0x27.
toi tu dis : 0x3F et que l'exemple "hello World" fonctionne.

un peu surpris quand meme!!! >:(

donc comme je suis curieux et que j'aime bien comprendre,
je suis allé voir dans l'exemple "Hello World" .........................

et là que vois je ? :o

#include <Wire.h>
#include <LiquidCrystal_I2C.h>

// Set the LCD address to 0x27 for a 16 chars and 2 line display
LiquidCrystal_I2C lcd(0x27, 16, 2);

void setup()
{
// initialize the LCD
lcd.begin();

eh oui, dans l'exemple de la librairie, l'écran est adressé en 0x27 :slight_smile:

edit: lire les tutos à l'attention des nouveaux, notamment pour poster correctement ton code
que je n'ai pas lu car pas posté dans les règles
https://forum.arduino.cc/index.php?topic=315372.0

dfgh:
hello
en résumé:
ton scan dit : 0x27.
toi tu dis : 0x3F et que l'exemple "hello World" fonctionne.

un peu surpris quand meme!!! >:(

donc comme je suis curieux et que j'aime bien comprendre,
je suis allé voir dans l'exemple "Hello World" .........................

et là que vois je ? :o

eh oui, dans l'exemple de la librairie, l'écran est adressé en 0x27 :slight_smile:

edit: lire les tutos à l'attention des nouveaux, notamment pour poster correctement ton code
que je n'ai pas lu car pas posté dans les règles
Faire un Nouveau Sujet ou le corriger avec les Balises... - Français - Arduino Forum

quiproquo car
mon adesse est 0x27 elle fonctionne avec des programme comme hello word
le programme ne fonctionne pas chaez moi peu un porte l'adresse

merci des conseil

bon déjà ton code ne compile pas chez moi je sais pas si quelqu' un d'autre à essayer mais apparemment il

est plein de faute du genre un mélange de français et d'italien ou d’espagnol je ne sais pas bien,puis on ne

mais pas d'accent dans le programme il ne sais pas les lire, corrige ton code pour que ça soit plus claire et

peut être que quelqu'un trouvera ton problème moi je pense que c'est la bibliothèque qu'il faut changer et

il faudrait la reprendre là ou tu as pris ton code.

sketch_feb24d:30: error: stray '\303' in program

Le code n'est pas entre balises.

https://forum.arduino.cc/index.php?topic=315372.0

oui moi aussi j'avais cette erreur mais pas que il y en avais une aussi au niveau lcd ,puis de truc pas déclarer dans le scop du au changement de langue je pense c'est ce que j'ai compris a mon humble niveau.

Jeremy:
bon déjà ton code ne compile pas chez moi je sais pas si quelqu' un d'autre à essayer mais apparemment il

est plein de faute du genre un mélange de français et d'italien ou d’espagnol je ne sais pas bien,puis on ne

mais pas d'accent dans le programme il ne sais pas les lire, corrige ton code pour que ça soit plus claire et

peut être que quelqu'un trouvera ton problème moi je pense que c'est la bibliothèque qu'il faut changer et

il faudrait la reprendre là ou tu as pris ton code.

quelqu'un veut le faire
ou quelqun peut me montrer comment le corriger
je n'y connais que dal pour l'instan
le code est dorigine seule les description son traduite
elle son en italien a l'origine

int Total seconde = 0;
ne peut pas compiler; (un blanc de trop)
J'écrirais uint16_t totalSecondes = 0;

Il doit y avoir plein d'horreurs comme ça:

Tant que votre programme ne peut pas compiler, il vous faut le corriger (en recopiant si besoin les messages d'erreurs, ou en essayant par soi même).

Pour savoir si ça c'est compilé, vous devriez soit :

a) faire attention
b) modifier une ligne qui s'affiche du genre

  lcd.print("Hockey sur table");

deviendrait:

  lcd.print("Hockey V1.1"); delay(10000);

(vous avez 10 secondes pour la voir)
(les deux conditions ne sont pas exclusives)

Faites attention avec le LCD : il ne connaît pas les caractères spécifiques au français (et mettra des choses pas jolies à la place)

hello
bon je viens de tester ton code, il fonctionne
je suis allé le récupérer sur la source.

chez moi le lcd est en 0x27
si ton scan te dit une autre adresse, mets la à la place de 0x27

c'est la 4ème ligne du code
LiquidCrystal_I2C lcd(0x27, 16, 2);

/*
  Air Hockey da tavolo

  Questo progetto è di libero utilizzo, basta che venga citato il programmat_Heures.
  Programmat_Heures Firmware: Tartaglia daniele
  sito: www.labdomotic.com
  email: edstarink@fastwebnet.it
  Youtube channel: https://www.youtube.com/channel/UCwMjr5HocO6S363x_-jzsmA
  Facebook: https://www.facebook.com/daniele.tartaglia.73?ref=bookmarks
*/





#include <Wire.h>
#include <LiquidCrystal_I2C.h>
#include <EEPROM.h>
LiquidCrystal_I2C lcd(0x27, 16, 2); // se non dovesse funzionare il display utilizza questo indirizzo:(0x27) al posto di (0x3F)
unsigned long previousMillis1 = 0;
unsigned long interval1 = 1000;  //intervallo in (millisecondsi)
unsigned int counter = 0;


int timeRST = 0;
int _Heures = 45;
int _Minutes = 5;
int _Secondes = 6;



int buzzer = 49;
int Relais = 48;
int _Total_secondes = 0;

int reset = 0;
int start = A6;


int Score_1 = 0;
int Score_2 = 0;

int Joueur_1 = 2;
int Joueur_2 = 3;
int BP_Start = 5;

void setup() {
  // put your setup code here, to run once:

  lcd.begin();

  // PORTA A PULL UP I PIN DIGITALI IN INGRESSO
  pinMode(Joueur_1, INPUT_PULLUP);
  pinMode(Joueur_2, INPUT_PULLUP);
  pinMode(BP_Start, INPUT_PULLUP);

  // ASSEGNA I PIN OUT DEI RELè E DEL BUZZER
  pinMode(Relais, OUTPUT);
  pinMode (buzzer, OUTPUT);

  // PORTA FORZATAMENTE A LIVELLO ALTO IL RELè (PER ACCENDERLO DOVRAI PORTARLO A LIVELLO BASSO "LOW")
  digitalWrite(Relais, HIGH);


  // Introduzione prima della partenza
  lcd.setCursor(0, 0);
  lcd.print("Hockey sur table");
  lcd.setCursor(0, 1);
  lcd.print("par D. Tartaglia");
  delay(2000);
  lcd.clear();

  lcd.setCursor(0, 0);
  lcd.print("P1= ");
  lcd.setCursor(4, 0);
  lcd.print(Score_1);
  lcd.setCursor(7, 0);
  lcd.print("/  P2= ");
  lcd.setCursor(14, 0);
  lcd.print(Score_2);
  lcd.setCursor(0, 1);
  lcd.print("Appuyez sur START");

}

void loop() {

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

    PREMI START E INIZIA IL GIOCO

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

  int START = digitalRead(BP_Start);
  if (START == LOW) {
    _Total_secondes = 29;
    Score_1 = 0;
    Score_2 = 0;
  }
  while (_Total_secondes > 0)
  {

    digitalWrite(Relais, LOW); // ACCENDI IL Relais' APPENA COMINCIA IL GIOCO

    //---------------------------------------------------------


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

        CONTAT_Heures PER RESETTARE IL GIOCO PRIMA DELLO SCADERE DEL TEMPO - MANTENIMENTO TEMPO 3 SEC CIRCA

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

    int START = digitalRead(BP_Start);
    if (START == LOW) {
      timeRST++;
      delay(10);
    }
    else
    {
      timeRST = 0;
    }


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

        TEMPO MANTENIMENTO DEI 3 _Secondes RAGGIUNTO...RESETTA IL GIOCO

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

    if (timeRST >= 50) {
      _Total_secondes = 0;
      lcd.clear();

      lcd.print(" remise a zero ");
      digitalWrite(Relais, HIGH);
      timeRST = 0;
      delay(1000);
      lcd.clear();
      delay(500);
      lcd.setCursor(0, 0);
      lcd.print("P1= ");
      lcd.setCursor(4, 0);
      lcd.print(Score_1);
      lcd.setCursor(7, 0);
      lcd.print("/  P2= ");
      lcd.setCursor(14, 0);
      lcd.print(Score_2);
      lcd.setCursor(0, 1);
      lcd.print("Appuyez sur START");
      //lcd.print("Premi START");
      delay(200);
      break;
    }


    //---------------------------------------------------------

    if (millis() - previousMillis1 > interval1) {
      previousMillis1 = millis(); //save the last time I blinked the LED

      _Total_secondes--;

      _Heures = ((_Total_secondes / 60) / 60);  // converte i _Secondes totali in _Heures
      _Minutes = (_Total_secondes / 60) % 60; // converte i _Secondes totali in _Minutes
      _Secondes = _Total_secondes % 60;       // converte i _Secondes totali in _Secondes



      lcd.setCursor(0, 1);
      lcd.print("Tempo res: ");

      if (_Minutes < 10) lcd.print("0");
      lcd.print(_Minutes);

      lcd.print(":");
      if (_Secondes < 10) lcd.print("0");
      lcd.print(_Secondes);


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

          TEMPO GIOCO FINITO, RESETTA GIOCO

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

      if (_Total_secondes == 0)
      {
        digitalWrite(Relais, HIGH);
        break;
      }

    }


    lcd.setCursor(0, 0);
    lcd.print("P1= ");
    lcd.setCursor(4, 0);
    lcd.print(Score_1);
    lcd.setCursor(7, 0);
    lcd.print("/  P2= ");
    lcd.setCursor(14, 0);
    lcd.print(Score_2);


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

      PULSANTE INCREMENTO +1 DEL CONTAT_Heures GIOCAT_Heures 1

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

    int compteur_temps_1 = digitalRead(Joueur_1);
    if (compteur_temps_1 == LOW) {
      delay(120);
      Score_1++;
      tone(buzzer, 1000); // Send 1KHz sound signal...
      delay(200);
      noTone(buzzer);
    }

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

      PULSANTE INCREMENTO +1 DEL CONTAT_Heures GIOCAT_Heures 2

    *************************************************************************************
    */
    int compteur_temps_2 = digitalRead(Joueur_2);
    if (compteur_temps_2 == LOW) {
      delay(120);
      Score_2++;
      tone(buzzer, 1000); // Send 1KHz sound signal...
      delay(200);
      noTone(buzzer);

    }
  }
}

lcd.begin();

à la ligne 50 mais afficher comme une erreur

es-que je dois compléter entre les parenthèse si oui quoi ?

voici la librairie que j'utilise

LiquidCrystal_I2C.zip (7.95 KB)

merci de l'aide mais se problème persiste toujours

Quel problème?
Fonctionne-t-il avec l'original? (l'italien n'a pas de caractères diacritiques).

je viens de réessayer avec le code que dfgh a poster et chez moi il ne compiler pas non plus a cause de "lcd.begin" je pense que c'est a cause de la bibliothèque que vous avez ce problème ça na doit pas être la bonne
dfgh la fourni aussi,recopier le code fourni et modifier juste cette ligne "lcd.begin()" par "lcd.init()"et je pense que ça devrait fonctionner c'est ce que je viens de faire.

dfgh ldbs266 et Jeremy : vous travaillez probablement avec 3 librairies différentes.

En matière de librairie LCD I2C c'est la jungle.

recopier le code fourni et modifier juste cette ligne "lcd.begin()" par "lcd.init()

Toutes les librairies ne possèdent pas cette méthode init().

CELLE-CI possède une méthode init() mais sa méthode begin() réclame des paramètres.

CELLE-CI ne possède pas de méthode init() et sa méthode begin() ne réclame pas de paramètres.
Elle conviendrait certainement.

Celle de dfgh aussi mais il serait bien de connaître son origine, pour les mises à jour.

Oui tout a fait d'accord c'était justement pour qu'il essaye pour voir ci le code compilé où pas pour faire avancer le schmilblink,le chmilblik ...,je sais que c'est la jungle avec les libraires j'en ai fait l'expérience au début j'ai du en changer au moins trois ou quatre fois avant de trouver la bonne.

Le problème aussi c'est qu'il n'a pas donné plus d'info sur son lcd,une photo ou d'où il provient etc,j'en est eu un où le module i2c a dégagé pourquoi je n'en sais rien j'ai du le desouder et je l'ai brancher normalement l'ecran fonctionné et j'en ai racheté un autre ,il refonctionne en i2c du coup.

Ce qui serait pas mal : que ldbs266 donne le lien de la librairie qu'il utilise.

Oui aussi +1 hbachetti

dsl de ne pas avoir peu répondre plus tôt j'ai donc mis de cotée se projet et je les donc abandonner

et pour mes source j'ai choisis de respecter le règlement qui dit de ne pas faire de pub pour d'autre site webb