Estava aqui observando os meus posts usando display LCD 16×2 e notei uma coisa: todos os circuitos usam os pinos D4, D5, D6 e D7 do display, mas nenhum usa os pinos D0, D1, D2 e D3. Se o display funciona corretamente, pra que servem esses pinos, afinal ?
Esse tipo de display pode funcionar em modo 4 bits (usando 4 pinos), ou no modo 8 bits, usando todos os pinos de dados. Certamente quem usa o Arduino Uno e outras placas Arduino menores precisa economizar portas, especialmente se for ligar, ao mesmo tempo, o display e vários sensores.
“Teoricamente” (prestem atenção às aspas), se você necessita de uma taxa de atualização mais eficiente do display e não vai utilizar tantos sensores, pode utilizar o modo de 8 bits e observar um ganho de performance no LCD.
Conexão do display LCD 16×2 em modo 8 bits
Para tentar observar isso, liguei um display com o controlador HD44780 na protoboard, utilizando 8 pinos, e rodei o programa exemplo que vem junto com a biblioteca Liquid Crystal, chamado Autoscroll. Para a montagem do circuito, utilizei a tabela abaixo:
Seguindo a tabela acima, temos a seguinte conexão com uma placa Arduino Uno:
O comando LiquidCrystal tem a seguinte sintaxe se você for usar o display no modo 4 bits:
LiquidCrystal(rs, enable, d4, d5, d6, d7)
Já no modo 8 bits, basta acrescentar os pinos referentes ao D0, D1, D2 e D3 do display:
LiquidCrystal(rs, enable, d0, d1, d2, d3, d4, d5, d6, d7)
Então no programa eu coloquei os dois comandos, e você mesmo pode comentar uma linha ou outra. Teste os dois modos e veja se para você faz alguma diferença:
// Programa: Teste LCD 16x2 em modo 8 bits // Autor: Arduino e Cia // include the library code: #include <LiquidCrystal.h> //Habilite a linha abaixo se for usar o display no modo 4 bits //LiquidCrystal lcd(12, 11, 5, 4, 3, 2); //Modo 4 bits //Habilite a linha abaixo se for usar o display no modo 8 bits LiquidCrystal lcd(12, 11, 6, 7, 8, 9, 5, 4, 3, 2); //Modo 8 bits void setup() { // set up the LCD's number of columns and rows: lcd.begin(16,2); } void loop() { // set the cursor to (0,0): lcd.setCursor(0, 0); // print from 0 to 9: for (int thisChar = 0; thisChar < 10; thisChar++) { lcd.print(thisChar); delay(500); } // set the cursor to (16,1): lcd.setCursor(16,1); // set the display to automatically scroll: lcd.autoscroll(); // print from 0 to 9: for (int thisChar = 0; thisChar < 10; thisChar++) { lcd.print(thisChar); delay(500); } // turn off automatic scrolling lcd.noAutoscroll(); // clear screen for the next loop: lcd.clear(); }
Faz diferença ? Na minha opinião, pouquíssima. A não ser que o seu programa exija muito do display, o que eu acho um pouco difícil. Em se tratando de um display basicamente para texto, não vale a pena gastar 4 pinos a mais do Arduino para usar o modo de 8 bits.
Vale o aprendizado e para usos futuros, quem sabe em outros displays.
Você fez o teste do display LCD 16×2 em modo 8 bits? Notou diferença? Compartilhe a sua opinião na área de comentários e confira outros posts usando displays aqui mesmo no Arduino e Cia!