collapse

* Posts Recentes

Bibliotecas para arduino e drivers de stepper - o problema da 'distracção' por SerraCabo
[Hoje às 02:12]


Zener BZW04-105? por brunus
[11 de Dezembro de 2018, 17:34]


Artigo 11, 13 e os restantes por jm_araujo
[10 de Dezembro de 2018, 11:05]


Compra Colectiva Mouser N3-2018 (limite 25 Nov) por Hugu
[10 de Dezembro de 2018, 01:07]


Ajuda para reparar Luzes de LED de Natal por brunus
[09 de Dezembro de 2018, 00:59]


Como reproteger as pontas de cobre do ferros de soldar? por brunus
[09 de Dezembro de 2018, 00:12]


Usar steppers de 5 pontas como se fossem de 4 pontas por SerraCabo
[08 de Dezembro de 2018, 21:18]


LusoRobótica - Website - Estado actual por Tech_JA
[06 de Dezembro de 2018, 09:18]


Como transformar um mosquito killer de tomada em um portátil? por brunus
[05 de Dezembro de 2018, 23:28]


LR, passado, presente e futuro por iyahdub
[05 de Dezembro de 2018, 04:16]

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

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

Offline dio123

  • Mini Robot
  • *
  • Mensagens: 944
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.943
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.585
  • 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: 944
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.585
  • 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