fbpixel
Etiquetas: , , ,

Um dos elementos de exibição de informação mais utilizados no mundo Arduino é o ecrã de cristal líquido (Liquid Crystal Display) LCD 16×2 . Ao construirmos um sistema eletrônico, pode ser interessante que ele nos informe sobre o seu estado sem precisar ser conectado a um computador ou a outro sistema, como um smartphone. O ecrã LCD 16×02 é fornecido com muitos kits Arduino e é suficiente para diversas aplicações.

Material

  • Computador
  • Arduino UNO
  • Cabo USB para ligar o Arduino ao computador
  • Ecrã LCD 16×2
  • 1 resistor 220 Ohm
  • 1 resistor 1k Ohm ou potenciómetro
  • Cabos Dupont M/M

Visão geral do ecrã LCD 16×2

Os ecrãs de cristais líquidos fazem uso da propriedade de modulação da luz dos cristais líquidos. Os ecrãs de cristais líquidos 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 uma 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.

screen-lcd-16x2 Gerir um ecrã LCD 16×2 com Arduino

Esquema de ligação

O LCD 16×2 tem 16 pinos para permitir controlar a exibição e o contraste.

  • VSS Conectado à terra do ecrã
  • VDD Pino de alimentação. Tipicamente ligado ao pino de 5V do Arduino.
  • V0 Pino de contraste. Ligado a uma saída PWM ou a um potenciômetro.
  • RS Register Select. Permite selecionar a zona de memória.
  • RW Read or Write Sempre ligado à terra.
  • E enable. Ativa ou desativa a exibição
  • D0 modo 8bits.4 bits mais significativos da comunicação I2C
  • Modo D1 8bits.4 bits mais significativos da comunicação I2C
  • Modo D2 8bits.4 bits mais significativos da comunicação I2C
  • Modo D3 8bits.4 bits mais significativos da comunicação I2C
  • D4 4 bits menos significativos da comunicação I2C
  • D5 4 bits menos significativos da comunicação I2C
  • D6 4 bits menos significativos da comunicação I2C
  • D7 4 bits menos significativos da comunicação I2C
  • A anode. Terminal + terminal do LED de retroiluminação
  • K katode. Terminal – do LED de retroiluminação

screen-lcd-16x2-arduino_bb Gerir um ecrã LCD 16×2 com Arduino
Montagem com resistor
screen-lcd-16x2-potentiometer-arduino_bb Gerir um ecrã LCD 16×2 com Arduino
Montagem com potenciómetro

Código

Com o módulo devidamente conectado, pode alterar o código a seguir para obter a funcionalidade desejada. No exemplo seguinte, criamos uma contagem regressiva.

Para gererenciar o ecrã LCD 16×2 no programa,é utilizada a biblioteca LiquidCrystal.h.

  • LiquidCrystal lcd(rs, en, d4, d5, d6, d7) para definir a comunicação 4bit i2c
  • lcd.begin(16, 2); exibe o texto nas duas linhas
  • lcd.print() para exibir uma cadeia de caracteres em ASCII
  • lcd.write() para exibir dados, um byte de cada vez.
  •  lcd.setCursor(x, y) para posicionar o cursor (coluna x: 0-16, linha y:0-2)
  • lcd.clear() para limpar o que é exibido no ecrã
/*
 * Liquid cristal counter
 */

// Library
#include <LiquidCrystal.h>


// Initalisation de la librairie
//LiquidCrystal lcd(12, 11, 5, 4, 3, 2);
const int rs = 2, en = 3, d4 = 4, d5 = 5, d6 = 6, d7 = 7;
LiquidCrystal lcd(rs, en, d4, d5, d6, d7);

long timeInit=0; //min
int tHour=1;
int tMin=26;
int tSec=35;


void setup() {
  // set up the LCD's number of columns and rows: 
  lcd.begin(16, 2);
  analogWrite(8,15);
  // Affiche un message
  lcd.print("Alarm buzz in : ");
  timeInit=timeToCounter(tHour,tMin,tSec);
}

void loop() {
  // Affichage digitale de l'heure
  counterToTime(timeInit);
  lcd.setCursor(0, 1);// place le curseur au 1er caractère de la 2nde ligne
  lcd.print(tHour);
  lcd.print(" h ");  
  lcd.print(tMin);  
  lcd.print(" m ");
  lcd.print(tSec);
  lcd.print(" s");
  
  delay(1000); // Attend 1 second
  timeInit=timeInit-1;
}

int timeToCounter(int h,int m,int s){
  return h*3600+m*60+s;
}

void counterToTime(long cnt){
  tHour=(cnt/3600);
  tMin= (cnt%3600)/60;
  tSec = ((cnt%3600)%60);
}

Aplicação

Fonte

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