[BUZZ] LCD Keypad Shield for Arduino Duemilanove & Freeduino

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

     

5 comentários
  • Jefferson - 6.560 Comentários

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

  • Jefferson - 6.560 Comentários

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

  • Jefferson - 6.560 Comentários

    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 )

  • Jefferson - 6.560 Comentários

    Eu comprei dois, em datas diferentes. E os dois tem o mesmo "rigth".

Deixe um comentário

Você pode usar estas tags HTML

<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code class="" title="" data-url=""> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong> <pre class="" title="" data-url=""> <span class="" title="" data-url="">

  

  

  

:) :( ;) O_o B) :lol: :huh: :S :D :-P 8-O :yahoo: :rtfm: :dashhead1: :clapping: more »