• Welcome to LusoRobótica - Robótica em Português.
 

LCD 16x1 + Arduino

Started by LoneWolf, 09 de July de 2010, 13:27

Previous topic - Next topic

0 Members and 1 Guest are viewing this topic.

LoneWolf

Ola e boas tardes a todos, tenho aqui um LCD 16x1 ( HMC16102-SY-PY-2) que retirei de um alarme e já segui os post's do fórum e não consegui escrever nele, para ligar o led dele tive de ligar o pino 15 ao GND e o pino 16 a 5+ os outro pinos fiz igual ao tutorial e só consigo fazer o contraste dos 8 primeiros espaços que devia aparecer caracteres. Não sei o que fazer já vi montes de post's e nada isto teima em não dar, será que esta avariado  :'( ? se poderem ajudar agradecia.

Obrigado e boa continuação  ;) 
Blog: A Visão do Lobo

Nick antigo: kilobyte

amando96

Tens o datasheet? nem todos têm o pinout igual.

fred gomes

os pinos de alimentação e o data Bus do LCD 16 x 1 são os mesmos que o 16 x 2 ( a unica difrença é o nº de colunas)?

penso que deve ser, mas convem confirmares pelo dataheet,
se realmente forem os mesmos segue este tutorial:

http://www.earthshineelectronics.com/optoelectronics/34-16x2-lcd-display-green-on-black.html

vais a "download" e sacas o dataheet do LCD, segue o que lá está , eu quando consegui meter o meu a funcionar pela 1ª vez foi com esse tutorial...

depois dá novidades :) e boa sorte..
cumprimentos,
Fred

LoneWolf

Boas, obrigado fred gomes, agora já da alguma coisa sem ser o contraste, mas agora aparece a palavra escrita mas só " Hello, w" ver onde esta o problema agora mas já é um começo, e mais uma vez obrigado.

Abraços e boa continuação  ;)
Blog: A Visão do Lobo

Nick antigo: kilobyte

FET_Destroyer

Boas kilobyte
Se reparares o teu display só mostra os 8 primeiros caracteres "Hello, w"
É muito provável que ele seja um display de 16x1 mas internamente esteja como um de 8x2, ou seja para escreveres bem Hello, world deves enviar para a segunda linha "orld". Tenta escrever um A na 1 linha e um B na 2 linha e talvez te apareçam caracteres de meio display para a frente.
cumps

LoneWolf

Boas, e como adiciono a 2ª linha ao código? a pouco ainda consegui por números a contar a seguir a palavra "hello, w" agora nem isso  :-\
Blog: A Visão do Lobo

Nick antigo: kilobyte

FET_Destroyer

#6
Em arduino não sei como funciona, voces devem ter ja as bibliotecas feitas, eu uso umas modificadas por mim e sao do genero.
putCHAR(linha,caracter), em linha ponho a linha que o quero por, em caracter meto a posiçao, no meu caso voa de 0 a 15, no teu deve ir de zero a 7. Tenta ver as bibliotecas do arduino, devem haver uma função onde dizes que queres o texto na linha x.
No meu por exemplo tem 4 zonas de memoria que são as linhas
Linha1 - 80 - 8F
Linha2 - C0 - CF, etc
Se souberes o datasheet desse é uma questão de fazeres uma função deste género

void    LCDgoto(char line, char x){
if (line == 1) lcd_cmd(0x80+(x));
if (line == 2)lcd_cmd(0xC0+((x)));
if (line == 3)lcd_cmd(0x90+((x)));
if (line == 4)lcd_cmd(0xD0+((x)));
            }

fred gomes

http://arduino.cc/en/Reference/LiquidCrystalBegin

consulta a biblioteca...
tens de fazer no setup "lcd.begin(8,2)no caso do teu display..

depois para escreveres onde queres (linha e coluna, basta escrever   lcd.setCursor(linha,coluna);(nao te esqueças que a coluna 1 é identificada por 0, e a 2ª por 1, para escreves na 2ª coluna podes fazer por exemplo . lcd.setCursor(0,1);

Boa sorte ;)

cumprimentos,
Fred

LoneWolf

Boas, obrigado pelas dicas  ;) prob resolvido, e so mais uma coisa eu escrevi varias "mensagens" e queria que elas se repetissem que comando tenho de introduzir?

Obrigado por tudo e boa continuação  ;)
Blog: A Visão do Lobo

Nick antigo: kilobyte

fred gomes

se repetissem como assim?
não percebi...
cumprimentos,
Fred

LoneWolf

Boas, eu meti 3 mensagens, aparece a 1ª, 3s depois a 2ª e mais 3s aparece a 3ª e depois faz clear e para por ali e eu queria que as mensagens depois da 3ª volta-se a 1ª. espero que tenha percebido e mais uma vez obrigado pela a ajuda  ;)

Abraços e óptima continuação.
Blog: A Visão do Lobo

Nick antigo: kilobyte

FET_Destroyer

Faz um while(1) e poe essa sequência lá dentro

fred gomes

mostra o código que fizeste..
cumprimentos,
Fred

LoneWolf

boas já tentei return, while e não deu deve faltar alguma coisa, mas ai vai o código

#include <LiquidCrystal.h>

LiquidCrystal lcd(12, 11, 10, 5, 4, 3, 2);

void setup() {
  lcd.begin(8, 2);
  lcd.setCursor(0, 0);
  lcd.print("Ola, Mun");
  lcd.setCursor(0, 1);
  lcd.print("do Nasci");
  delay(3000);
  lcd.clear();
  lcd.setCursor(0, 0);
  lcd.print("LusoRobo");
  lcd.setCursor(0, 1);
  lcd.print("tica.com");
  delay(3000);
  lcd.clear();
  lcd.setCursor(0, 0);
  lcd.print("Obrigado");
  lcd.setCursor(0, 1);
  lcd.print(" a todos");
  delay(3000);
  lcd.clear();
 
}
void loop () {
}


....é certo que ainda não percebo de programação mas estou lendo guias e tentando aplicar.
Blog: A Visão do Lobo

Nick antigo: kilobyte

fred gomes

#14
o setup por norma so é executado uma vez (digo por norma pq se estiveres a a usar o algum timer, por exemplo, é executado mais que uma vez...),

se queres que isso te esteja sempre aparecer mais que uma vez tens de colocar no loop, ( o numero de linhas e colunas fica colocado no setup, pq basta ao arduino obter esse informaçao uma vez "para saber" que o display tem 2 colunas e 8 linhas, é como quando declaras o estado dos pinos (pinMode´s, etc) o numero de linhas e colunas do display funciona da mesma forma, entendes?...
cumprimentos,
Fred