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