je souhaite réaliser un clavier 4 x 4 en i2c via un PCF8574p ( je lui ai mis l' adresse 0x22).
J' essais avec le tuto de Skywodd avec ce fichier: PCF8574-LIB-PDE.zip
J' ai mis les librairies dans le dossier " Librairie" et les exemples dans le dossier: ... sshuuut
Voici la liste des codes erreurs:
I:\Raspi\arduino-1.0.5\libraries\i2ckeypadLIB\i2ckeypad.cpp:48:26: error: WConstants.h: No such file or directory
I:\Raspi\arduino-1.0.5\libraries\i2ckeypadLIB\i2ckeypad.cpp: In member function 'void i2ckeypad::pcf8574_write(int, int)':
I:\Raspi\arduino-1.0.5\libraries\i2ckeypadLIB\i2ckeypad.cpp:209: error: 'class TwoWire' has no member named 'send'
I:\Raspi\arduino-1.0.5\libraries\i2ckeypadLIB\i2ckeypad.cpp: In member function 'int i2ckeypad::pcf8574_byte_read(int)':
I:\Raspi\arduino-1.0.5\libraries\i2ckeypadLIB\i2ckeypad.cpp:217: error: 'class TwoWire' has no member named 'receive'
Je débute en électronique et programmation, je ne comprends donc pas grand chose à ces codes erreurs.
Je comprends qu' il manque une lib WConstants.h, je n' ai pas supprimé de fichier dans les dossiers du programme.
J' utilise l' IDE 1.0.5 d' Arduino.
Bonsoir,
Il faudrait que tu vérifies ton adresse du composant I2C.
D'un point de vue Arduino les adresses sont :
PCF8574 entre 0x40 et 0x4E (en fonction de A2, A1 et A0)
PCF8574A entre 0x70 et 0x7E (en fonction de A2, A1 et A0)
@+
J' ai vérifié l' adresse de mon PCF par i2cscan et il me renvoie 0x22.
Mais tu n' as pas tout à fait tord, je dois certainement changer l' adresse dans le sketch,
i2ckeypad kpd = i2ckeypad(0x20, 4, 4);
par
i2ckeypad kpd = i2ckeypad(0x22, 4, 4);
mais je n' ensuis pas encore là, je procède dans un certain ordre pour éviter d' avoir trop de message d' erreurs, et d' éviter une dépression nerveuse..;
Attendez j'ai pigé : quand Skywodd a écrit sa lib, c'était avant les modifications de wire.h, et notamment le changement de l'écriture d'un envoi qui est passé de Wire.send() à Wire.write()
Donc il te faut ouvrir le .cpp et remplacer tous les Wire.send() par des Wire.write() déjà
Merci B@tto, c' est ce que j' ai fait,
ensuite j' ai supprimé la ligne #include "WConstants.h" dans le cpp et j' ai rajouté ces lignes dans le .h #if ARDUINO >= 100 #include "Arduino.h" #else #include "WProgram.h" #endif
et je n' ai donc plus d' erreur pour l' instant... je vais modifier ceci:
Comme tu veux, mais si le but est d'améliorer/mettre à jour la lib, il y a un topic dessus, autant continuer dessus et éviter que d'autre personnes tombent dans le même "piège". Et si Jean-François pouvait le déplacer dans la rubrique Réalisations ça serait top
Ya mon pseudo dans le titre du topic, ça doit être important
B@tto:
Attendez j'ai pigé : quand Skywodd a écrit sa lib, c'était avant les modifications de wire.h, et notamment le changement de l'écriture d'un envoi qui est passé de Wire.send() à Wire.write()
Si c'est sur google-doc, dropbox, ou n'importe quoi d'autre en fichier ZIP c'est obligatoirement daté d'avant la version 1.0.
J'ai malheureusement plein de truc (articles, codes, etc.) en version 0023 ou antérieur.
La réécriture d'une bonne partie des articles pour le site v2 est prévue mais plus le temps passe et moins j'avance