collapse

* Posts Recentes

Amplificador - Rockboard HA 1 In-Ear por almamater
[27 de Março de 2024, 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: [Ajuda] Picaxe 40x2 + ds18b20 +ds1307 + lcd03(i2c)  (Lida 62878 vezes)

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

Offline fre_deri_co

  • Mini Robot
  • *
  • Mensagens: 510
Re: [Ajuda]lcd serial 4x20 (ligação i2c)+ picaxe 40x1
« Responder #45 em: 17 de Setembro de 2010, 19:39 »
antes desta linha inicias-te pelo menos o ldc?!
que sempre se partilhe o conhecimento para que sempre se evolua!!!
Frederico Pereira

Offline andre_f_carvalho

  • Mini Robot
  • *
  • Mensagens: 1.469
    • Pro - andrefcarvalho
Re: [Ajuda]lcd serial 4x20 (ligação i2c)+ picaxe 40x1
« Responder #46 em: 17 de Setembro de 2010, 19:42 »
sim indiquei só não pôs ali por ser óbvio, e era mais para referir aquela parte

Offline fre_deri_co

  • Mini Robot
  • *
  • Mensagens: 510
Re: [Ajuda]lcd serial 4x20 (ligação i2c)+ picaxe 40x1
« Responder #47 em: 17 de Setembro de 2010, 19:45 »
podes-me ceder o tal datasheet?!
que sempre se partilhe o conhecimento para que sempre se evolua!!!
Frederico Pereira

Offline andre_f_carvalho

  • Mini Robot
  • *
  • Mensagens: 1.469
    • Pro - andrefcarvalho
Re: [Ajuda]lcd serial 4x20 (ligação i2c)+ picaxe 40x1
« Responder #48 em: 17 de Setembro de 2010, 19:57 »
parece-me que n seja igual, estive a ver o datacheet e na parte
Custom char generator mostra com se faz, agora a minha duvida é como escrever aqueles nº e por que ordem os devo escrever, sendo que já sei criar a numeração para o bitmap que quero (caso interesse é usando a tabela de verdade onde 128 corresponde a 00000 e 159 a 11111 e ai por diante entre estes nºs).

está neste post que escrevi os dois links vão dar ao mesmo

Offline fre_deri_co

  • Mini Robot
  • *
  • Mensagens: 510
Re: [Ajuda]lcd serial 4x20 (ligação i2c)+ picaxe 40x1
« Responder #49 em: 17 de Setembro de 2010, 20:04 »
em vez de 128 (location to be filled)  experimenta 64....
ou seja
writei2c 0,(0,27,64,128,132,142,149,132,132,132,128)

.... vendo um pouco melhor
Citar
The first thing that must be done is to send a command of 27 to indicate that you intend to make a custom char.
ou seja  (segundo eles)
writei2c 0,(27,128,128,132,142,149,132,132,132,128)
writei2c 0,("0"<- este 0 não pode existir  ,27,128,128,132,142,149,132,132,132,128)
« Última modificação: 17 de Setembro de 2010, 20:14 por fre_deri_co »
que sempre se partilhe o conhecimento para que sempre se evolua!!!
Frederico Pereira

Offline andre_f_carvalho

  • Mini Robot
  • *
  • Mensagens: 1.469
    • Pro - andrefcarvalho
Re: [Ajuda]lcd serial 4x20 (ligação i2c)+ picaxe 40x1
« Responder #50 em: 17 de Setembro de 2010, 20:39 »
em vez de 128 (location to be filled)  experimenta 64....
ou seja
writei2c 0,(0,27,64,128,132,142,149,132,132,132,128)

.... vendo um pouco melhor
Citar
The first thing that must be done is to send a command of 27 to indicate that you intend to make a custom char.
ou seja  (segundo eles)
writei2c 0,(27,128,128,132,142,149,132,132,132,128)
writei2c 0,("0"<- este 0 não pode existir  ,27,128,128,132,142,149,132,132,132,128)

ainda não experimentei o que disseste, mas ao ler aquilo de novo despertou-me a atenção para uma coisa, sendo que o 1º 128 vai ser a localização onde se guarda este carácter, e posso por entre o 128 e o 135, caso o meu mau inglês não me falhe.

Offline fre_deri_co

  • Mini Robot
  • *
  • Mensagens: 510
Re: [Ajuda]lcd serial 4x20 (ligação i2c)+ picaxe 40x1
« Responder #51 em: 17 de Setembro de 2010, 20:47 »
sim, mas de 128 a 135 corresponde ao caracter nº8 ou seja por exemplo do 120 ao 127 é o 7º carácter...
que sempre se partilhe o conhecimento para que sempre se evolua!!!
Frederico Pereira

Offline andre_f_carvalho

  • Mini Robot
  • *
  • Mensagens: 1.469
    • Pro - andrefcarvalho
Re: [Ajuda]lcd serial 4x20 (ligação i2c)+ picaxe 40x1
« Responder #52 em: 17 de Setembro de 2010, 21:29 »
sim, mas de 128 a 135 corresponde ao caracter nº8 ou seja por exemplo do 120 ao 127 é o 7º carácter...

ai é que penso que te enganas, de acordo com o programa que fiz para experimentar eu defino o 128 como uma seta para cima e o 129 como ºc

podes ver aqui o código rápido que usei:

Código: [Seleccione]
init:
    pause 500
    i2cslave $c6, i2cslow, i2cbyte
    writei2c 0,(254,128,255,19,12,4)

ler_temp:
    pause 10
    writei2c 0,(27,128,128,132,142,149,132,132,132,128)
    writei2c 0,(27,129,140,146,146,140,131,132,132,131)
    pause 10   
    writei2c 0,(0,2,1)
    writei2c 0,("andre",128,"lol",129)
    pause 10
   
lol:
if pin3=1 then ler_temp
goto lol

e aqui uma foto da mensagem no lcd:



os nºs de 128 a 135 podem ser poucos para usar caracteres, mas facilita bem o programa ao ser só necessário um nº por cada carácter

Offline fre_deri_co

  • Mini Robot
  • *
  • Mensagens: 510
Re: [Ajuda]lcd serial 4x20 (ligação i2c)+ picaxe 40x1
« Responder #53 em: 17 de Setembro de 2010, 21:37 »
Citar
Next you have to specify the position in ram of one of the 8 available chars you intend to build, the 8 chars are mapped at  positions 128-135. Then the pattern should be sent as below.

pois... tens razão... eu interpretei que fosse como paralelo, 8 bits para cada carácter, mas pelos vistos o conversor i2c trata de fazer isso tudo...
que sempre se partilhe o conhecimento para que sempre se evolua!!!
Frederico Pereira

Offline andre_f_carvalho

  • Mini Robot
  • *
  • Mensagens: 1.469
    • Pro - andrefcarvalho
Re: [Ajuda]lcd serial 4x20 (ligação i2c)+ picaxe 40x1
« Responder #54 em: 17 de Setembro de 2010, 21:41 »
ya tens razão acho que começo a gostar bastante do i2c xD

facilita bem as coisas, apesar de fazer dor de cabeça enquanto ainda n sabes trabalhar com ele.


só uma coisa o gram que está no programa para o picaxe serve para criar caracteres para o paralelo, sabes de uma forma em que crie uma mini aplicação para que simplifique a escrita para o i2c?

Offline fre_deri_co

  • Mini Robot
  • *
  • Mensagens: 510
Re: [Ajuda]lcd serial 4x20 (ligação i2c)+ picaxe 40x1
« Responder #55 em: 18 de Setembro de 2010, 08:19 »
não percebi bem a questão...
mas tipo a cgram que falo é uma memoria que o lcd tem, o que a picaxe tem é uma ram onde te permite memorizar dados como eeprom...
quanto a uma aplicação que questionas é algo do género algum circuito que te permita comunicar com o lcd por paralelo para adicionar simplesmente os caracteres personalizados?! 
que sempre se partilhe o conhecimento para que sempre se evolua!!!
Frederico Pereira

Offline andre_f_carvalho

  • Mini Robot
  • *
  • Mensagens: 1.469
    • Pro - andrefcarvalho
Re: [Ajuda]lcd serial 4x20 (ligação i2c)+ picaxe 40x1
« Responder #56 em: 21 de Setembro de 2010, 15:37 »
não percebi bem a questão...
mas tipo a cgram que falo é uma memoria que o lcd tem, o que a picaxe tem é uma ram onde te permite memorizar dados como eeprom...
quanto a uma aplicação que questionas é algo do género algum circuito que te permita comunicar com o lcd por paralelo para adicionar simplesmente os caracteres personalizados?!

n, é mais do tipo de uma aplicação para desenhar caracteres para i2c, como esta no programa do picaxe

agora uma outra duvida minha, ao usar a função readtemp12, qual é o nº em que começa a mostrar valores negativos, de 0º para os -55º?

Offline fre_deri_co

  • Mini Robot
  • *
  • Mensagens: 510
Re: [Ajuda]lcd serial 4x20 (ligação i2c)+ picaxe 40x1
« Responder #57 em: 22 de Setembro de 2010, 07:22 »
64656 corresponde aos -55, quando maior for agora mais próximo do 0 ficaras....

uma forma que eu descobri de calcular que pelo o que testei aparenta ser fiável é:
 
Citar
if temperatura > 64655 then let temperatura = 65535 - temperatura + 1 : let negativo = 1 else let negativo = 0 : endif
temperatura = temperatura * 10 / 16
bintoascii temperatura, aux1, aux1, aux1, aux2, aux3

ora vejamos...
     let temperatura = 65535 - temperatura + 1 ; 65535 é o valor máximo de uma word, uma vez que segundo o datasheet apartir de -0.01º ele desloca-se para o valor 65536 (passando o 0 a ter valor) e inicia a decrementarão conforme o valor baixa.. então se calcular-se 65535 - o valor de leitura adicionando 1 uma vez que o 0 é assumido como 1 no DS18B20, sendo assim saber-se-a a temperatura como se fosse possitivo...

    let negativo = 1 else let negativo = 0 ; caso este if aconteça é porque leu um valor negativo, caso não é porque não, memoriza nesta variável para que depois no debug ou a enviar para o lcd não me de sempre valores positivos....

     temperatura = temperatura * 10 / 16 ; multiplico por 10 para conseguir extrair a casa decimal, e por 16 devido a forma que ele usa os bits

     bintoascii temperatura, aux1, aux1, aux1, aux2, aux3 ; quanto a isto penso eu que nada a a dizer......

seja como for quanto a isto podes sempre confirmar no datasheet do termómetro http://pdfserv.maxim-ic.com/en/ds/DS18B20.pdf

poderá ser confirmado na pág. 4

 
que sempre se partilhe o conhecimento para que sempre se evolua!!!
Frederico Pereira

Offline andre_f_carvalho

  • Mini Robot
  • *
  • Mensagens: 1.469
    • Pro - andrefcarvalho
Re: [Ajuda]lcd serial 4x20 (ligação i2c)+ picaxe 40x1
« Responder #58 em: 23 de Setembro de 2010, 16:57 »
se não tiveres as memorias em symbol como inseriste aqui é mais fácil de entender,

bem pelo que percebi do que escreveste:

escrevi ente código:

Código: [Seleccione]
init:
    pause 500'inicialização do lcd
    i2cslave $c6, i2cslow, i2cbyte'inicialização do lcd
    writei2c 0,(12,4)
'--------------------------------------definir caracteres-------------------------
writei2c 0,(27,128,140,146,146,140,131,132,132,131)'carácter ºc
writei2c 0,(27,129,128,132,134,159,159,134,132,128)'carácter seta direita
ler_temp:'temperatura

'escrever no lcd   
    writei2c 0,(0,2,3)
    writei2c 0,(".:Temperatura:.")
    writei2c (0,2,21)
    writei2c (" Interior",129)

ler_tempx:
'ler temperatura
    readtemp12 0,w1
    if w1>= 64656 then temp1_neg
   
temp1_pos:
    'temperatura interior positiva
    let w1 = w1*10/16
    debug w1   
    writei2c (0,2,30)
    bintoascii w1,b0,b1,b2
    hi2cout("",b0,b1,".",b2,128)

temp1_neg:   
'temperatura interior positiva
    let w1 = w1*10/16
    debug w1   
    writei2c (0,2,30)
    bintoascii w1,b0,b1,b2
    hi2cout("-",b0,b1,".",b2,128)
    goto ler_tempx

sendo que se o valor da w1 estiver maior ou igual a 64656 passa a escrever em com o traço em negativo, estarei certo? em relação a conversão para negativo?

Offline fre_deri_co

  • Mini Robot
  • *
  • Mensagens: 510
Re: [Ajuda]lcd serial 4x20 (ligação i2c)+ picaxe 40x1
« Responder #59 em: 23 de Setembro de 2010, 20:29 »
não maior... tens um erro....

após leres o valor (readtemp12 ....)
fazes :
Citar
if w1>= 64656 then temp1_neg
(...)
temp1_neg:   
'temperatura interior positiva
    let w1 = w1*10/16

ou seja mal acabas de ler o valor negativo multiplicas logo por 10 e dividindo por 16.... conclusão... por exemplo 65000 * 10 = 650000.... lembra-te que picaxe so vai ate 16 bit, ou seja valor máximo de 65535....
falta-te o comando

Citar
let w1 = 65535 - w1 + 1  * 10 / 16
que sempre se partilhe o conhecimento para que sempre se evolua!!!
Frederico Pereira