collapse

* Posts Recentes

Amplificador - Rockboard HA 1 In-Ear por almamater
[Ontem às 19:13]


O que é isto ? por KammutierSpule
[26 de Março de 2024, 19:35]


Bateria - Portátil por almamater
[25 de Março de 2024, 22:14]


Emulador NES em ESP32 por dropes
[13 de Março de 2024, 21:19]


Escolher Osciloscópio por jm_araujo
[06 de Fevereiro de 2024, 23:07]


TP4056 - Dúvida por dropes
[31 de Janeiro de 2024, 14:13]


Leitura de dados por Porta Serie por jm_araujo
[22 de Janeiro de 2024, 14:00]


Distancia Cabo por jm_araujo
[08 de Janeiro de 2024, 16:30]


Meu novo robô por josecarlos
[06 de Janeiro de 2024, 16:46]


Laser Engraver - Alguém tem? por almamater
[16 de Dezembro de 2023, 14:23]

Autor Tópico: Arduino + LCD 3310 - Osciloscopio  (Lida 12178 vezes)

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

Offline metRo_

  • Administrator
  • Mini Robot
  • *****
  • Mensagens: 3.753
Arduino + LCD 3310 - Osciloscopio
« em: 24 de Abril de 2009, 20:54 »
Olá,
Tenho andado a brincar com o lcd e então cá vai mais uma dessas brincadeiras :P
Desta vez estou a tentar fazer algo parecido com um osciloscópio. Ainda tem alguns erros e ainda está em desenvolvimento mas vou postando porque não sei quando voltarei a pegar nisto, tanto pode ser hoje como daqui a um mês :D

Explicação

Para começar tem que se explicar que o LCD esta dividido em 6 linhas e cada linha tem 48 colunas e os dados são enviados para cada coluna de uma linha.

Nesta imagem podem ver os pixeis do LCD ao pormenor.

Quando convertemos um valor analógico em digital usando 10bits este é convertido num valor de 0 a 1023.
Por isso vamos ter que mapear este valor para o tamanho do lcd. Este processo vai ter que ser divido em vários passos pois não basta mapear o valor de 0 a 1023 num de 0 a 48 (altura do lcd) por que por exemplo para 1023 teríamos 48, mas não nos é permitido dizer ao lcd simplesmente liga o pixel 48 no eixo dos x.

Então vamos começar por mapear o valor lido de 0 a 5, isto é, vamos ver em que linha se encontra o valor lido.
Código: [Seleccione]
int limiteInf = 0;
int limiteSup = 1023;
pot=analogRead(0);
yValueLine=map(pot,limiteInf,limiteSup,0,5);

Agora já sabemos em que linha se encontra o valor que lemos, já sabemos onde vamos ter que escrever o valor.
Agora vem o segundo passo, pois dentro da linha onde vamos escrever temos uma coluna com 8 bits, temos que saber a que bit esse valor corresponde.

Para este passo temos que saber como é que a função map divide os valores. Neste caso podemos ver que esse valor é 204, fazendo 1022/5 = 204,4 em que o inteiro é 204.
1022/5 porque só se obtém 5 depois do mapeamento quanto tempos o valor 1023 por isso só há uma hipótese para se obter o máximo(enquanto que para outros valores, o valor da saída do mapeamento corresponde a um intervalo de 204 valores).

Então depois de sabermos este valor vamos então calcular o valor a que corresponde a entrada na colunca de 8 bits da linha em cima calculada.
Para isso vamos pegar no valor lido(em baixo o pot) e a este valor vamos subtrair os valores que correspondem a colunas abaixo deste.
Para um valor lido de 500 podemos verificar que corresponde a linha 2, agora vamos tirar a estes 500 os valores da linha 0 e 1, isto é: 204*2 = 408 e ficamos com 500-408= 92.
Este valor, 92, vai ser agora mapeado nos 8 bits da coluna. O valor lido na linha pode ir de 0 a 203.
O código que se segue executa o que acabei de explicar.

