Clavier 12 touches arduino

Bonjour,

Voila, je possède ce clavier 12 touches Keypad - 12 Button - COM-14662 - SparkFun Electronics mais je ne sais pas comment tester si il fonctionne. J'ai également un écran bus i2c 16x2.

J'aimerai créer un petit programme pour afficher sur l'écran les chiffres que je tape sur le clavier.

J'ai fais de nombreuses recherches infructueuses, c'est pourquoi je demande votre aide.

Merci

voir là
installer la lib si pas déjà fait et voir l'exemple "MultiKey"
http://playground.arduino.cc/code/keypad

J'ai fais un code a l'aide du programme MultiKey de la librairie et de mon précédent programme pour faire fonctionner un écran i2c

Voila ce que ça donne :

// include the library code:
#include <Wire.h>
#include <Adafruit_MCP23017.h>
#include <Adafruit_RGBLCDShield.h>


Adafruit_RGBLCDShield lcd = Adafruit_RGBLCDShield();

// Change Backlight color
#define WHITE 0x7

//Keypad

#include <Keypad.h>

const byte ROWS = 4; //four rows
const byte COLS = 3; //three columns
char keys[ROWS][COLS] = {
{'1','2','3'},
{'4','5','6'},
{'7','8','9'},
{'*','0','#'}
};
byte rowPins[ROWS] = {5, 4, 3, 2}; //connect to the row pinouts of the kpd
byte colPins[COLS] = {8, 7, 6}; //connect to the column pinouts of the kpd

Keypad kpd = Keypad( makeKeymap(keys), rowPins, colPins, ROWS, COLS );

unsigned long loopCount;
unsigned long startTime;
String msg;

//Keypad end



void setup() {

  // Debugging output
  Serial.begin(9600);
  
  // set up the LCD's number of columns and rows: 
  lcd.begin(16, 2);

  //Keypad

    loopCount = 0;
    startTime = millis();
    msg = "";
    
  //Keypad end


  // Print a message to the LCD. We track how long it takes since
  // this library has been optimized a bit and we're proud of it :)
  lcd.print("    Tirelire");
  lcd.setCursor(0, 1);
  lcd.print ("   automatise");
}

uint8_t i=0;

void loop() {
    loopCount++;
    if ( (millis()-startTime)>5000 ) {
        Serial.print("Average loops per second = ");
        Serial.println(loopCount/5);
        startTime = millis();
        loopCount = 0;
    }

    // Fills kpd.key[ ] array with up-to 10 active keys.
    // Returns true if there are ANY active keys.
    if (kpd.getKeys())
    {
        for (int i=0; i<LIST_MAX; i++)   // Scan the whole key list.
        {
            if ( kpd.key[i].stateChanged )   // Only find keys that have changed state.
            {
                switch (kpd.key[i].kstate) {  // Report active key state : IDLE, PRESSED, HOLD, or RELEASED
                    case PRESSED:
                    msg = " PRESSED.";
                break;
                    case HOLD:
                    msg = " HOLD.";
                break;
                    case RELEASED:
                    msg = " RELEASED.";
                break;
                    case IDLE:
                    msg = " IDLE.";
                }
                Serial.print("Key ");
                Serial.print(kpd.key[i].kchar);
                Serial.println(msg);
            }
        }
    }
}  // End loop

A part le message d'introduction, rien ne s'affiche sur l'écran quand j'appuie sur des touches. Par contre lorsque j'appuie sur des touches, la led TX de l'arduino mega clignote, ce qui veut dire, je pense, que mon arduino détecte bien le clavier.

Comment je pourrais faire en modifiant mon programme pour afficher simplement le chiffre sur lequel j'appuie ? Par exemple, lorsque j'appuie sur "1", "1" s'affiche sur l'écran.

Si j'arrive a faire ça, je pense que le reste ira tout seul.

Merci

la led TX qui clignote te signale que ton arduino envoi qqchose à ton PC.

ce sont ces lignes qui le font
Serial.print("Key ");
Serial.print(kpd.key*.kchar);*
Serial.println(msg);
televerse ton prog et dans l'onglet "outils", cliques sur "monitor"
dans la fenetre qui s'ouvre, en bas tu parametre à 9600.
la tu verras les messages qu'envoi l'arduino
je pense que si tu remplace la ligne Serial.print(Kpd.Key*.char);*
par Lcd.Print (Kpd.Key*.char);*
tu verras bien le chiffre appuyé

Merci, je vois les chiffres s'afficher. Comment puis-je intégrer un front montant pour qu'il ne m'affiche pas des chiffres en continus tant que je ne relâche pas la touche ?

Sinon tout me semble bien partit.

ou s'assurer que la touche a été relâchée avant de continuer

n'ayant pas ta platine, je ne peux pas tester
essaye de rajouter ça

        // Serial.print("Key ");
                //Serial.print(kpd.key[i].kchar);
                // Serial.println(msg);
                lcd.print(kpd.key[i].kchar);
                while ((kpd.key[i].kstate)!= RELEASED){
                kpd.getKeys();}

Mis à part le premier chiffre que je tape qui s'affiche deux fois, ça fonctionne, merci !