Ein Keypadshield als Portexpander am Digispark nutzen

Das Keypadshield ist nichts anderes als ein Portexpander, an dem ein LCD betrieben wird. Das lässt sich natürlich auch wunderbar als eine Erweiterung der I/O Ports für den Digispark oder andere Controller mit I2C nutzen. Anstelle der Pins zum Auflöten des LCD kommt einfach eine Buchsenleiste, wie auf dem Arduino selbst, drauf. Da kann ich dann entweder eine LCD aufstecken, oder ein eigenes Board für jedwede I/O Operationen oder Verbindungskabel zu einem Breadbord.
Der verwendete Portexpander ist ein MCP23017. Für die I/O stehen dann die 8 Ports auf GPIO B zur Verfügung. Zusätzlich sind die Keys auf dem Shield über die ersten 5 Ports auf GPIO A verfügbar und 2 Ports mit Vorwiderstand auch auf GPIO A. Wenn man den Port GPA5 noch mit einer Drahtbrücke zu einem freien Pin an der Pinleiste verbindet, stehen alle Ports zur Verügung. Aus dem Schematic / Stromlaufplan ergibt sich folgende Belegung:

Verwendbare Ports / Anschluss Pinleiste
GPB0 – Pin 18 ( mit 220 Ohm Widerstand )
GPA7 – Pin 17 ( mit 330 Ohm Widerstand )
GPA6 – Pin 16 ( mit 220 Ohm Widerstand )
GPA5 – nicht verbunden
GPB1 – Pin 14
GPB2 – Pin 13
GPB3 – Pin 12
GPB4 – Pin 11
GPB5 – Pin 06
GPB6 – Pin 05
GPB7 – Pin 04

Verwendbare Ports / Key Name
GPA0 – Select
GPA1 – Right
GPA2 – Down
GPA3 – Up
GPA4 – Left

Spannung
GND – Pin 01
+5V – Pin 02 und Pin 15

Sonstige
Poti – Pin3

Shield / Arduino
Reset / Reset
SDA / A4
SCL / A5
GND / GND
+5V / +5V

Keypad und Zusatzboard mit Steckkontakten

Das Keypad mit dem Eigenbau Zusatzboard

Die Software
Als erstes stelle ich fest welche I2C Adresse das Keypad Shield belegt. Mit der I2C Scanner Software lese ich ein: 0x20
Beim Start läuft ein Lauflicht durch, dann wird für jede Cursortaste eine LED eingeschaltet, solange die Taste gedrückt ist. Bei der Taste „Select“ läuft dann wieder das Lauflicht durch, solange die Taste gedrückt bleibt.

Der Sketch
Keypad-PortExpanderMCP23017

Fazit
Das funktioniert ganz gut. Damit läßt sich das Keypad Shield auch gut als ‚halbes‘ Prototyping Board einsetzen, da der Portexpander und die Tasten nicht extra aufgelötet oder gesteckt werden müssen. Je nach Schaltung läßt sich auch das Poti einsetzen.

Nachtrag
Das funktioniert auch mit einem I2C zu SPI Adapter (Backpack) ohne Tasten. Die Pinbelegung ist eine andere, da ein anderer Chip benutzt wird: der PCF85741. Die Adresse ist 0x27, läßt sich aber von 0x20 bis 0x27 anpassen. Aus dem Schematic / Stromlaufplan ergibt sich folgende Belegung:

Verwendbare Ports / Anschluss Pinleiste
P7 – Pin14
P6 – Pin13
P5 – Pin12
P4 – Pin11
P3 – Schaltet Pin16 über einen Transistor (Backlight)
P2 – Pin06
P1 – Pin05
P0 – Pin04

Spannung
GND – Pin1
+5V – Pin2 und Pin15

Sonstige
Poti – Pin3

Bei diesen Backpacks muss man aufpassen, es gibt verschiedene Pinbelegungen der Steuer- und Datenbits am Chip.

Links

Adafruit Keypad Shield mit Schematics

Klicke, um auf rgb-lcd-shield.pdf zuzugreifen

Datenblatt Port Expander MCP23017

Klicke, um auf 20001952C.pdf zuzugreifen

Datenblatt Port Expander PCF8574

Klicke, um auf pcf8574.pdf zuzugreifen

Schematics I2C Adapter für LCD (PCF8574)
https://www.sunrom.com/p/i2c-lcd-backpack-pcf8574

Software Beispiel für MCP23017

MCP23017 I2C I/O Port Expander

I2C Scanner
https://playground.arduino.cc/Main/I2cScanner

Software Bibliothek MCP23017 für Arduino IDE
https://github.com/adafruit/Adafruit-MCP23017-Arduino-Library

Software Bibliothek PCF8574 für Arduino IDE
https://github.com/skywodd/pcf8574_arduino_library

Veröffentlicht von

Jürgen

Ich bin Software Ingenieur und habe meine Schwerpunkte in allen Aktivitäten, die zur Software Entwicklung gehören. Am längsten bin ich als Software Entwickler von Embedded Software in C tätig.