votre aide pour un code démo de clavier 4x4 en I2C svp

:cry: Bonjour je désespère de trouver un code démo de clavier 4x4 souple avec un module tout fait chinois ici .
J'ai trouvé pas mal de vidéo et site perso mais sur base du PCF8574 seul. Ou alors je trouve des démos sur des sites asiatiques mais alors là j'ai des problèmes de librairies qui ne conviennent pas ou de code inadapté à mon matériel.
Y a t-il quelqu'un qui pourrait me transmettre un code minimal avec éventuellement des librairies qui fonctionne pour faire des essais svp. je suis sur arduino UNO et souhaite réaliser un boitier avec LCD et clavier 4x4 en I2C. le LCD fonctionne déjà en I2C il est équipé de I2C d'origine.

Merci pour votre aide. ::slight_smile:

hello
vas voir ICI

Déjà quand je fais une recherche en suivant le code de votre lien pour obtenir la bibliothèque ça ne fonctionne pas.
via croquis "inclure bibliothèque" je ne trouve rien pour i2ckeypad.h ?
Un autre site ou tout fonctionne peut-être?

ici

J'ai téléchargé les librairies suivant votre lien puis à l'usage le code de votre lien est plein d'erreur. Je souhaite un code de base et des librairies opérationnelles qui fonctionnent pour apprendre et démarrer mon projet. Malheureusement rien ne fonctionne actuellement.

On ne peut pas le faire pour toi et il semble que tu ne trouveras rien de tout cuit sur le net. Poste le code que tu as choisi pour l'instant (entre balises CODE, la touche </> : au besoin lis les messages épinglés en haut du forum), en expliquant le plus précisément possible les problèmes que tu rencontres, et on pourra t'aider à adapter ce code à ton besoin et à le faire fonctionner. C'est comme ça que tu apprendras...

"Le plus précisément possible" veut dire : précise bien ton besoin, la différence entre ce que tu as et ce que tu veux, si ça ne compile pas poste l'ensemble des messages du compilo (entre balises CODE aussi pour une meilleure lisibilité), précise le type de carte que tu utilises, les capteurs ou modules éventuels, l'alimentation si ce n'est pas via le port USB du PC, tout ce que tu jugeras utile (plus on aura de détails, plus facilement on pourra t'aider, sans avoir à te poser des questions qui feront perdre du temps).

Le lien qu'a fourni dfgh convient parfaitement.

La librairie Keypad_I2C permet de gérer un PCF8574 et l'exemple HelloKeypad_I2C se compile parfaitement bien.

Il suffit de le modifier pour prendre en compte un clavier 16 touches.

@+

En fait j'ai presque terminé un système d'alarme avec arduino MEGA 4 catpteurs PIR, un contact de porte, un module GSM sim900. tout fonctionne correctement avec un seul clavier et un seul LCD 2x16 lui déjà en I2C. Le problème est que si je garde mon raccordement 8 fils pour le clavier+4 fils pour I2C du LCD+1 fil pour led verte+ 1fil pour led rouge+1 fil pour buzzer= 15 fils en tout alors que je souhaite ne pas passer à + de 8flis (câble RJ45). Donc avec clavier et keypad en I2C ce n'est que 4 fils+3 fils pour 2 leds et 1 buzzer c'est parfait.
Voici comme demandé le code que j'ai téléchargé

/* @file HelloKeypad.pde
   Revised to use I2C i/o Feb 26/12 - G. D. Young
   Re-check with Keypad 3.0, arduino 1.0.1 Jul 29/12
   Add port-type parameter to constructor for Paul
   Williamson's modification of the Keypad_I2C library Sept 2/13
|| @version 1.0
|| @author Alexander Brevig
|| @contact alexanderbrevig@gmail.com
||
|| @description
|| | Demonstrates the simplest use of the matrix Keypad library.
|| #
*/
#include <Keypad_I2C.h>
#include <Keypad.h>
#include <Wire.h>
#define I2CADDR 0x22

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);
  }
}

et j'ai l'erreur "'PCF8574' was not declared in this scope"
sur cette ligne :"Keypad_I2C kpd( makeKeymap(keys), rowPins, colPins, ROWS, COLS, I2CADDR, PCF8574 );"

