Como instalar um display LCD em seu servidor Linux
Este artigo traz um breve resumo de como instalar um display LCD de 4x20 caracteres em seu sistema operacional Linux. Este display é muito útil para visualizar o estado de um terminado serviço e/ou hardware sem a necessidade de ter um monitor ligado à CPU. Podemos também usá-lo para o desenvolvimento de produtos embarcados usando o Linux.
Hardware
Usar um LCD compatível com o controlador HD44780 e uma porta paralela
disponível, pois este tutorial usa a porta paralela para enviar os
comando de comportamento do LCD. Nos links abaixo existem algumas
informações referentes a confecção do cabo e o esquema elétrico:
- http://www.datakoders.netfirms.com/txt/lcd.html
- http://200.206.129.1/marcelo/esquema_pcinfo.html
- http://www.displaytec.com.br/produtos.htm
- http://www.rogercom.com/CursoOnline/Principal.htm
Para maiores informações de hardware, entre em contato com o meu sócio Alexandre (alexandrecastro@netitec.com.br), pois foi ele que providenciou todo o funcionamento do meu display.
Páginas do artigo
1. Hardware2. Instalação do software
Outros artigos deste autor
Apache Cassandra NoSQL, uma tecnologia emergente
Criando aplicativos para o Mac OS X no GNU/Linux
Leitura recomendada
Conexão wireless ad-hoc no Ubuntu - relato de experiência
Instalando sidux em pendrive para usar como "Canivete Suíço"
Placa de rede wireless Encore ENUWI-G2 COM CHIP RTL8187B no Linux
Comentários
Cabelo, show de bola o artigo, me amarrei neste recurso. Você sabe informar qual é o custo aproximado da confecção de um LCD similar ao seu? Ou até mesmo quanto custa um pronto?
Muito maneiro cabelo, muito interessante mesmo!!!
O seu uso atual destes LCD está sendo para que fins? (espécie de trabalhos).
Ah... parabéns pelo artigo, como sempre inovando!!!
O seu uso atual destes LCD está sendo para que fins? (espécie de trabalhos).
Ah... parabéns pelo artigo, como sempre inovando!!!
no escricorio tem mas de 20X2
pelo que li ai nos htmls no inicio do artigo nao parece nada complicado e sim somente questao de solda
este artigo e bem inovador e legal nunca fiquei tao curioso em fazer algo
pelo que li ai nos htmls no inicio do artigo nao parece nada complicado e sim somente questao de solda
este artigo e bem inovador e legal nunca fiquei tao curioso em fazer algo
Fala Galera:
Com relação ao custo e onde encontrar, entre em contato com o Junior(jucaq@mdbrasil.com.br) aqui na empresa (pode usar o meu nome para contato). Pois ele está adquirindo 3 unidades, e ele pois passar todos os parametros ref. a custo.
Agora sobre dúvidas técnicas entre em contato como o Indio (alexandrecastro@netitec.com.br). O cara é ninja pois foi ele que soldou os cabos para a minha máquina.
Até mais.
Com relação ao custo e onde encontrar, entre em contato com o Junior(jucaq@mdbrasil.com.br) aqui na empresa (pode usar o meu nome para contato). Pois ele está adquirindo 3 unidades, e ele pois passar todos os parametros ref. a custo.
Agora sobre dúvidas técnicas entre em contato como o Indio (alexandrecastro@netitec.com.br). O cara é ninja pois foi ele que soldou os cabos para a minha máquina.
Até mais.
no site www.casemodbr.com tem uns lcds prontos para vender quem quiser de uma olhada... outra coisa
SHOW DE BOLA Cabelo, pelo seu programa, e o que eh muito legal mesmo ele ser bem simples e vc estar abrindo ele para comunidade software livre desenvolver com vc :DD
como vou instalar um lcd aki em casa, nas ferias estarei dando uma olhada no seu codigo e quem sabe dar um implementada ;)
Grato
REPOLHO
www.repolho.org
SHOW DE BOLA Cabelo, pelo seu programa, e o que eh muito legal mesmo ele ser bem simples e vc estar abrindo ele para comunidade software livre desenvolver com vc :DD
como vou instalar um lcd aki em casa, nas ferias estarei dando uma olhada no seu codigo e quem sabe dar um implementada ;)
Grato
REPOLHO
www.repolho.org
Não existe o #include <conio.h> no Linux. Como você compilou o código?
Galera o Indio (alexandrecastro@netitecom.br) montou o cabo no padráo do site CASEMODBR ( http://www.casemodbr.com/tutoriais/index.php )
Por questäo de compartibilidade com outros softwares.
E o tutorial está muito bem explicado. Não compensa refazer um novo tutorial.
Graças a ele (pois eu sou leigo em eletrônica) foi possível adptar este tutorial com facilidade para o padrão da CASEMODBR.
Basta substituir as seguintes linhas no arquivo lcd.h:
-------------| ANTIGA LINHAS |---------------------
//#define INSTRUCAO 7 // $37A - 0111
//#define FIM_INSTRUCAO 12 // $37A - 1100
//#define DADO 6 // $37A - 0110
-------------| NOVAS LINHAS |---------------------
#define INSTRUCAO 0 // $37A - 0111
#define FIM_INSTRUCAO 5 // $37A - 1100
#define DADO 4 // $37A - 0110
----------------------------------------------------
Pronto!! basta recompilar o software.
PS: Fabio e comunidade mande um e-mail agradecendo o Alexandre, pois o numero de e-mails que recebi referente a duvidas sobre o cabo foi impressionante.
Até mais!!!
CD ..
Por questäo de compartibilidade com outros softwares.
E o tutorial está muito bem explicado. Não compensa refazer um novo tutorial.
Graças a ele (pois eu sou leigo em eletrônica) foi possível adptar este tutorial com facilidade para o padrão da CASEMODBR.
Basta substituir as seguintes linhas no arquivo lcd.h:
-------------| ANTIGA LINHAS |---------------------
//#define INSTRUCAO 7 // $37A - 0111
//#define FIM_INSTRUCAO 12 // $37A - 1100
//#define DADO 6 // $37A - 0110
-------------| NOVAS LINHAS |---------------------
#define INSTRUCAO 0 // $37A - 0111
#define FIM_INSTRUCAO 5 // $37A - 1100
#define DADO 4 // $37A - 0110
----------------------------------------------------
Pronto!! basta recompilar o software.
PS: Fabio e comunidade mande um e-mail agradecendo o Alexandre, pois o numero de e-mails que recebi referente a duvidas sobre o cabo foi impressionante.
Até mais!!!
CD ..
juca_tigre, basta vc trocar o <conio.h> dentro do arquivo lcd.cc para "conio.h"
**************** .''`.
* Sandro Cória * : :' :
* GNU/Linux Debian * `. `'`
**************** `-
**************** .''`.
* Sandro Cória * : :' :
* GNU/Linux Debian * `. `'`
**************** `-
Eu fiz a compilação mas não funcionou. Por exemplo, quando digito lcd cls, ele limpa a tela do meu micro e o lcd nem responde, se digito lcd display 1 1 "teste" ele imprime na tela ao invés de imprimir no lcd.
Alguém tem idéia de como resolver isso.
Valeu.
Alguém tem idéia de como resolver isso.
Valeu.
dcarva, siga os passos do comentario do "cabelo" que tudo dara certo, pois eu passei por isso tb com o codigo-fonte original.
Abracos,
[]'s Fabio Gil
Abracos,
[]'s Fabio Gil
Cara!!! sem comentarios... tava querendo isso, me amarro em casamodding!!
Infelizmente qualquer instrução que eu mando imprimir no meu LCD ele só retorna a mensagem:
Segmentation fault
Isso no Slackware 10
Segmentation fault
Isso no Slackware 10
Cabelo, seu artigo ficou ótimo, fiz aq eu deu tudo certo, adicionei o comentario do skun e mudei o "conio.h" mas o meu LCD eh de 16X4 e na hora que eu rodo o script ele imprimi caracteres estranhos, vc podeira me ajudar??? valeus
Eu segui tudo passo a passo, compilei o programa, mas na hora de executar ele limpa a tela e nao da mensagem nenhuma e se eu executo o lcd que esta em /bin/lcd é retornado a seguinte mensagem: SEGMENTATION FAULT
ai o site com os arquivos pra download tah fora do ar cara como faço pra downlodea eles agora =/ fikei sabendo ke os da LCD da telefonica(tem uns malandros ke rancam do orelhao) fikei sabendo ke eles funcionam tb mais nao sei nao ele parece diferente desse ke vendem xD~~
Muito bom o artigo, só que quando fui compilar deu o seguinte erro, como não muito bom em programação, não sei o que está dando errado.
[root@lua lcd]# g++ lcd.cc -o lcd
lcd.cc:4:20: iostream: Arquivo ou diretório não encontrado
lcd.cc:5:19: fstream: Arquivo ou diretório não encontrado
In file included from lcd.cc:7:
conio.h:9:19: stdio.h: Arquivo ou diretório não encontrado
In file included from lcd.cc:7:
conio.h: In function `void textbkground(char*)':
conio.h:33: error: `printf' undeclared (first use this function)
conio.h:33: error: (Each undeclared identifier is reported only once for each
function it appears in.)
conio.h: In function `void textcolor(char*)':
conio.h:38: error: `printf' undeclared (first use this function)
conio.h: In function `void clrscr()':
conio.h:42: error: `printf' undeclared (first use this function)
conio.h: In function `void gotoxy(int, int)':
conio.h:47: error: `printf' undeclared (first use this function)
lcd.cc:8:48: unistd.h: Arquivo ou diretório não encontrado
lcd.cc:9:20: sys/io.h: Arquivo ou diretório não encontrado
lcd.cc: At global scope:
lcd.cc:25: error: type specifier omitted for parameter `string'
lcd.cc:25: error: parse error before `)' token
lcd.cc: In member function `void LCD::WritePort(long unsigned int, long
unsigned int)':
lcd.cc:33: error: `outb' undeclared (first use this function)
lcd.cc: In member function `void LCD::INICIALIZA()':
lcd.cc:43: error: `usleep' undeclared (first use this function)
lcd.cc: In member function `void LCD::CURSOR(bool)':
lcd.cc:77: error: `usleep' undeclared (first use this function)
lcd.cc: In member function `void LCD::Mostra_LCD(char)':
lcd.cc:91: error: `usleep' undeclared (first use this function)
lcd.cc: At global scope:
lcd.cc:96: error: type specifier omitted for parameter `string'
lcd.cc:96: error: parse error before `)' token
lcd.cc: In member function `void LCD::POSICAO(...)':
lcd.cc:101: error: `L' undeclared (first use this function)
lcd.cc:113: error: `C' undeclared (first use this function)
lcd.cc:117: error: `usleep' undeclared (first use this function)
lcd.cc:118: error: `Texto' undeclared (first use this function)
lcd.cc:121: error: `cout' undeclared in namespace `std'
lcd.cc:121: error: `endl' undeclared in namespace `std'
lcd.cc: In member function `void LCD::CLS()':
lcd.cc:132: error: `sleep' undeclared (first use this function)
lcd.cc: In function `int main(int, char**)':
lcd.cc:141: error: `string' undeclared (first use this function)
lcd.cc:141: error: parse error before `;' token
lcd.cc:146: error: `fstream' undeclared (first use this function)
lcd.cc:146: error: parse error before `(' token
lcd.cc:147: error: `input_file' undeclared (first use this function)
lcd.cc:147: error: `hex' undeclared (first use this function)
lcd.cc:155: error: `ioperm' undeclared (first use this function)
lcd.cc:158: error: `mComando' undeclared (first use this function)
lcd.cc:168: error: `atoi' undeclared (first use this function)
[root@lua lcd]# g++ lcd.cc -o lcd
lcd.cc:4:20: iostream: Arquivo ou diretório não encontrado
lcd.cc:5:19: fstream: Arquivo ou diretório não encontrado
In file included from lcd.cc:7:
conio.h:9:19: stdio.h: Arquivo ou diretório não encontrado
In file included from lcd.cc:7:
conio.h: In function `void textbkground(char*)':
conio.h:33: error: `printf' undeclared (first use this function)
conio.h:33: error: (Each undeclared identifier is reported only once for each
function it appears in.)
conio.h: In function `void textcolor(char*)':
conio.h:38: error: `printf' undeclared (first use this function)
conio.h: In function `void clrscr()':
conio.h:42: error: `printf' undeclared (first use this function)
conio.h: In function `void gotoxy(int, int)':
conio.h:47: error: `printf' undeclared (first use this function)
lcd.cc:8:48: unistd.h: Arquivo ou diretório não encontrado
lcd.cc:9:20: sys/io.h: Arquivo ou diretório não encontrado
lcd.cc: At global scope:
lcd.cc:25: error: type specifier omitted for parameter `string'
lcd.cc:25: error: parse error before `)' token
lcd.cc: In member function `void LCD::WritePort(long unsigned int, long
unsigned int)':
lcd.cc:33: error: `outb' undeclared (first use this function)
lcd.cc: In member function `void LCD::INICIALIZA()':
lcd.cc:43: error: `usleep' undeclared (first use this function)
lcd.cc: In member function `void LCD::CURSOR(bool)':
lcd.cc:77: error: `usleep' undeclared (first use this function)
lcd.cc: In member function `void LCD::Mostra_LCD(char)':
lcd.cc:91: error: `usleep' undeclared (first use this function)
lcd.cc: At global scope:
lcd.cc:96: error: type specifier omitted for parameter `string'
lcd.cc:96: error: parse error before `)' token
lcd.cc: In member function `void LCD::POSICAO(...)':
lcd.cc:101: error: `L' undeclared (first use this function)
lcd.cc:113: error: `C' undeclared (first use this function)
lcd.cc:117: error: `usleep' undeclared (first use this function)
lcd.cc:118: error: `Texto' undeclared (first use this function)
lcd.cc:121: error: `cout' undeclared in namespace `std'
lcd.cc:121: error: `endl' undeclared in namespace `std'
lcd.cc: In member function `void LCD::CLS()':
lcd.cc:132: error: `sleep' undeclared (first use this function)
lcd.cc: In function `int main(int, char**)':
lcd.cc:141: error: `string' undeclared (first use this function)
lcd.cc:141: error: parse error before `;' token
lcd.cc:146: error: `fstream' undeclared (first use this function)
lcd.cc:146: error: parse error before `(' token
lcd.cc:147: error: `input_file' undeclared (first use this function)
lcd.cc:147: error: `hex' undeclared (first use this function)
lcd.cc:155: error: `ioperm' undeclared (first use this function)
lcd.cc:158: error: `mComando' undeclared (first use this function)
lcd.cc:168: error: `atoi' undeclared (first use this function)
Cabelo pode me ajudar, fiz tudo de acordo com o artigo mas quando executo o arquivo de teste ele imprime na tela.
Se somente executar o arquivo lcd e da a seguinte mensagem:
[root@isp lcd]# lcd
Falha de segmentação
Estou usando CL10 com kernel 2.6.11
Abraços Evandro Silva
Se somente executar o arquivo lcd e da a seguinte mensagem:
[root@isp lcd]# lcd
Falha de segmentação
Estou usando CL10 com kernel 2.6.11
Abraços Evandro Silva
afeee link quebrado! aonde acho isso ?
Veja Também: http://www2.fateb.br/marcelo/esquema_pcinfo.html
Cabelo..sei que este artigo é antigo...mas se puder me ajudar eu agradeço. No meu caso ele fica imprimindo tudo na tela, assim como outros colegas relataram nos comentarios. Eu baixei os arquivos lá do codigolivre, que já estão modificados para o cabo do casemodbr...Será que tem algo que falta configurar???
Agradeço desde já
Agradeço desde já
Olha só Alessandro... uma coisa que notei: se eu executo o comando lcd display 1 1 "" (string vazia) ele imprime um quadradinho na tela, e o programa entra em loop. Agora se eu executo lcd display 1 1 "aaa" ele imprime na tela......e não no LCD.