In diesem Blog Eintrag möchte ich euch erklären wie ihr eine Matrix Folientastatur über einen I2C Portexpander PCF8574 ansteuern könnt. Ich habe hier ein Arduino Uno eingesetzt. Wenn ihr nur die Folientastatur auswerten möchtet braucht ihr den Portexpander nicht (Sehr praktisch ist er aber schon :-) da die Folientastatur einfach eingesteckt werden kann). 


Portexpander PCF8574


Der Portexpander PCF8574 eignet sich da wo du zu wenig I/O hast. Also als Eingangs-Erweiterung um acht Eingänge mehr zu haben. Der PCF8574 wird über den I2C Bus angesteuert, daher wird auch der Verdrahtungsaufwand geringgehalten. Das Breakoutboard vom PCF8574 ist so aufgebaut, dass auch mehrere seriell aneinandergesteckt werden können. Damit der Mikrocontroller jeden PCF8574 einzel ansteuern kann, müssen sie adressiert werden. Es können maximal acht verschiedene Adressen vergeben werden. Somit könntest du deine I/O um maximal 64 erweitern. Es ist jedoch zu beachten, dass die Ein- und Ausgänge nicht super schnell sind, aber für Tasten und LEDs reicht es vollkommen.

Adressierung und Adressen vom PCF8574

Die Adressierung kannst du durch setzen der Jumper auf dem PCF8574 erledigen. Standardmässig sind die Jumper mit - verbunden somit hast du die Adresse 0x38.

A2A1A0Adresse (Hexadezimal)
---0x38
--+0x39
-+-0x3A
-++0x3B
+--0x3C
+-+0x3D
++-0x3E
+++0x3F

Verwendete Arduino Library


Da ich ein Keypad auslesen will, habe ich hier eine Keypad_I2C Library verwendet, die ich auf Github gefunden habe. Du kannst sie unter folgendem Link herunterladen:
https://github.com/joeyoung/arduino_keypads

Möchtest du den PCF8574 für andere Steueraufgaben nutzen, empfehle ich dir eine reine PCF8574 Library die du ebenfalls auf GitHub findest. z.B.: https://github.com/skywodd/pcf8574_arduino_library/tree/master/PCF8574


Keypad 4x4 Matrix Folientastatur


Diese Folientastatur ist sehr praktisch, da sie sehr dünn ist und aufgeklebt werden kann. Bei der Tastatur handelt es sich um eine Membran Tastatur. Falls ihr mehr über die Tastatur wissen möchtet, habe ich einen interessanten Beitrag gefunden unter folgendem Link:
http://www.14core.com/using-membrane-keypadkeyboard-on-arduino/

Zum Auslesen des Keypad habe ich die Arduino Library Keypad genutzt, die du im Library Manager von Arduino findest, wenn du nach Keypad suchst. Falls du eine andere Folientastatur als ich hast, kannst du einfach das Layout im Arduino Programm anpassen:

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

Schaltplan Folientastatur über PCF8574 für Arduino UNO

Hier noch ein Schaltplan/Schema wie du den PCF8574 und die Tastatur an das Arduino UNO anschliessen kannst.



Programm Code Beispiel für Arduino UNO

Das Programm sowie die Librarys kannst du auch komplett von unserem FTP Server herunterladen unter folgendem Download Link:
Bastelgarage_FTP_Arduino_Keypad_PCF8574_V1.zip

/*******************************************************************************************
 *******************************************************************************************
 **                                www.bastelgarage.ch                                    **
 ** Der Onlineshop mit Videoanleitungen und kompletten Bausätzen für Anfänger und Profis! **
 *******************************************************************************************
 *******************************************************************************************
 ** In diesem Blog Eintrag möchte ich euch erklären wie ihr eine Matrix Folientastatur    **
 ** über einen I2C Portexpander PCF8574 ansteuern könnt. Ich habe hier ein Arduino Uno    **
 ** eingesetzt. Wenn ihr nur die Folientastatur auswerten möchtet braucht ihr den         **
 ** Portexpander nicht (Sehr praktisch ist er aber schon :-)da die Folientastatur einfach **
 ** eingesteckt werden kann). Die Gedrückten Tasten werden in diesem Beispiel Programm    **
 ** im Seriell Monitor von Arduino angezeigt.                                             **
 **                                                                                       **
 ** Für den PCF8574 mit Keypad musst du folgende Library installieren:                    **
 ** https://github.com/joeyoung/arduino_keypads                                           **
 **                                                                                       **
 ** Für die Folientastatur habe ich folgende Library genutzt:                             **
 ** https://github.com/Chris--A/Keypad                                                    **
 **                                                                                       **
 ** Autor: Philippe Keller                                                                **
 ** Datum: Dezember 2016                                                                  **
 ** Version: 1.0                                                                          **
 * *****************************************************************************************
*/

