Problème avec un clavier (4x3) et une carte NANO

Bonsoir,

je commence vraiment à désespérer avec un programme aussi simple !!!

Le clavier est OK (les contacts se font bien entre lignes et colonnes).

Les sorties de la NANO sont OK aussi mais j’ai pas testé les entrées (mais bon ça serait pas de bol !!!).

Lorsque j’appuie sur n’importe quelle touche du clavier, rien ne se passe.

Je me demande si cela ne vient pas de la bibliothèque “Keypad” (???) mais comment en être sûr ?

Par quoi je dois commencer pour éliminer le problème ?

Merci pour votre aide.

owkenobi

Keypad.ino (1.05 KB)

On ne peut pas voir le code sur un smartphone, peux tu le poster entre balises CODE ?

#include <Wire.h>
#include <Keypad.h>

const byte ROWS = 4;
const byte COLS = 3;

char keys[ROWS][COLS] = { {‘1’, ‘2’, ‘3’},
{‘4’, ‘5’, ‘6’},
{‘7’, ‘8’, ‘9’},
{’*’, ‘0’, ‘#’} };

byte rowPins[ROWS] = {8, 9, 10, 11}; // R1, R2, R3, R4
byte colPins[COLS] = {5, 6, 7}; // C1, C2, C3

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

void setup ()
{
// Ces 7 lignes au cas où mais cela ne change rien (???)
pinMode(8, INPUT_PULLUP);
pinMode(9, INPUT_PULLUP);
pinMode(10, INPUT_PULLUP);
pinMode(11, INPUT_PULLUP);
pinMode(5, OUTPUT);
pinMode(6, OUTPUT);
pinMode(7, OUTPUT);
// ----------------------------

Serial.begin(9600); // Initialisation du moniteur série
Serial.println(“Initialisation OK”);
}

void loop ()
{
char key = keypad.getKey();
if (key != NO_KEY)
{
Serial.println(key);
}
}

le code n'est toujours pas posté entre les balises appropriées..... voir ici comment faire : https://forum.arduino.cc/index.php?topic=315372.msg2184016#msg2184016

Sauf si elle est mal installée, la bibliothèque fonctionne bien.

Enlève les lignes de pinMode Change le if par if(key)

Sinon, teste les exemples de la bibliothèque.

J'ai mis if(key) mais c'est pareil.

Par ailleurs, j'ai remplacé la carte NANO et le clavier 4x3 et c'est encore pareil.

J'ai donc fais le test suivant sur les 2 cartes NANO :

Lorsque je force à 0 (à la masse au moyen d'un fil) l'une après l'autre les entrées 8, 9, 10 et 11, il n'y a que la broche 11 (D8) qui détecte un niveau 0. Les autres broches détectent toujours un niveau 1.

Y-a-t'il des restrictions sur les broches qui recoivent les lignes 1 à 4 du clavier ?

Où alors c'est le keypad.h qui n'est pas bon ? Et c'est pas facile à vérifier.

Pouvez-vous me fournir un lien pour télécharger le bon keypad.h ?

J'ai pris celui-ci : Keypad-master.zip (https://github.com/Chris--A/Keypad.git).

Au plaisir de vous lire.

Merci

owkenobi

https://github.com/Chris--A/Keypad

testez vos fils et sorties 2 à 2 pour trouver quels sont les vrais fils pour les lignes et colonnes. ou alors il y a un fil cassé