LusoRobótica - Robótica em Português

Robótica => Projectos de robótica => Projectos em desenvolvimento => Tópico iniciado por: metRo_ em 24 de Abril de 2009, 20:54

Título: Arduino + LCD 3310 - Osciloscopio
Enviado por: metRo_ 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.
(https://lusorobotica.com/proxy.php?request=http%3A%2F%2Flh5.ggpht.com%2F_i2teYMYP9C0%2FSfIEi8VD2HI%2FAAAAAAAAAV8%2FbDMQrJjIT5A%2Fs400%2FCaptura%2520de%2520ecr%25C3%25A3%2520total%252024-04-2009%2520170544.jpg&hash=8a174254cdaeffe5c54276de91e220933735b04e) (http://picasaweb.google.com/josescxavier/LCDOsciloscopioLusoroboticaCom#5328326307489241202)

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.

http://www.youtube.com/watch?v=GAdRuPFWOPg

Tópicos Importantes
Arduino + LCD Nokia 3310! - PCD8544 / OM6206 (http://lusorobotica.com/index.php/topic,431.0.html)
Título: Re:Arduino + LCD 3310 - Osciloscopio
Enviado por: TigPT 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.
Título: Re:Arduino + LCD 3310 - Osciloscopio
Enviado por: metRo_ 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?
Título: Re:Arduino + LCD 3310 - Osciloscopio
Enviado por: ricardo-reis em 26 de Abril de 2009, 03:00
já disse mas repito: muito bom..
Título: Re:Arduino + LCD 3310 - Osciloscopio
Enviado por: ghostbuster 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
Título: Re:Arduino + LCD 3310 - Osciloscopio
Enviado por: microbyte em 16 de Junho de 2009, 18:27
Muito fixe!
Gostei mesmo. Está aí muito trabalhinho :D
Título: Re: Arduino + LCD 3310 - Osciloscopio
Enviado por: GnobarEl em 13 de Junho de 2010, 22:55
Este anexo também está danificado,
podes alterar por favor?

Obrigado.
Título: Re: Arduino + LCD 3310 - Osciloscopio
Enviado por: metRo_ 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
Título: Re: Arduino + LCD 3310 - Osciloscopio
Enviado por: GnobarEl 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 (http://blog.thiseldo.co.uk/?p=383)
Mas está complicado, não estou a conseguir, possivelmente por causa dos pinouts.

Alguma ideia?
Título: Re: Arduino + LCD 3310 - Osciloscopio
Enviado por: arduinopraxis 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
Título: Re: Arduino + LCD 3310 - Osciloscopio
Enviado por: metRo_ em 18 de Novembro de 2010, 15:20
In a few hours i'm going upload that again!
Título: Re: Arduino + LCD 3310 - Osciloscopio
Enviado por: arduinopraxis 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