[RESOLU] keypad et tableau

bonjour a tous
pas tres a l'aise avec les tableaux, je pose mon probleme
j'ai un keypad et le bout de code qui marche
mais je souhaite afficher plus
lorsque je tape sur mes touches ex: 1 ou 2 etc j'ai bien la variable a 1 chiffre
je souhaite aller a ex: 23 ou 59 donc une variable a 2 chiffres
avec validation par * ou # pour saisir la variable a 2 chiffres suivante
il s'agit de heure minute seconde

j'utilise un keypad avec pcf8574 sur i2c

une aide me serait agreable
merci

#include <Keypad_I2C.h>
#include <Keypad.h>
#include <Wire.h>
#define I2CADDR 0x25

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','#'}
};
// Digitran keypad, bit numbers of PCF8574 i/o port
byte rowPins[ROWS] = {0, 1, 2, 3}; //connect to the row pinouts of the keypad
byte colPins[COLS] = {4, 5, 6}; //connect to the column pinouts of the keypad

Keypad_I2C kpd( makeKeymap(keys), rowPins, colPins, ROWS, COLS, I2CADDR, PCF8574 );

void setup(){
Wire.begin( );
kpd.begin( makeKeymap(keys) );
Serial.begin(9600);
Serial.println( "start" );
}
void loop(){

char key = kpd.getKey();

if (key){
Serial.println(key);
}
}

Là tu récupères une touche à la fois.

Pour les assembler, avec # pour valider, * pour corriger, etc il faut compléter le code avec une machine à états.

On enregistre au fur et à mesure les touches appuyées dans un tableau ou une chaîne.

Selon la nouvelle touche appuyée, on teste ce que l'on doit faire : valider les heures, corriger , valider les minutes,la date,etc.

d'ou ma question
car en faisant le tour j'ai trouve des exemples du style entrer de mot de passe
mais toujours en utilisation de la bibliotheque keypad que je ne suis pas arrivé a transformer pour keypad_i2c
d'ou mon ignorance
merci

Bonjour,

un exemple ici... à adapter, mais je pense que c'est ce que vous voulez faire!

merci fablath

apres un premier test et petite modif
cela a l'air d' etre bon
je vais inclure cela dans le reste du prog
cordialement

Bonjour,

J'essaie ce bout de code mais ça ne marche pas:

#include <Keypad_I2C.h>
#include <Keypad.h>
#include <Wire.h>
#define I2CADDR 0x25

const byte ROWS = 4; //four rows
const byte COLS = 4; //three columns

char keys[ROWS][COLS] = {

{'1','2','3','A'},
{'4','5','6','B'},
{'7','8','9','C'},
{'*','0','#','D'}
};
// Digitran keypad, bit numbers of PCF8574 i/o port
byte rowPins[ROWS] ={4,5,6,7} ; //connect to the row pinouts of the keypad
byte colPins[COLS] ={0,1,2,3}; //connect to the column pinouts of the keypad

Keypad_I2C kpd( makeKeymap(keys), rowPins, colPins, ROWS, COLS, I2CADDR, PCF8574 );

void setup(){
Wire.begin( );
kpd.begin( makeKeymap(keys) );
Serial.begin(9600);
Serial.println( "start" );
}
void loop(){

char key = kpd.getKey();

if (key){
Serial.println(key);
}
}

Est ce que voyez vous mes erreurs?

En plus plus tard j'aimerai récupérer les touches frappées dans une carte SD.

bjr
deja met ton fichier en utilisant </> code pour qu'il soit plus lisible au lieu de quote, je sais si certains me lisent , je faisait la meme faute il y a quelques jours
donc deja je pense que tu as inverse ROW et COL dans rowpins c'est 0,1,2,3 et colpins 4,5,6,7
et est tu sur de ton adresse 0x25