Folientastaturen resp. Keypads sind die bequemsten Eingabemittel für Steuerung mit numerischen Werten. Meine kommenden Projekte werden auch mit einer solchen Tastatur versehen werden (als Folien-Ausführung zum Aufkleben). Dazu habe ich mir die üblichen Quellen zur Programmierung notiert.
In der Tutorial Serie von tronixstuff (grossartig!) findet man die Angaben im Kapitel 42.
Code von Alexander Brevig/Mark Stanley, die Autoren der Wiring Library für Arduino.Die Keypad Library ist im Arduino Playground zu finden: http://playground.arduino.cc/Code/Keypad, siehe auch den Kommentar bei Adafruit hier.
Mit dieser Library kann eine n x m Folientastatur an beliebige digitale PINs des Arduino angeschlossen werden, es werden n + m freie PINs benötigt. Dies ist eine beträchtliche Anzahl (7 für eine Standard 4×3 Folientastatur) und lässt sich natürlich mit einem GPIO-Extender leicht reduzieren (siehe I2C hier) oder mit einer Widerstandsmatrix analog auslesen (Peter Dannegger im Mikrocontroller Forum Tastenmatrix auslesen über nur 2 Leitungen. Siehe auch das ASM-Tutorial).
Für Code in Python, installierbar mit PIP, siehe hier (2 Libaries, eine für 7 GPIO PIN Ansteuerung und eine für I2C).
Im echten Leben würde man Interrupts einsetzen (Mikroelektronika Forum).
Einfachstes Beispiel (Arduino, 7 GPIO PIN Ansteuerung).
/* @file HelloKeypad.pde
|| @author Mark Stanley, Alexander Brevig
|| @contact mstanley@technologist.com, alexanderbrevig@gmail.com
|| @version 1.0
|| @author Alexander Brevig
|| @contact alexanderbrevig@gmail.com
||
|| @description
|| | Demonstrates the simplest use of the matrix Keypad library.
|| #
*/
#include <Keypad.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','#'} }; byte rowPins[ROWS] = {5, 4, 3, 2}; //connect to the row pinouts of the keypad byte colPins[COLS] = {8, 7, 6}; //connect to the column pinouts of the keypad
Keypad keypad = Keypad( makeKeymap(keys), rowPins, colPins, ROWS, COLS );
void setup(){ Serial.begin(9600); } void loop(){ char key = keypad.getKey(); if (key){ Serial.println(key); } }