bonjour à tous .
depuis plus de deux semaines j'essaie sans succès de compiler un fichier pour piloter un clavier en I2C. si j'ai bien compris l'erreur , le compilateur ne trouve pas la librairie associée ( Keypad_I2C) pourtant présente dans le dossier : arduino/librairies/keypad_I2c .
j'ai essayé plusieurs IDE de la version 1.8.10 à la dernière .
j'ai cherché sur d'autres fil de discussion , notamment celui-ci . dont est issu le code du croquis et l'origine de la librairie . je ne sais pas comment m'en dépêtrer, je vois trouve pas le nœud du problème .....et là le suis à court d'idées .
pour info : je veux utiliser un clavier ainsi qu'un lcd , tous deux en I2C pour libérer des broches sur uno .
Dans l'attente , merci à tous .
Arduino : 1.8.10 (Windows 10), Carte : "Arduino Uno"
I2CLCD_keypad:34:79: error: no matching function for call to 'Keypad_I2C::Keypad_I2C(char*, byte [4], byte [4], const byte&, const byte&, int)'
Keypad_I2C customKeypad(makeKeymap(hexaKeys),rowPins,colPins,ROWS,COLS,I2CADDR);
^
In file included from C:\Program Files (x86)\Arduino\examples\I2CLCD_keypad\I2CLCD_keypad.ino:16:0:
C:\Program Files (x86)\Arduino\libraries\Keypad_I2C/Keypad_I2C.h:29:9: note: candidate: Keypad_I2C::Keypad_I2C(int, int)
Keypad_I2C(int i2c_addr, int int_pin);
^~~~~~~~~~
C:\Program Files (x86)\Arduino\libraries\Keypad_I2C/Keypad_I2C.h:29:9: note: candidate expects 2 arguments, 6 provided
C:\Program Files (x86)\Arduino\libraries\Keypad_I2C/Keypad_I2C.h:26:7: note: candidate: constexpr Keypad_I2C::Keypad_I2C(const Keypad_I2C&)
class Keypad_I2C
^~~~~~~~~~
C:\Program Files (x86)\Arduino\libraries\Keypad_I2C/Keypad_I2C.h:26:7: note: candidate expects 1 argument, 6 provided
C:\Program Files (x86)\Arduino\libraries\Keypad_I2C/Keypad_I2C.h:26:7: note: candidate: constexpr Keypad_I2C::Keypad_I2C(Keypad_I2C&&)
C:\Program Files (x86)\Arduino\libraries\Keypad_I2C/Keypad_I2C.h:26:7: note: candidate expects 1 argument, 6 provided
C:\Program Files (x86)\Arduino\examples\I2CLCD_keypad\I2CLCD_keypad.ino: In function 'void setup()':
I2CLCD_keypad:37:1: error: 'wire' was not declared in this scope
wire.begin( ); // GDY200622
^~~~
C:\Program Files (x86)\Arduino\examples\I2CLCD_keypad\I2CLCD_keypad.ino:37:1: note: suggested alternative: 'Wire'
wire.begin( ); // GDY200622
^~~~
Wire
I2CLCD_keypad:38:1: error: 'lcd' was not declared in this scope
lcd.init( ); // GDY120705
^~~
C:\Program Files (x86)\Arduino\examples\I2CLCD_keypad\I2CLCD_keypad.ino: In function 'void loop()':
I2CLCD_keypad:48:8: error: 'custoKey' was not declared in this scope
while(custoKey==NO_KEY)customKey=customKeypad.getKey( );
^~~~~~~~
C:\Program Files (x86)\Arduino\examples\I2CLCD_keypad\I2CLCD_keypad.ino:48:8: note: suggested alternative: 'customKey'
while(custoKey==NO_KEY)customKey=customKeypad.getKey( );
^~~~~~~~
customKey
I2CLCD_keypad:49:2: error: 'lcd' was not declared in this scope
lcd.clear( );
^~~
Plusieurs bibliothèque trouvées pour "Keypad_I2C.h"
Utilisé : C:\Program
Plusieurs bibliothèque trouvées pour "Keypad.h"
Utilisé : C:\Program
Plusieurs bibliothèque trouvées pour "Wire.h"
Utilisé : C:\Users\paika\AppData\Local\Arduino15\packages\arduino\hardware\avr\1.8.6\libraries\Wire
exit status 1
no matching function for call to 'Keypad_I2C::Keypad_I2C(char*, byte [4], byte [4], const byte&, const byte&, int)'
Ce rapport pourrait être plus détaillé avec
l'option "Afficher les résultats détaillés de la compilation"
activée dans Fichier -> Préférences.
pour info : ce code brut est ma " trame de départ " pour utiliser le clavier en I2C et ne sera qu'une partie de mon code global qui constituera mon projet . je ne sais pas si ma méthode est correcte mais j'essaie de comprendre chaque partie de code correspondant au capteur/composant/actionneur que je souhaite utiliser ( en l'occurrence un clavier/membrane en I2C ) puis j'essaie de les assembler .
Non, puisque la classe écrite par Rob s'appelle I2CKeyPad.
Par contre celle de Joe Young s'appelle bien Keypad_I2C.
Au moins, eux, ils ont l’intelligence de nommer leurs classes de manière différente.
donc si j'ai bien compris , dans mon code il me faut renommer: #include <Keypad_I2C.h> par #include <I2CKeyPad.h>
Keypad_I2C customKeypad(makeKeymap(hexaKeys),rowPins,colPins,ROWS,COLS,I2CADDR); par
I2CKeyPad customKeypad(makeKeymap(hexaKeys),rowPins,colPins,ROWS,COLS,I2CADDR);
pour inclure la bonne librairie et que l'instance fasse appel à cette dernière