lunes, 7 de febrero de 2011

Biblioteca para teclas del Arduino LCD+Keypad

El Arduino LCD+Keypad es un accesorio interesante y en realidad el LCD con precio más accesible que encontré. A demás de incluir un display de 16 caracteres por 2 líneas, también tiene unos cuantos botones que se leen mediante una entrada analógica.
El display se puede manejar sin problemas utilizando la biblioteca standard del entorno Arduino, pero para el teclado sólo viene un ejemplo muy rudimentario, así que me hice una pequeña biblioteca que no sólo evita el rebote de contactos (que puede interpretarse como si se presionara varias veces el botón) sino que maneja autorepetición si se mantiene presionada la tecla un rato.

Sólo hay que crear un drectorio llamado keyb donde están las bibliotecas de Arduino y en él los siguientes tres archivos. El uso es muy sencillo. Se incluye keyb.h y ya queda disponible la función int KEYB.getkey(n); donde n puede ser 0 o 1 para seleccionar si queremos autorepetición.

Para descargar, click aquí.

El archivo contiene el siguiente ejemplo de uso:

#include 
#include 

LiquidCrystal lcd(8,9,4,5,6,7);

int count,repeat;

void setup(){
  lcd.begin(16, 2);
  count=0;
  repeat=1;

  lcd.clear();
  lcd.print("repeat:");
  lcd.print(repeat);
  lcd.setCursor(1,1);
  lcd.print(count);
  }


/////////////////////////////////////////////////////////////
void loop(){

int k=KEYB.getkey(repeat);

if (k!=KEY_NONE){
  
    if (k==KEY_SELECT) {
       repeat= !repeat;
       }
       
    if (k==KEY_RIGHT) {
       count+=100;
       }   
    if (k==KEY_LEFT) {
       count-=100;
       }
       
    if (k==KEY_UP) {
       count+=1;
       }   
    if (k==KEY_DOWN) {
       count-=1;
       }
       
    lcd.clear();
    lcd.print("repeat:");
    lcd.print(repeat);
    lcd.setCursor(1,1);
    lcd.print(count);
    
    }
}