/*************************(Importieren der genutzten Bibliotheken)*************************/
#include <Keypad_I2C.h>
#include <Keypad.h>        
#include <Wire.h>

/****************************(Definieren der Globale Variablen)***************************/
#define I2CADDR 0x38                          // I2C Adresse vom PCF8574

const byte anzZeilen = 4;                        //Anzahl Zeilen 
const byte anzSpalten = 4;                       //Anzahl Spalten

//Hier kannst du die Symbole von deinem Keypad eintragen
char tastenLayout[anzZeilen][anzSpalten] = {
  {'1','2','3','A'}, 
  {'4','5','6','B'},
  {'7','8','9','C'},
  {'*','0','#','D'}
};

//Hier definieren wie das Keypad mit den IO Pins vom PCF8574 verdrahtet ist.
byte zeilenPins[anzZeilen] = {0, 1, 2, 3};       //Zeilen Pins
byte spaltenPins[anzSpalten] = {4, 5, 6, 7};     //Spalten Pins

//Initialisierung von Keypad
Keypad_I2C i2cKeypad( makeKeymap(tastenLayout), zeilenPins, spaltenPins, anzZeilen, anzSpalten, I2CADDR); 

/*******************************************(setup)****************************************/
void setup(){
  i2cKeypad.begin( );        
  Serial.begin(9600);
}

/*************************************(Hauptprogramm)**************************************/
void loop(){
  char ausgeleseneTaste = i2cKeypad.getKey();
  
  if (ausgeleseneTaste != NO_KEY){
    Serial.println(ausgeleseneTaste);
  }
}


Mit Touch Sensor MPR121 Sound Effekte abspielen
In diesem Blog Eintrag möchte ich euch zeigen wie ihr einen Kapazitiven Sensor mit dem Touch Sensor MPR121 selber bauen könnt....
Wasserdichtes Gehäuse für IoT Thingspeak
In diesem Blog zeige ich euch wie du ein Wasserdichtes Gehäuse für den Aussenbereich bauen kannst. Damit wir sehen wie dicht das Gehäuse ist, habe ich...
2 Bemerkungen
Winfried Gräf
Winfried Gräf

Hallo , erstmal, wirklich gute Anleitung, aber ich bekomme ich dieser Zeile immer eine Fehlermeldung in Zeile Keypad_I2C i2cKeypad( makeKeymap(tastenLayout), zeilenPins, spaltenPins, anzZeilen, anzSpalten, I2CADDR); no matching function for call to 'Keypad_I2C::Keypad_I2C(char*, byte [4], byte [4], const byte&, const byte&, int)' was stimmt nicht?

Philippe
Philippe

Hallo Winfried, Ich habe es gerade noch einmal bei mir getestet und es funktioniert ohne Fehler. Hast du die Library die ich erwähnt habe von Github runtergeladen und Installiert?: https://github.com/joeyoung/arduino_keypads und https://github.com/Chris--A/Keypad Wichtig ist auch das du beachtest das bei der Keypad_I2C Library (https://github.com/joeyoung/arduino_keypads) den Ordner "Keypad_I2C" direkt in das Verzeichnis Arduino/libraries kopierst ansonsten findet die Software die Library nicht da sie in einem Unterordner ist. Falls es nicht funktioniert einfach noch einmal melden.

Guido
Guido

Hallo, erst einmal möchte ich dir ein Lob, für die Anleitung aussprechen. Ist sauber und ordentlich dokumentiert und nachvollziehbar. Ich darauf gestoßen, da ich eine fzpz-Datei vom PCF8574-Modul für Frtitzing suche. Könntest du mir sagen wo du die Datei gefunden hast oder wenn du das Bauteil selber erstellt hast, würdest du mir die Datei für meine Dokumentationszwecke zur Verfügung stellen? Gruß Guido

Philippe
Philippe

Hallo Guido, Danke für das Lob :-). Da das erstellen von Bauteilen sehr aufwändig ist, erstelle ich sie meistens aus Fotografierten Bildern. Ist zwar etwas ein Bastel aber funktioniert ganz gut. Ich könnte dir sonnst das Fritzing vom PCF8574 mit den Bildern die ich eingefügt habe geben. Schreibe einfach einfach ein Mail auf unsere angegebene Mail Adresse unter Kontakt und ich sende dir die Daten. Gruess Philippe

Zeige 1 bis 1 von 2 (1 Seite(n))
Einen Kommentar hinterlassen
Anmerkung: HTML wird nicht unterstützt!