Ligar um display LCD 16×2 na Raspberry Pi é uma tarefa muito simples, e você pode fazer isso utilizando somente 6 pinos da placa. Existe também a possibilidade de utilizar um módulo I2C (2 pinos), mas isso será assunto para um outro post.
No post de hoje vamos mostrar como enviar caracteres para o display mostrando o endereço IP do Raspberry. Esse esquema pode ser muito útil quando você precisa obter rapidamente informações sobre o endereço IP da placa, especialmente quando o endereço é obtido via DHCP.
O display que vamos usar é um LCD comum 16×2, com controlador HD44780. Para conexão ao Raspbeerry Pi vamos usar os pinos RS e E, mais os 4 pinos de dados (D4 a D7). Como vamos apenas escrever no display, conectamos o pino RW no GND. A alimentação do display será feita por meio de um dos pinos 5V do Rasberrpy.
Na figura abaixo, mostramos a pinagem do display LCD e a ligação aos pinos do Raspberry que vamos utilizar no circuito de testes:
Você pode modificar os pinos de ligação de acordo com as suas necessidades, utilizando as outras portas da Raspberry Pi. Nesse caso, não esqueça de alterar a configuração também no programa.
Conexão display LCD 16×2 na Raspberry Pi
Faça a ligação do display conforme a relação mostrada acima. O potenciômetro de 10K serve para ajuste do contraste.
Verifique as características do display (corrente exigida pelo backlight) e se necessário adicione um resistor de 1K entre o pino 15 e o Vcc, evitando sobrecarregar o Raspberry. Esse resistor não é necessário para os displays mais comuns que usam LED como backlight e consomem por volta de 40mA.
Instalação biblioteca LCD
Certifique-se de que o seu Raspberry está conectado à internet e execute os comandos abaixo no LX Terminal. Não se preocupe com mensagens de erro informando que os pacotes já estão instalados:
sudo apt-get update sudo apt-get install build-essential python-dev python-smbus python-pip git sudo pip install RPi.GPIO
Como biblioteca, vamos usar a Adafruit_Python_CharLCD. Faça o download da biblioteca e a instalação executando os comandos:
cd ~ git clone https://github.com/adafruit/Adafruit_Python_CharLCD.git cd Adafruit_Python_CharLCD sudo python setup.py install
Após o download e instalação, você terá uma pasta chamada Adafruit_Python_CharLCD e dentro dela uma pasta chamada EXAMPLES. Dentro desssa pasta você encontra programas para enviar texto simples ao display, usar displays RGB e conectar o LCD ao Raspberry usando pinos PWM.
Teste o display abrindo o IDLE e copie o programa abaixo:
# Programa : Teste display LCD 16x2 e Raspberry Pi B+
# (mostra Texto e endereco IP)
# Autor : Arduino e Cia
import Adafruit_CharLCD as LCD
import socket
import os
import time
# Le as informacoes do endereco IP
gw = os.popen("ip -4 route show default").read().split()
s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
s.connect((gw[2], 0))
ipaddr = s.getsockname()[0]
# Pinos LCD x Raspberry (GPIO)
lcd_rs = 18
lcd_en = 23
lcd_d4 = 12
lcd_d5 = 16
lcd_d6 = 20
lcd_d7 = 21
lcd_backlight = 4
# Define numero de colunas e linhas do LCD
lcd_colunas = 16
lcd_linhas = 2
# Configuracao para display 20x4
# lcd_colunas = 20
# lcd_linhas = 4
# Inicializa o LCD nos pinos configurados acima
lcd = LCD.Adafruit_CharLCD(lcd_rs, lcd_en, lcd_d4, lcd_d5,
lcd_d6, lcd_d7, lcd_colunas, lcd_linhas,
lcd_backlight)
# Imprime texto na primeira linha
lcd.message(' Arduino e Cia \n')
# Mostra o endereco IP na segunda linha
lcd.message('IP %s' %(ipaddr))
# Aguarda 10 segundos
time.sleep(10.0)
# Scroll de texto esquerda/direita
while 1:
lcd.clear()
message = 'Arduino e Cia'
lcd.message(message)
lcd.message('\nRaspberry Pi')
for i in range(lcd_colunas-len(message)):
time.sleep(0.5)
lcd.move_right()
for i in range(lcd_colunas-len(message)):
time.sleep(0.5)
lcd.move_left()
O programa mostra o texto “Arduino e Cia” na primeira linha do display, e o endereço IP da placa na linha inferior. Após alguns segundos, a tela é apagada e é mostrado um novo texto com aplicação do efeito scroll (rolagem) horizontal. Abaixo, o vídeo com o programa em funcionamento:
Gostou? Confira outros posts usando Raspberry Pi aqui mesmo no Arduino e Cia!