Arduino Uno - Shield LCD

Bonjour à tous,

Je suis un nouvel utilisateur Arduino (depuis vendredi), donc hyper débutant (même si j'ai fait un peu de C sur MPLAB pour des µC PIC18Fxxx, il y a maintenant plusieurs années..).

Je dois utiliser un arduino uno pour le travail dans le cadre d'une conception de banc de test..

J'ai un problème sur lequel je suis bloqué depuis vendredi donc, avec un shield LCD.

Je suis allé sur la page du revendeur du shield en question pour copier le test code histoire de comprendre comment ça marche.
Sauf que après avoir recopié le test code (à la main car dispo qu'en PDF...) et vérifié de n'avoir fait aucune faute de frappe, je "verify/compile" et... ça marche pas..

Depuis vendredi j'ai cherché de partout sur le web sur tout les topic en lien avec ce shield, j'ai installé toutes les librairies qui pouvaient être utiles, les aient réinstallé manuellement au cas où etc.. mais rien n'y fait.. Du coup j'avoue ne plus trop savoir quoi faire..

Ci-dessous le lien du shield en question :

Ci-dessous mon code (copié depuis le guide en PDF du lien ci-dessus) :

#include <LiquidCrystal.h>


// initialise l'écran avec les bonnes broches

LiquidCrystal lcd(8,9,4,5,6,7);

// define some values used by the panel and buttons 
int lcd_key =     0;
int adc_key_in =  0; 
#define btnRIGHT  0
#define btnUP     1
#define btnDOWN   2
#define btnLEFT   3
#define btnSELECT 4
#define btnNONE   5 

// read the buttons
int read_LCD_buttons()
{
  adc_key_in = analogRead(0);  // read the value from the sensor
  // my buttons when read are centered at these values: 0, 144, 329, 504, 741
  
  // we add approx 50 to those values and check to see if we are close
  if(adc_key_in > 1000) return btnNONE; // We make this the 1st option for 
                                        // speed reasons since it will be the most likely result 
  // For V1.1 use this threshold
  if (adc_key_in < 50)   return btnRIGHT;
  if (adc_key_in < 250)  return btnUP; 
  if (adc_key_in < 450)  return btnDOWN;
  if (adc_key_in < 650)  return btnLEFT;
  if (adc_key_in < 850)  return btnSELECT; 

  // For V1.0 comment the other threshold and use the one below: 
  /*
  if (adc_key_in < 50)   return btnRIGHT;
  if (adc_key_in < 195)  return btnUP; 
  if (adc_key_in < 380)  return btnDOWN;
  if (adc_key_in < 555)  return btnLEFT;
  if (adc_key_in < 790)  return btnSELECT;
   */

   return btnNONE; // when all others fail, return this...
}

void setup() 
{
  lcd.begin(16, 2);              // start the library 
  lcd.setCursor(0,0);
  lcd.print("Push the buttons"); // print this message
}

void loop() 
{
  lcd.setCursor(9,1);            // move cursor to second line "1" and 9 space over
  lcd.print(millis()/1000);      // display second elapsed since power-up 

  lcd.setCursor(0,1);            // move the begining of the second line 
  lcd.key = read_LCD_buttons();  // read the buttons
  

  switch (lcd_key)  // depending on wich button was pushed, we perforn an action
  {
    case btnRIGHT: 
      {
        lcd.print("RIGHT ");
        break;
      }
    case btnLEFT: 
      {
        lcd.print("LEFT ");
        break;
      }
    case btnUP: 
      {
        lcd.print("UP ");
        break;
      }
    case btnDOWN: 
      {
        lcd.print("DOWN ");
        break;
      }
    case btnSELECT: 
      {
        lcd.print("SELECT ");
        break;
      }
    case btnNONE: 
      {
        lcd.print("NONE ");
        break;
      }
  }
}

Et l'erreur en question :

C:\Users\OnPC 2\Documents\Arduino\sketch_dec06a\sketch_dec06a.ino: In function 'void loop()':

sketch_dec06a:59:7: error: 'class LiquidCrystal' has no member named 'key'

lcd.key = read_LCD_buttons(); // read the buttons

^~~

exit status 1
'class LiquidCrystal' has no member named 'key'

Si quelqu'un a une idée, merci d'avance !

Bonjour

regardez bien le code proposé , on n'y trouve pas de lcd.key mais lcd_key
exemple :

lcd_key=read_LCD_buttons();

La notation lcd.key renvoie à une fonction qui n'existe pas, ce que signale le compilateur et l'accent circonflexe est plutôt bien placé pour pointer l'erreur !!
fleche.jpg

fleche.jpg

Bonjour

Ah oui en effet.. Milles pardon.. et mille merci en même temps pour ces explications!!

Plutôt cool cette fonction de pointage du débugueur !! Merci pour l'info!!

J'en profite du coup pour vous si vous connaissez des genres de tutos qui explique un peu toutes ces différences ?

Comme "lcd.key" signifie "renvoi à une fonction" et "lcd_key" signifie "quelque chose d'autre.." etc ?

En gros un doc d'initiation à l'arduino ?

Merci encore!