sábado, 17 de junho de 2017

Criando caracteres especiais no display LCD

Caracteres especiais no LCD



Nesse tutorial, vamos demonstrar como criar caracteres especiais para aplicação em projetos com microcontroladores. 
Os conceitos aplicados podem ser adotados em qualquer modelo de placa que o usuário tiver mais afinidade em usar, levando sempre, em consideração as diferenças e particularidades entre elas.
No caso estarei demonstrando com o módulo Node MCU.
A aplicação de caracteres especiais podem ser necessários em aplicações onde, muitas vezes precisa-se inserir na tela do LCD uma aplicação exclusiva.
No tutorial também estarei usando um módulo I2C para display. Esse módulo tem a praticidade de utilizar somente 4 fios de ligação, 2 para alimentação e 2 para dados.

Componentes

Módulo NodeMCU
Módulo I2C
Display LCD 16x2
Fonte de protoboard 5 Vcc/ 3.3 Vcc
Protoboard e cabos jumpers

Deve ser feita a ligação dos componentes conforme o esquema.

fonte: próprio autor

Para melhor entendimento do funcionamento do display LCD deve-se ter o conhecimento de que o display é dividido da seguinte maneira: quando em sua especificação denomina-se 16x2 quer dizer que a tela está dividida em 16 colunas e 2 linhas.

fonte: blog baú da eletrônica

Em cada divisão das colunas com as linhas existem segmentos que numa visão ampliada divide-se em outro segmentos de 5 colunas e 8 linhas.


fonte: próprio autor

Para formar a figura que atenda a necessidade do programador, o caractere pode ser feito na divisão dos segmentos ou em vários segmentos e serem agrupados no display.
O programa (LCDv1.0) pode auxiliar na organização dos seguimentos para formar caracteres mais complexos.



fonte: próprio autor

O programa facilita, cabendo ao usuário inserir os bits conforme os caracteres necessários.

Código fonte

O código exibido abaixo é um exemplo utilizado, que pode ser visto melhor no vídeo, ao final desse tutorial.

//Caracteres Display LCD 16 x 2
//Autor: Tony Emerson Marim
//===http://www.mecatronizando.com.br===
 
#include <Wire.h>  //INCLUSÃO DE BIBLIOTECA
#include <LiquidCrystal_I2C.h> //INCLUSÃO DE BIBLIOTECA

LiquidCrystal_I2C lcd(0x3F, 16, 2); //FUNÇÃO DO TIPO "LiquidCrystal_I2C"
 
// copiar para aqui o codigo fornecido pela aplicação de criar caracteres
// caracter 1
byte punho[8] = {
B00000,
B00000,
B11111,
B11111,
B11111,
B11111,
B11111,
B00000
};
// caracter 2
byte mao[8] = {
  B10000,
  B11000,
  B11111,
  B11111,
  B11111,
  B11111,
  B11111,
  B11111
};
// caractere 3
byte youtube[8] = {
  B11111,
  B11111,
  B01111,
  B00111,
  B00111,
  B01111,
  B11111,
  B11111
};
 byte youtube2[8] = {
  B11111,
  B11110,
  B11110,
  B11110,
  B11110,
  B11110,
  B11110,
  B11111
};
void setup() 
{

  lcd.init();   // INICIALIZA O DISPLAY LCD
  lcd.backlight(); // HABILITA O BACKLIGHT (LUZ DE FUNDO)


lcd.createChar(1, punho);

lcd.createChar(2, mao);

lcd.createChar(3, youtube);

lcd.createChar(4, youtube2);

lcd.begin(16, 2); //inicializa o LCD 16x2
 
lcd.setCursor(0, 0); //aponta para coluna 0, linha 2
lcd.write(1); //escreve o caracter
lcd.setCursor(1, 0); //aponta para coluna 0, linha 2
lcd.write(2); //escreve o caracter
lcd.setCursor(2, 0);
lcd.print(" ****CURTA****");
lcd.setCursor(1, 1); //aponta para coluna 0, linha 2
lcd.write(3); //escreve o caracter
lcd.setCursor(0, 1); //aponta para coluna 0, linha 2
lcd.write(4); //escreve o caracter
lcd.setCursor(2,1);
lcd.print(" -INSCREVA-SE- ");
 
}
 
void loop() 
{

}


fonte: próprio autor

Para elaborar os mais diferentes caracteres que atenda a função do usuário é só deixar a imaginação fluir.



Gostou? Curta e Compartilhe a FanPage!
Assine o canal!
Adquira seus componentes!

Caso seja necessário, os arquivos apresentados podem ser baixados por esse LINK!

Bons estudos!

quinta-feira, 15 de junho de 2017

Conectando display LCD ao NodeMCU

Conectando display LCD ao NodeMCU


fonte: próprio autor

Esse tutorial vai ser destinado ao usuário que pretende realizar uma ligação entre o NodeMCU e um display LCD com I2C. 
As informações exibidas no display deverão aparecer de forma estática, onde são trocadas depois de um período e de maneira em que rolam da direita para a esquerda.

