collapse

* Links de Robótica

* Posts Recentes

Ajuda com TRIAC por senso
[Ontem às 18:00]


TV LG White Screen por almamater
[15 de Novembro de 2017, 08:37]


Pergunta sobre prototipagem ( Pesquisa ) por luisjustin
[14 de Novembro de 2017, 23:22]


Medir Agua que está no Poço por Njay
[14 de Novembro de 2017, 13:28]


Amplificador audio por beirao
[12 de Novembro de 2017, 23:43]


Power_OK Enermax por edeweld
[12 de Novembro de 2017, 17:15]


Driver motor por beirao
[11 de Novembro de 2017, 17:40]


Preciso de uma fonte de corrente constante ? por samc
[09 de Novembro de 2017, 14:18]


Pressoestato 0-10V por artur36
[07 de Novembro de 2017, 23:22]


Ideias para construir um quadrúpede simples por Njay
[07 de Novembro de 2017, 18:39]

Autor Tópico: biblioteca lcd  (Lida 949 vezes)

0 Membros e 1 Visitante estão a ver este tópico.

Offline dio123

  • Mini Robot
  • *
  • Mensagens: 928
biblioteca lcd
« em: 30 de Junho de 2014, 13:15 »
Bom dia,
Estou a deixar de usar o arduino aos poucos, e neste momento escolhi usar o lcd. Inicialmente usei a biblioteca do Peter Fleury, mas para mim tem 1 desvantagem.
1º O codigo é bastante confuso para mim e usa 4 bits ou 8 bits no mesmo codigo
2º Usa mais um pino em relação arduino, o pino RW. Depende do tipo de aplicação que se queira fazer pode ser uma vantagem.

Então decidi  criar a minha biblioteca para o lcd  16x2  a 4 bits. Fui para o google, sacei diversas bibliotecas, começei por testar, comparar, a filtrar de maneira a perceber como funciona os lcd's.
A biblioteca ficou como queria, simples e a funcionar.  Apesar de não ser 100% da minha autoria, está tal e qual como queria. Consigo enviar mensagens para o lcd e usar o goto x y.

Agora estou com dificuldades em fazer o equivalente ao println no arduino, e ainda nao consegui encontrar nada por onde me pudesse guiar.
Uma das diferenças entre o print e o println no arduino é que no print quando passa do 100 para o 99 fica 990 enquanto no println fica 99 e é isso que nao consigo fazer no meu código.

Citar
void lcd_print(const char *text)
{
while (*text)
lcd_char(*text++);
}
void lcd_char(uint8_t carac)
{
   lcd_RS_port |= (1<<lcd_RS_bit);     
send_byte(carac); //envia os caracteres para o lcd
}
« Última modificação: 02 de Julho de 2014, 12:30 por dio123 »

Offline dropes

  • Mini Robot
  • *
  • Mensagens: 1.926
Re: biblioteca lcd
« Responder #1 em: 30 de Junho de 2014, 14:21 »
Ao escreveres o valor tens de colocar um espaço à frente para que elimine o caratere que está no display.
O que o arduino deve fazer é apagar tudo e escrever de novo, penso eu.

Offline senso

  • Global Moderator
  • Mini Robot
  • *****
  • Mensagens: 9.400
  • Helpdesk do sitio
Re: biblioteca lcd
« Responder #2 em: 30 de Junho de 2014, 14:24 »
Ou dado que lhe dizes o tamanho do lcd, usar sempre um buffer de 16 caracteres e escrever o ecrã todo.
Avr fanboy

Offline dio123

  • Mini Robot
  • *
  • Mensagens: 928
Re: biblioteca lcd
« Responder #3 em: 02 de Julho de 2014, 14:56 »
Boa tarde,
Como não consegui acrescentar um espaço no final char buffer, encontrei uma alternativa
sprintf( buffer,"%3d", adc_value);

Agora estou a tentar mostrar no lcd o valor de pi, baseado nos exemplos que vi, na net,  mas não estou a conseguir. No entanto desconfio que nao seja do codigo.
Tentei varios exemplos e todos remetem para o mesmo problema, em vez de mostrar o valor da variavel aparece sempre o ?. Na simulação avr studio e a variavel buf fica com o texto e ? o que me leva a querer que o problema está no avr studio.

 sprintf (buf, "bouble=%f", pi);  e  sprintf(str, "Value of Pi = %f", M_PI);
 
codigo em anexo

Agradeço desde já pela ajuda.

Offline senso

  • Global Moderator
  • Mini Robot
  • *****
  • Mensagens: 9.400
  • Helpdesk do sitio
Re: biblioteca lcd
« Responder #4 em: 02 de Julho de 2014, 17:55 »
http://www.avrfreaks.net/index.php?name=PNphpBB2&file=printview&t=110400

Tens de incluir a lib math.h e depois incluir o printf com suporte para virgula flutuante, no AS6 é só carregar numa caixa algures na configuração do projecto, se não usas AS6, no linker é meter isto:
-Wl,-u,vfprintf
Avr fanboy