Go Down

Topic: Problema com LCD 20 x 4 (Read 6501 times) previous topic - next topic

wilsonalves

Pessoal estou a implementar um LXD 20x4 no meu projeto fiz as ligações conforme está no no exemplo do arduino
Utilizei um código já feito para um LCD 20x4 verifico e não tem problema depois quando faço upload aparece o erro abaixo descrito:
Binary sketch size: 2.630 bytes (of a 32.256 byte maximum) - 8% used

avrdude: stk500_paged_write(): (a) protocol error, expect=0x14, resp=0x64
avrdude: stk500_cmd(): programmer is out of sync
processing.app.debug.RunnerException: Problem uploading to board.  See http://www.arduino.cc/en/Guide/Troubleshooting#upload for suggestions.
   at processing.app.debug.BasicUploader.uploadUsingPreferences(BasicUploader.java:126)
   at processing.app.Sketch.upload(Sketch.java:1649)
   at processing.app.Sketch.exportApplet(Sketch.java:1608)
   at processing.app.Sketch.exportApplet(Sketch.java:1580)
   at processing.app.Editor$DefaultExportHandler.run(Editor.java:2408)
   at java.lang.Thread.run(Thread.java:619)

O que será isto??

wilsonalves

O erro deixou de dar e agora não dá erro nenhum, mas não consigo mostrar nada no lcd e não consigo perceber porquê!!!

bubulindo

Onde estás a ligar o LCD?
This... is a hobby.

wilsonalves

Já resolvi eu não tinha um potenciometro e não estava a ligar o Vo a nada agora já liguei ao grnd e está tudo bem.

wilsonalves

De qualquer forma obrigado bubulindo:
Em relação ao sensor de corrente é para receber correntes negativas e tenho de trabalhar com 8 volts estou a pensar fazer uma regra 3 simples para chegar ao valor correcto.

wilsonalves

Pessoal estou com novos problemas em passar os valores para o LCD
1-Tenho por exemplo o sensor a medir 23A a seguir corto a corrente ficando a 0 mas no lcd fica 03 ou seja o 3 não desaparece como faço para limpar o aqueles 3 carateres do lcd sempre que muda de valores ou simplesmente outro processo qualquer.

2-Quis fazer uma espécie de tabela no LCD como mostra na imagem e quis fazer traços verticais para separar as colunas umas das outras ficou assim como a imagem demonstra

3-Linha 3 coluna 0 upostamente deveria aparecer um P porque não aparece aquele (Quadrado) estragou-se??

bubulindo

Tens o código?

Isso é simples de resolver.
This... is a hobby.

wilsonalves

O código que fiz no primeiro tópico foi;
  //-----------------------Sensor de corrente 235A(BAT)-----------------------------------------------------------
  lcd.setCursor(3,1);
  lcd.print(12);                                                   //Valor de tensão na bateria

  valor235 = analogRead(A5);                                       //Valor do pino Analógico 5
  //Sinal entre 1V e 3V
  //5V=1024 1.47mV = (0.8085*1024)/5 = 165.5808                    //1.96-(0.235*4.9)=0.8085   
  //5V=1024 2.45mV = (3.115*1024)/5 = 638,952 ~639                 //1.96+(0.235*4.9)=3.115
minimo235=((1.86-(0.1*9.4))*1024/5);
maximo235=((1.86+(0.1*9.4))*1024/5);
corrente235 = map(valor235, minimo235, maximo235, -235, 235);     //Calculo
  Serial.print("BAT:");
  Serial.print(corrente235);                                       //Apresentação dos resultados da corrente no serial monitor
  Serial.print("A");
  lcd.setCursor(3, 2);
  lcd.print(corrente235);                                          //Apresentação do resultado/temperatura no LCD
  delay(2000);                                                     //Actualização dos dados a cada 2 segundo

  PBAT=TBAT*corrente235;                                           //Potência da bateria
  Serial.print(PBAT);
  lcd.setCursor(3,3);
  lcd.print(PBAT);
  //--------------------------------------------------------------------------------------------------------------------

O código que fiz para o segundo tópico foi:
lcd.setCursor(18,0);
   lcd.println("|");
   lcd.setCursor(18,1);
   lcd.println("|");
   lcd.setCursor(18,2);
   lcd.println("|");
   lcd.setCursor(18,3);
   lcd.println("|");
   
   lcd.setCursor(13,0);
   lcd.println("|");
   lcd.setCursor(13,1);
   lcd.println("|");
   lcd.setCursor(13,2);
   lcd.println("|");
   lcd.setCursor(13,3);
   lcd.println("|");
   
E o código que fiz para o terceiro tópico foi apenas:
//-----------------------1ªColuna------------------------------------------------------------
  lcd.setCursor(0,1);//Coluna 0,1  Linha 0 (V)
  lcd.print("V= ");
  lcd.setCursor(0,2);//Coluna 0,1  Linha 1 (I)
  lcd.print("I=");
  lcd.setCursor(0,3);//Coluna 0.1  Linha 2 (P)
  lcd.print("P=");

Abraço

bubulindo

E o problema está em que código?

Antes de escreveres para o LCD, faz lcd.clear. Isto acontece porque o LCD faz um buffering dos dados que escreveste. Então se escreves algo com dois caracteres, XX... e depois com 1 caractere Y, o resultado fica YX. É este o problema que estás a ver.

Se fizeres clear e voltares a escrever tudo, evitas isso.
This... is a hobby.

wilsonalves

Todos os tópicos tem problemas como decrevi acima e como se vê na imagem a questão é em que parte do código é que insiro o lcd.clear()??
E dá para limpar os (quadradinhos) do lcd que quiser??? Como se faz? É que nos tópicos 1 e 2 que descrevi acima vou ter de usar de certeza não sei é como?
Cumprimentos

bubulindo

Fazes clear antes de escreveres no lcd.

não tens função de apagar, mas podes escrever ' '.
This... is a hobby.

wilsonalves

Já está tudo resolvido
Obrigado

wilsonalves

Pessoal o meu lcd 20x4 está a tornar-se pequeno para a quantidade de informação que lá quero inserir então decidi pôr um switch e cada vez que carrego no seu botão ele muda de imagem por enquanto só vou ter duas imagens mas depois hei-de ter mais.
Gostava que alguém me dissesse como se faz a programação disto se possivel.

Cumprimentos

bubulindo

Engraçado teres referido a palavra switch... já que é com isso que implementas menus.

Code: [Select]


#define NUM_MENUS   4 //exemplo, 4 menus...

unsigned char var_menus = 0;

if (botao_pressionado == TRUE) // pseudocodigo...
   var_menus++;

switch(var_menus%NUM_MENUS) {

case 0:
    lcd.print("menu 0");
    break;
case 1:
    lcd.print("menu 1");
    break;
case 2:
    lcd.print("menu 2");
    break;
case 3:
    lcd.print("menu 3");
    break;
}


algo assim será o que pretendes.
This... is a hobby.

wilsonalves

Sim é mesmo isso que pretendo depois ponho o que quero em cada menu e cada vez que pressiono o botão ele muda de menu.
Não estou a conseguir compilar não sei bem porquê está-me a dar este erro:

sketch_jul29b:9: error: expected unqualified-id before 'if'
sketch_jul29b:12: error: expected unqualified-id before 'switch'

Go Up