Avez-vous une suggestion?
Merci

Bonjour,
le dernier argument (PCF8574) est optionnel et n'est utilisé que pour la rétrocompatibilité avec une version antérieure de la librairie.

A supprimer tout simplement.

Dans Keypad_I2C.h le dernier argument est width.
Il peut être ignoré pour un PCF8574.

Je crains que tu travailles tout de même avec une ancienne version de la librairie.

D'où provient celle que tu utilises ?

@+

d'ici GitHub - Chris--A/Keypad: A version of the keypad library found in Wiring. This is just a copy made compatible with the Arduino IDE library manager.

Dans l'exemple de la même librairie l'argument PCF8574 est absent.

Attention de ne pas mélanger.

Bonne continuation
@+

Désolé mais je ne comprends pas la solution que vous proposez pour résoudre mon problème. Pourriez-vous détailler svp. Je suis un débutant Arduino à la retraite ;o et oui sur le tard...
Merci

Il faut prendre comme exemple les exemples de la bibliothèque correspondante à celle qui a été installée.
Donc l'exemple de mon lien précédent.

Ensuite, modifier le code pour 4 colonnes :

const byte ROWS = 4; //four rows
const byte COLS = 4; //four 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] = {0, 1, 2, 3}; //connect to the row pinouts of the keypad
byte colPins[COLS] = {4, 5, 6, 7}; //connect to the column pinouts of the keypad

Ensuite pour les branchements, il faut repérer les pins correspondant aux lignes et colonnes du clavier.

Exemple:

Bon courage de la part d'un futur retraité (avril 2019)

@+

Oui merci ça j'avais compris (4x4) mais mon problème d'erreur 'PCF8574' was not declared in this scope je ne vois comment le résoudre? Pcq j'ai supprimé PCF8574 comme vous l'aviez précisé et maintenant voici toutes les erreurs:
keypad_I2C_test:31: error: no matching function for call to 'Keypad_I2C::Keypad_I2C(char*, byte [4], byte [3], const byte&, const byte&, int)'
Keypad_I2C kpd( makeKeymap(keys), rowPins, colPins, ROWS, COLS, I2CADDR );
D:\Doc_didier\documents_didier\Arduino\keypad_I2C_test\keypad_I2C_test.ino:31:73: note: candidates are: ............
Comment résoudre ce problème?
Merci pour votre aide.

didiersee:
Oui merci ça j'avais compris mais mon problème d'erreur 'PCF8574' was not declared in this scope je ne vois comment le résoudre or sans ça je ne sais pas aller plus loin?

Je n'ai pas du être assez clair dans mon message #8

Il suffit de supprimer le dernier argument, comme ceci :

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

Comme dans l'exemple de TA librairie.

Ce qui est troublant c'est qu'il semblerait qu'il existe plusieurs librairies Kypad I2C, plus ou moins clonées entre elles.
Plutôt ennuyeux.

@+

Bonjour je dois reprendre depuis le début. Voici la librairie téléchargée arduino_keypads-master.zip ici je l'ai dézippé et placer le dossier C:\Program Files (x86)\Arduino\libraries\arduino_keypads-master et déjà là ça ne va pas pcq quand je démarre le logiciel arduino officiel je ne vois pas les exemples de programmes comme EventKeypad_I2C.ino par exemple alors que quand je vais voir le dossier il est bien là??
Comment faire svp?

didiersee:
Bonjour je dois reprendre depuis le début. Voici la librairie téléchargée arduino_keypads-master.zip ici je l'ai dézippé et placer le dossier C:\Program Files (x86)\Arduino\libraries\arduino_keypads-master et déjà là ça ne va pas pcq quand je démarre le logiciel arduino officiel je ne vois pas les exemples de programmes comme EventKeypad_I2C.ino par exemple alors que quand je vais voir le dossier il est bien là??
Comment faire svp?

Bonjour,
ce sont les répertoires qui sont contenus dans arduino_keypads-master qui doivent aller directement dans le répertoire libraries.

tu dézippes dans un répertoire qui s'appelle par défaut "keypads-master"
il faut renommer ton repertoire "keypads-master" en "keypads"
( supprimer le tiret master)
puis recopier ce répertoire dans le répertoire "librairie" de l'ide arduino