probleme mit Keypad_I2C.h was ist da faul???

Arduino: 1.6.9 (Windows 7), Board: “Arduino/Genuino Uno”

C:\Users\remis-LEP\Documents\Arduino\libraries\Keypad\examples\i2cpcf8574\i2cpcf8574.ino:2:24: fatal error: Keypad_I2C.h: No such file or directory

#include <Keypad_I2C.h>

^

compilation terminated.

exit status 1
Fehler beim Kompilieren für das Board Arduino/Genuino Uno.

Dieser Bericht wäre detaillierter, wenn die Option
“Ausführliche Ausgabe während der Kompilierung”
in Datei → Voreinstellungen aktiviert wäre.

versuche eine 4X4 Tastatur mit einem PCF8574 zum Laufen zu bringen aber alle Sketch die ich gefunden habe, brauchen die Keypad_I2C.h den habe ich auch gefunden -->neues Fenster erstellt alles rein kopiert->abgespeichert… wen ich das Beispiel Programm starte, sehe unten, kommt immer der obiger Fehler. was mache ich Falsch???

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

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

char keys[ROWS][COLS] = {
{'1','2','3','A'},
{'4','5','6','B'},
{'7','8','9','C'},
{'*','0','#','D'}
};

byte rowPins[ROWS] = {0,1,2,3}; 
byte colPins[COLS] = {4,5,6,7};

int i2caddress = 0x20;

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

void setup(){
 Serial.begin(9600);
 kpd.begin();
}

void loop(){
 char key = kpd.getKey();
 if (key){
   Serial.println(key);
 }
}

Wo hast du alles reinkopiert?

du must im Ordner "Libraries" einen Ordner (Keypad_i2c) anlegen, der genau so heißt, wie die Library und da alles reinkopieren.

Mach mal einen Screenshot von dem Ordner, den du angelegt hast.

Okay habe es gemacht, nur jetzt meckert er wegen Variablen, malschauen....

parabello: Okay habe es gemacht, nur jetzt meckert er wegen Variablen, malschauen....

Das liegt am Sketch. Poste den mal.

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

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

char keys[ROWS][COLS] = {
{'1','2','3','A'},
{'4','5','6','B'},
{'7','8','9','C'},
{'*','0','#','D'}
};

byte rowPins[ROWS] = {0,1,2,3}; 
byte colPins[COLS] = {4,5,6,7};

int i2caddress = 0x20;

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

void setup(){
Serial.begin(9600);
kpd.begin();
}

void loop(){
char key = kpd.getKey();
if (key){
  Serial.println(key);
}
}

Also ich kriege es nicht ans laufen, >:(

Bitte setze den Sketch in Code-Tags, das kannst du auch nachträglich noch machen.
Schaltfläche </> oben links im Editor.

int i2caddress = 0x20; ist doch die Adresse von PCF8574,warum 0x20??? in der Beschreibung kommt kein 0x20 hex für Adresse vor.......

Sorry der Sketch ist total falsch und nicht richtig lesbar.

Edit: Jetzt ist es besser und der "falsche" Teil ist auch nicht mehr vorhanden.

HotSystems: Sorry der Sketch ist total falsch und nicht richtig lesbar.

wurde geändert... Habs ;) , habe einen PCF8574A gehabt und dem muss ich die Adresse 0x38 zuweisen Bei C-Control da vergab man die Schreib oder leseadresse in hex oder DEC und bei Arduino steht ja die 7-bit hexadezimal address without R/W ......man so eine Kleinigkeit, habe lange gebraucht um es rauszufinden vor allem so viele Sketchen ausprobiert.....

parabello: Habs ;) , habe einen PCF8574A gehabt und dem muss ich die Adresse 0x38 zuweisen Bei C-Control da vergab man die Schreib oder leseadresse in hex oder DEC und bei Arduino steht ja die 7-bit hexadezimal address without R/W ......man so eine Kleinigkeit, habe lange gebraucht um es rauszufinden vor allem so viele Sketchen ausprobiert.....

Ja, das ist schon irreführend, da fällt man anfangs gern drauf rein.

Für weitere Projekte solltest du dir den I2C-Scanner herunterladen. http://playground.arduino.cc/Main/I2cScanner

Damit kannst du schnell feststellen, welche I2C-Adressen im Projekt verwendet werden.

HotSystems:
Ja, das ist schon irreführend, da fällt man anfangs gern drauf rein.

Für weitere Projekte solltest du dir den I2C-Scanner herunterladen.
http://playground.arduino.cc/Main/I2cScanner

Damit kannst du schnell feststellen, welche I2C-Adressen im Projekt verwendet werden.

Danke HotSystems,habs ausprobiert Super…wie kann ich den die Tastatur oder b.z.w. den Sketch auf einem pro mini ohne SDA SCL Pins,ans laufen zu bringen??? oder sind das die A5 und A4??

parabello: Danke HotSystems,habs ausprobiert Super.....wie kann ich den die Tastatur oder b.z.w. den Sketch auf einem pro mini ohne SDA SCL Pins,ans laufen zu bringen??? oder sind das die A5 und A4??

Ja, der Pro Mini hat I2C auf A4 (SDA) und A5 (SCL), identisch zum Uno. Pro Mini - Pinout oder hier zum besseren Ausdruck.

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

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

char keys[ROWS][COLS] = {
{'1','2','3','A'},
{'4','5','6','B'},
{'7','8','9','C'},
{'*','0','#','D'}
};

byte rowPins[ROWS] = {0,1,2,3};
byte colPins[COLS] = {4,5,6,7};

int i2caddress = 0x20;

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

void setup(){
Serial.begin(9600);
kpd.begin();
}

void loop(){
char key = kpd.getKey();
if (key){
  Serial.println(key);
}
}

Eine Frage wie programmiere ich den das ich eine Zahl von 0-100 da stehen habe, bei Key??? :roll_eyes: sobald ich #(gleich Enter) drücke das Programm den Wert weiterverarbeitet.

/* Keypad_I2C example

 */
#include <Keypad2_I2C.h>
#include <Keypad.h>
#include <Wire.h>
#include <EEPROM.h>

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','#'}
};

int value=0;
char keyreihe[5];
char key;
int count=0;
//EEPROM
int eeaddress=0;
byte eevalue;
//SOLLwert
int varSoll;

char zahl[10];
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


int i2caddress = 0x38;

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

void setup(){
  Serial.begin(9600);
  kpd.begin();
 // eevalue=EEPROM.read(eeaddress);
 // varSoll=eevalue;
}
  
void loop()
{  
   //key = kpd.getKey();
   if (key=kpd.getKey()){
   Serial.print("KEY ausgabe:");
   Serial.println(key);
   }
   
key = kpd.getKey();
if (key) //gleich wie if(key !=NO_KEY)
{
  switch(key);
  {
   case '*':
  //
  break;
  case '#':
  //showKey();
  count=0;
  //Werte Löschen
  for (int zz=0; zz<4;zz++)
  {
    keyreihe[zz]=0;
  }
  //EEPROM-Wert Lesen
 // eevalue = EEPROM.read(eeaddress);
 // varSoll=eevalue;
  break;
  default:
  keyreihe[count]=key;
  count=count+1;
  if (count==4){count=0;}
}
}

}//ende Looop

habe es so versucht-Beispiel aus einem Buch , aber lässt sich nicht compilieren…