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

LiquidCrystal_I2C lcd(0x3F, 16, 2); // si cela ne fonctionne pas, l'écran utilise cette adresse:(0x27) al posto di (0x3F)

0x27 ou 0x3F ? Pour le savoir : i2c-scanner

Ensuite il suffit de régler le potentiomètre de contraste sur le module i2c.

j'ai fait le scanner i2c et je trouve cette adresse (0x27) quand je change dans le code sa ne change rien les autre programme comme hello word eu fonctionne auriez vous un code similaire a disposition a celui que j'ai trouver pour ess

hbachetti: LiquidCrystal_I2C lcd(0x3F, 16, 2); // si cela ne fonctionne pas, l'écran utilise cette adresse:(0x27) al posto di (0x3F)

0x27 ou 0x3F ? Pour le savoir : i2c-scanner

Ensuite il suffit de régler le potentiomètre de contraste sur le module i2c.

j'ai fait le scanner i2c et je trouve cette adresse (0x27) quand je change dans le code sa ne change rien les autre programme comme hello word eu fonctionne auriez vous un code similaire a disposition a celui que j'ai trouver mais merci quand meme

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

include

// 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 :)

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 :)

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

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[u]î[/u]t pas les caract*ères sp[u]é[/u]cifiques au franç*ais (et mettra des choses pas jolies [u]à[/u] 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 
#include 
#include 
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 [u]dfgh[/u] 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 [u]dfgh[/u] 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