Código: [Seleccione]
yValueLine=map(pot,limiteInf,limiteSup,0,5);
tempTeste = abs(pot-204*(yValueLine));
yValue=map(tempTeste,0,203,1,8

O código todo encontra-se em anexo, aviso que isto está em desenvolvimento e que tem muitos erros e o código não está organizado.

Vídeo
Liguei um gerador de sinais, com frequencia de 1Hz e fui alternando entre onda sinusoidal, triangular, quadrada, assim como aumentar e diminuir a amplitude do sinal.


Tópicos Importantes
Arduino + LCD Nokia 3310! - PCD8544 / OM6206
« Última modificação: 24 de Abril de 2009, 21:13 por TigPT »

Offline TigPT

  • Administrator
  • Mini Robot
  • *****
  • Mensagens: 5.372
    • Tiago Rodrigues
Re:Arduino + LCD 3310 - Osciloscopio
« Responder #1 em: 24 de Abril de 2009, 21:22 »
Muitos parabéns, está a ficar bastante bom!

Quanto ao calculo das linhas, etc, será que não é mais aconselhado fazer com shifts e perder alguma qualidade na representação mas acelerar os cálculos permitindo fazer leituras de maiores frequências ?!

Continua o bom trabalho ;)


PS- Movido para novidades para sair na newsletter, depois volto a mover.

Offline metRo_

  • Administrator
  • Mini Robot
  • *****
  • Mensagens: 3.753
Re:Arduino + LCD 3310 - Osciloscopio
« Responder #2 em: 24 de Abril de 2009, 21:26 »
Isto neste altura está lento porque tenho um delay de 1 ms, mas assim que tiver tudo direito vou começar a trabalhar na parte da frequência.

Não percebi a tua ideia. Estás a dizer em vez de usar a função map, fazer shifts?

Offline ricardo-reis

  • Administrator
  • Mini Robot
  • *****
  • Mensagens: 1.338
Re:Arduino + LCD 3310 - Osciloscopio
« Responder #3 em: 26 de Abril de 2009, 03:00 »
já disse mas repito: muito bom..

Offline ghostbuster

  • Mini Robot
  • *
  • Mensagens: 339
Re:Arduino + LCD 3310 - Osciloscopio
« Responder #4 em: 16 de Junho de 2009, 16:12 »
 ;D ta fixe, eu quero fazer algo parecido mas com um modulo rf ou seja, tenho um probe com arduino e transmissor, e tenho o lcd 3310 com arduino e receptor

Offline microbyte

  • Mini Robot
  • *
  • Mensagens: 1.322
    • http://ricardo-dias.com/
Re:Arduino + LCD 3310 - Osciloscopio
« Responder #5 em: 16 de Junho de 2009, 18:27 »
Muito fixe!
Gostei mesmo. Está aí muito trabalhinho :D

Offline GnobarEl

  • Mini Robot
  • *
  • Mensagens: 92
Re: Arduino + LCD 3310 - Osciloscopio
« Responder #6 em: 13 de Junho de 2010, 22:55 »
Este anexo também está danificado,
podes alterar por favor?

Obrigado.

Offline metRo_

  • Administrator
  • Mini Robot
  • *****
  • Mensagens: 3.753
Re: Arduino + LCD 3310 - Osciloscopio
« Responder #7 em: 14 de Junho de 2010, 00:09 »
Agora só quando voltar a casa(mesmo casa, agora estou onde estudo) e se calhar só daqui a duas semanas por causa dos exames. :S

Offline GnobarEl

  • Mini Robot
  • *
  • Mensagens: 92
Re: Arduino + LCD 3310 - Osciloscopio
« Responder #8 em: 14 de Junho de 2010, 00:15 »
Sem problemas,
era mais pela curiosidade para ver algumas funções. Obrigado na mesma.

Ando a tentar adaptar estas funções:
http://blog.thiseldo.co.uk/?p=383
Mas está complicado, não estou a conseguir, possivelmente por causa dos pinouts.

Alguma ideia?

Offline arduinopraxis

  • Mini Robot
  • *
  • Mensagens: 2
Re: Arduino + LCD 3310 - Osciloscopio
« Responder #9 em: 18 de Novembro de 2010, 15:15 »
@metRo_
I see that the download osc.rar still is corrupt. Please can you provide an updated file as RAR or ZIP? Thanks

Translated:
Vejo que o osc.rar download ainda é corrupto. Por favor, você pode fornecer um arquivo atualizado como RAR e ZIP? Graças

Offline metRo_

  • Administrator
  • Mini Robot
  • *****
  • Mensagens: 3.753
Re: Arduino + LCD 3310 - Osciloscopio
« Responder #10 em: 18 de Novembro de 2010, 15:20 »
In a few hours i'm going upload that again!

Offline arduinopraxis

  • Mini Robot
  • *
  • Mensagens: 2
Re: Arduino + LCD 3310 - Osciloscopio
« Responder #11 em: 18 de Novembro de 2010, 15:31 »
In a few hours i'm going upload that again!

Thank you very much.

Regards from Switzerland