Go Down

Topic: Problema com LCD 20 x 4 (Read 3535 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ê!!!

Onde estás a ligar o LCD?
Eu não sou o teu criado. Se respondo no fórum é para ajudar todos mediante a minha disponibilidade e disposição. Responder por mensagem pessoal iria contra o propósito do fórum e por isso evito-o.
Se realmente pretendes que eu te ajude por mensagem pessoal, então podemos chegar a um acordo e contrato onde me pagas pela ajuda que eu fornecer e poderás então definir os termos de confidencialidade do meu serviço. De forma contrária toda e qualquer ajuda que eu der tem de ser visível a todos os participantes do fórum (será boa ideia, veres o significado da palavra fórum).
Nota também que eu não me responsabilizo por parvoíces escritas neste espaço pelo que se vais seguir algo dito por mim, entende que o farás por tua conta e risco.

Dito isto, mensagens pessoais só se forem pessoais, ou seja, se já interagimos de alguma forma no passado ou se me pretendes convidar para uma churrascada com cerveja (paga por ti, obviamente).

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??

Tens o código?

Isso é simples de resolver.
Eu não sou o teu criado. Se respondo no fórum é para ajudar todos mediante a minha disponibilidade e disposição. Responder por mensagem pessoal iria contra o propósito do fórum e por isso evito-o.
Se realmente pretendes que eu te ajude por mensagem pessoal, então podemos chegar a um acordo e contrato onde me pagas pela ajuda que eu fornecer e poderás então definir os termos de confidencialidade do meu serviço. De forma contrária toda e qualquer ajuda que eu der tem de ser visível a todos os participantes do fórum (será boa ideia, veres o significado da palavra fórum).
Nota também que eu não me responsabilizo por parvoíces escritas neste espaço pelo que se vais seguir algo dito por mim, entende que o farás por tua conta e risco.

Dito isto, mensagens pessoais só se forem pessoais, ou seja, se já interagimos de alguma forma no passado ou se me pretendes convidar para uma churrascada com cerveja (paga por ti, obviamente).

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

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.
Eu não sou o teu criado. Se respondo no fórum é para ajudar todos mediante a minha disponibilidade e disposição. Responder por mensagem pessoal iria contra o propósito do fórum e por isso evito-o.
Se realmente pretendes que eu te ajude por mensagem pessoal, então podemos chegar a um acordo e contrato onde me pagas pela ajuda que eu fornecer e poderás então definir os termos de confidencialidade do meu serviço. De forma contrária toda e qualquer ajuda que eu der tem de ser visível a todos os participantes do fórum (será boa ideia, veres o significado da palavra fórum).
Nota também que eu não me responsabilizo por parvoíces escritas neste espaço pelo que se vais seguir algo dito por mim, entende que o farás por tua conta e risco.

Dito isto, mensagens pessoais só se forem pessoais, ou seja, se já interagimos de alguma forma no passado ou se me pretendes convidar para uma churrascada com cerveja (paga por ti, obviamente).

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

Fazes clear antes de escreveres no lcd.

não tens função de apagar, mas podes escrever ' '.
Eu não sou o teu criado. Se respondo no fórum é para ajudar todos mediante a minha disponibilidade e disposição. Responder por mensagem pessoal iria contra o propósito do fórum e por isso evito-o.
Se realmente pretendes que eu te ajude por mensagem pessoal, então podemos chegar a um acordo e contrato onde me pagas pela ajuda que eu fornecer e poderás então definir os termos de confidencialidade do meu serviço. De forma contrária toda e qualquer ajuda que eu der tem de ser visível a todos os participantes do fórum (será boa ideia, veres o significado da palavra fórum).
Nota também que eu não me responsabilizo por parvoíces escritas neste espaço pelo que se vais seguir algo dito por mim, entende que o farás por tua conta e risco.

Dito isto, mensagens pessoais só se forem pessoais, ou seja, se já interagimos de alguma forma no passado ou se me pretendes convidar para uma churrascada com cerveja (paga por ti, obviamente).

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

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.
Eu não sou o teu criado. Se respondo no fórum é para ajudar todos mediante a minha disponibilidade e disposição. Responder por mensagem pessoal iria contra o propósito do fórum e por isso evito-o.
Se realmente pretendes que eu te ajude por mensagem pessoal, então podemos chegar a um acordo e contrato onde me pagas pela ajuda que eu fornecer e poderás então definir os termos de confidencialidade do meu serviço. De forma contrária toda e qualquer ajuda que eu der tem de ser visível a todos os participantes do fórum (será boa ideia, veres o significado da palavra fórum).
Nota também que eu não me responsabilizo por parvoíces escritas neste espaço pelo que se vais seguir algo dito por mim, entende que o farás por tua conta e risco.

Dito isto, mensagens pessoais só se forem pessoais, ou seja, se já interagimos de alguma forma no passado ou se me pretendes convidar para uma churrascada com cerveja (paga por ti, obviamente).

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