Site icon AranaCorp

Usar um shield LCD 16×2 com o Arduino

Um dos elementos de exibição de informação mais utilizados no mundo Arduino é o LCD (Liquid Crystal Display) 16×2. Ao construir um sistema eletrônico, pode ser interessante poder obter informações sobre o seu estado sem ter de ligá-lo a um computador ou a outro sistema como um smartphone. O LCD 16×02 é fornecido com um grande número de kits Arduino e é suficiente para diversas aplicações.

O LCD 16×2 pode ser encontrado montado num shield, com alguns botões adicionais para criar interfaces programáveis simples que permitem exibir valores e controlar projetos Arduino. Tudo isso com uma montagem muito fácil.

Material

Princípio de funcionamento

Os ecrãs de cristal líquido fazem uso da propriedade de modulação da luz dos cristais líquidos. Eles consistem em duas camadas de polarizadores com direções de polarização perpendiculares, fazendo um “sanduíche” com duas placas de vidro contendo cristais líquidos entre elas. Sobre as placas de vidro, há uma matriz de eletrodos para cada pixel. Uma tensão aplicada entre os eletrodos de um pixel provoca mudança na orientação das moléculas e, portanto, na transparência do pixel, que pode deixar passar a luz da retroiluminação ou não.

Esquema

O shield LCD é compatível com as placas Arduino UNO e Mega e é colocado diretamente sobre a placa. Em resumo, os pinos utilizados são:

O botão RST é ligado diretamente ao botão reset da placa Arduino.  

Código

Com o seu módulo devidamente ligado, pode modificar o código abaixo para obter a funcionalidade que deseja. No exemplo seguinte, definimos uma função que lê o valor dos botões e executa uma ação dependendo do botão pressionado.

Quando determinado botão é pressionado, o seu nome e valor são exibidos. Pode ser que o seu shield seja diferente, dependendo do fornecedor e da versão. Se for o caso, este código permite modificar facilmente os valores de detecção dos botões.

Para gerir o ecrã LCD 16×2 no programa, a biblioteca utilizada é a LiquidCrystal.h, cujas funções a conhecer são as seguintes:

//Libraries
#include <LiquidCrystal.h>//https://arduino.cc/en/Reference/LiquidCrystal

//Parameters
const int btnsPin  = A0;
int btnsVal  = 0;

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

//Enums
enum {
  BUTTON_NONE,
  BUTTON_UP,
  BUTTON_DOWN,
  BUTTON_LEFT,
  BUTTON_RIGHT,
  BUTTON_SELECT,
};

void setup() {
  //Init Serial USB
  Serial.begin(9600);
  Serial.println(F("Initialize System"));
  //Init LCD16x2 Shield
  lcd.begin(16, 2);
  lcd.print(F("Hello World "));
  delay(2000);
  lcd.clear();
  lcd.print(F("Button pressed: "));
}

void loop() {
  btnListener(getBtnPressed());
}

void btnListener(byte btnStatus) { /* function btnListener */
  //// Get button value when pressed
  lcd.setCursor(0, 1);
  switch (btnStatus) {
    case BUTTON_UP:
      lcd.print(F("UP     "));
      lcd.print(btnsVal);
      break;

    case BUTTON_DOWN:
      lcd.print(F("DOWN   "));
      lcd.print(btnsVal);
      lcd.print("   ");
      break;

    case BUTTON_LEFT:
      lcd.print(F("LEFT   "));
      lcd.print(btnsVal);
      lcd.print("   ");
      break;

    case BUTTON_RIGHT:
      lcd.print(F("RIGHT  "));
      lcd.print(btnsVal);
      lcd.print("   ");
      break;

    case BUTTON_SELECT:
      lcd.print(F("SELECT "));
      lcd.print(btnsVal);
      lcd.print("   ");
      break;

    default://case BUTTON_NONE:
      //lcd.print(F("       "));
      break;
  }
  delay(100);
}

byte getBtnPressed() { /* function getBtnPressed */
  //// Get button value when pressed
  btnsVal = analogRead(btnsPin);
  if (btnsVal < 50)
    return BUTTON_RIGHT;
  else if (btnsVal < 250)
    return BUTTON_UP;
  else if (btnsVal < 350)
    return BUTTON_DOWN;
  else if (btnsVal < 450)
    return BUTTON_LEFT;
  else if (btnsVal < 650)
    return BUTTON_SELECT;
  else
    return BUTTON_NONE;
}

Aplicações

Fontes

Retrouvez nos tutoriels et d’autres exemples dans notre générateur automatique de code
La Programmerie

Exit mobile version