Para esse projeto vai ser utilizado:


Esquema

A ligação do circuito é bastante simple, para ligar o display LCD ao NodeMCU, foi utilizado somente duas portas digitais do módulo D1 e D2, além do VCC e GND.
O módulo I2C torna o projeto ainda mais prático, pois otimiza o uso de pinos e sua conexão é direta com o display.


fonte: próprio autor


Com as ligações feitas é necessário carregar os códigos na IDE do Arduino e testar o projeto.
Selecione a placa utilizada, NodeMCU e a porta COM. Caso seja iniciante no uso dos módulos relacionados, acesse o tutorial de uso pelos atalhas NodeMCU e I2C.

Código 1

Nesse código as informações exibidas no NodeMCU trocam conforme o delay especificado, de forma estática.

//Tony Emerson Marim em 15/06/2017.
/** mecatronizando@gmail.com **/
/** Display LCD **/

#include <Wire.h>  //INCLUSÃO DE BIBLIOTECA
#include <LiquidCrystal_I2C.h> //INCLUSÃO DE BIBLIOTECA

LiquidCrystal_I2C lcd(0x3F, 16, 2); //FUNÇÃO DO TIPO "LiquidCrystal_I2C"
 
void setup()
{
  lcd.init();   // INICIALIZA O DISPLAY LCD
  lcd.backlight(); // HABILITA O BACKLIGHT (LUZ DE FUNDO) 
}

void loop()
{
 lcd.clear();
 lcd.setCursor(2, 0);
 lcd.print("Mecatronizando"); // EXIBE O TEXTO DA PRIMEIRA LINHA
 lcd.setCursor(0, 1);
 lcd.print("ESP8266 nodeMCU"); // EXIBE TEXTO DA SEGUNDA LINHA
 delay(5000);//TEMPO EM QUE PERMANECE EXIBINDO
 lcd.clear();// LIMPA O DISPLAY
 lcd.setCursor(0, 0);
 lcd.print("Tutoriais"); // EXIBE O SEGUNDO TEXTO NA PRIMEIRA LINHA
 lcd.setCursor(0, 1);
 lcd.print("CompartilheCURTA"); // EXIBE O SEGUNDO TEXTO NA SEGUNDA LINHA
 delay(5000);
}

Código 2

No segundo exemplo, os textos a serem exibidos devem rolar da direita para esquerda, exibindo constantemente.

//Tony Emerson Marim em 15/06/2017.
/** mecatronizando@gmail.com **/
// Baseado no programa original de Nishant Arora 
/** Display LCD_2 **/

#include <Wire.h>  //INCLUSÃO DE BIBLIOTECA
#include <LiquidCrystal_I2C.h> //INCLUSÃO DE BIBLIOTECA

LiquidCrystal_I2C lcd(0x3F, 16, 2); //FUNÇÃO DO TIPO "LiquidCrystal_I2C"
 
//line1 = TEXTO DA ROLAGEM SUPERIOR
String line1 = "Mecatronizando: www.mecatronizando.com.br/ curta / inscreva-se / compartilhe"; 
 
//line2 = TEXTO DA LINHA INFERIOR  
String line2 = "-MECATRONIZANDO-";  
   
// REFERENCE FLAGS 
int stringStart, stringStop = 0;  
int scrollCursor = 16;  
int tamanho =0;  
   
void setup() 
{  
  lcd.init();   // INICIALIZA O DISPLAY LCD
  lcd.backlight(); // HABILITA O BACKLIGHT (LUZ DE FUNDO)   
}  
   
void loop() 
{  
  lcd.setCursor(scrollCursor, 0);  
  lcd.print(line1.substring(stringStart,stringStop));  
  lcd.setCursor(0, 1);  
  lcd.print(line2);  
 
  delay(200); //TEMPO DE TRANSPOSIÇÃO DA ROLAGEM 
  scroll_sup(); //ROTINA DA ROLAGEM

  //VERIFICA TAMANHO DA STRING 
  tamanho = line1.length();  
  if (stringStart == tamanho)  
  {  
    stringStart = 0;  
    stringStop = 0;  
  }  
}  
//ROTINA DE ROLAGEM 
void scroll_sup()  
{  
  lcd.clear();  
  if(stringStart == 0 && scrollCursor > 0)
  {  
    scrollCursor--;  
    stringStop++;  
  } else if (stringStart == stringStop){  
    stringStart = stringStop = 0;  
    scrollCursor = 16;  
  } else if (stringStop == line1.length() && scrollCursor == 0) {  
    stringStart++;  
  } else {  
    stringStart++;  
    stringStop++;  
  }  
}

No vídeo abaixo possível ver o funcionamento do projeto.



Se necessário, por meio deste LINK é possível baixar os arquivos e bibliotecas relacionadas ao projeto.

Curta! Compartilhe e Inscreva-se no Canal!

Todos os componentes utilizados podem ser adquiridos por esse LINK!


Bons estudos!