#eletrônica
LCD Keypad Shield for Arduino Duemilanove & Freeduino (60g)
https://www.goodluckbuy.com/lcd-keypad-shield-for-arduino-duemilanove-and-freeduino.html
$17.42
Comprei 19/03
Recebi 27/04
Se você quer realmente ter uma boa experiência inicial com o Arduino, não deve deixar de comprar este shield. É barato para o que oferece e permite brincar com a programação sem fazer uma única soldagem.
Porém o programa exemplo dado na página da GLB não funciona. Eu coloquei o shield para funcionar depois de uma meia hora procurando alternativas, mas agora não me lembro do que eu fiz. Depois eu coloco o meu programa corrigido aqui.
O programa é este (algumas adaptações minhas):
//
#include <LCD4Bit_mod.h>
//create object to control an LCD.
//number of lines in display=1
LCD4Bit_mod lcd = LCD4Bit_mod(2);
//Key message
char msgs[5][16] = {"Tecla Right OK ",
"Tecla Up OK ",
"Tecla Down OK ",
"Tecla Left OK ",
"Tecla Select OK" };
int adc_key_val[5] ={30, 150, 360, 535, 760 };
int NUM_KEYS = 5;
int adc_key_in;
int key=-1;
int oldkey=-1;
void setup() {
pinMode(13, OUTPUT); //we'll use the debug LED to output a heartbeat
lcd.init();
//optionally, now set up our application-specific display settings, overriding whatever the lcd did in lcd.init()
//lcd.commandWrite(0x0F);//cursor on, display on, blink on. (nasty!)
lcd.clear();
lcd.printIn("Testando teclado…");
}
void loop()
{
adc_key_in = analogRead(0); // read the value from the sensor
digitalWrite(13, HIGH);
key = get_key(adc_key_in); // convert into key press
if (key != oldkey) // if keypress is detected
{
delay(50); // wait for debounce time
adc_key_in = analogRead(0); // read the value from the sensor
key = get_key(adc_key_in); // convert into key press
if (key != oldkey)
{
oldkey = key;
if (key >=0){
lcd.cursorTo(2, 0); //line=2, x=0
lcd.printIn(msgs[key]);
}
}
}
digitalWrite(13, LOW);
}
// Convert ADC value to key number
int get_key(unsigned int input)
{ int k;
for (k = 0; k < NUM_KEYS; k++)
{
if (input < adc_key_val[k])
{ return k; }
}
if (k >= NUM_KEYS)
k = -1; // No valid key pressed
return k;
}
Existe mais um detalhe. A library LCD4Bit_mod não vem no pacote Arduino. Eu tive que baixá-la aqui:
http://www.dfrobot.com/image/data/DFR0009/LCD4Bit_mod.zip
Descompacte no diretório libraries, de modo que fique assim:
librariesLCD4Bit_mod*.*
Este shield não funciona em conjunto com o shield ethernet. Mais informações, incluindo um modo de contornar o problema (não testado), aqui:
http://arduino.cc/forum/index.php?PHPSESSID=8bacc3bb4bcf20e07b4809c88d785381&topic=51272.0
Jefferson, seu shield do LCD veio com o "right" escrito errado igual na foto? (reparei isso agora quando estava pesquisando no eBay, lá também está errado, o da GLB parece ser o mesmo shield, mas apagaram a marca DFROBOT, olha a imagem do eBay: http://i.ebayimg.com/00/$%28KGrHqMOKjsE24SU2mcJBN123yIbWw~~_3.JPG )
Eu comprei dois, em datas diferentes. E os dois tem o mesmo "rigth".