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!