Folientastatur mit i2C Portexpander PCF8574

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 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

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);
  }
}


Verbundene Suchwörter

Tutorial Anleitung Code Beispiel Arduino Elektro Lernen Programm Beispiel I2C Folientastatur

Kommentare

Hinweis: HTML ist nicht verfügbar!

Im Beitrag erwähnte Produkte

PCF8574 I2C Portexpander I/O Erweiterung 8 Pin

PCF8574 I2C Portexpander I/O Erweiterung 8 Pin

Du brauchst mehr I/O Pins dann ist dieser PCF8574 Portexpander die perfekte Lösung. Der PCF8574 kann..

5,90CHF

Folientastatur 16 Tasten / Tastenfeld 4x4 Matrix Keypad

Folientastatur 16 Tasten / Tastenfeld 4x4 Matrix Keypad

Dieses Keypad eignet sich perfekt um zum Beispiel ein Zahlenschloss mit Arduino zu bauen. Du kannst ..

2,90CHF

Arduino UNO kompatibles Board Atmega328

Arduino UNO kompatibles Board Atmega328

Dieses Arduino UNO kompatible Board ist sehr gut verarbeitet und auch qualitativ hochstehend. Dieses..

12,90CHF