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: [Ajuda] Picaxe 40x2 + ds18b20 +ds1307 + lcd03(i2c)  (Lida 62848 vezes)

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

Offline andre_f_carvalho

  • Mini Robot
  • *
  • Mensagens: 1.469
    • Pro - andrefcarvalho
[Ajuda] Picaxe 40x2 + ds18b20 +ds1307 + lcd03(i2c)
« em: 10 de Setembro de 2010, 14:29 »
boas,

comecei  meu projecto hoje, visto que os meus ds18b20 chegaram ontem, e tenho as seguintes duvidas:

consigo mostrar o valor da temperatura na 1º linha com este código
Código: [Seleccione]
init:
   pause 500
   i2cslave $c6, i2cslow, i2cbyte
   writei2c 0,(254,128,255,19,12,4)

ler_temp:
   readtemp 0,w1
   debug w1
   pause 10
   
escrever_lcd:   
   writei2c 0,(254,128,255,19,12,4)
   pause 10
   bintoascii w1,b0,b1,b2
   hi2cout(" interior=",b1,b2,"")
   pause 10
   pause 1000
   goto ler_temp

e ao tentar juntar as duas temperaturas, aquilo fica tudo seguido com este código:
Código: [Seleccione]
init:
   pause 500
   i2cslave $c6, i2cslow, i2cbyte
   writei2c 0,(254,128,255,19,12,4)

ler_temp:
   readtemp 0,w1
   debug w1
   pause 10
   readtemp 1,w2
   debug w2
   pause 10
   
   
escrever_lcd:   
   writei2c 0,(254,128,255)
   pause 10
   writei2c 0,(".:Temperatura:.")
   bintoascii w1,b0,b1,b2
   bintoascii w2,b3,b4,b5
   writei2c 0,(254,192,255)
   pause 10
   hi2cout("interior=",b1,b2,"","")
   pause 10
   hi2cout("exterior=",b4,b5,"","")
   pause 1000
   goto ler_temp

alguém já trabalhou com este tipo de sistema?
« Última modificação: 22 de Abril de 2012, 23:33 por andre_f_carvalho »

Offline durza

  • Mini Robot
  • *
  • Mensagens: 60
Re: [Ajuda]lcd serial 4x20 (ligação i2c)+ picaxe 40x1
« Responder #1 em: 14 de Setembro de 2010, 00:28 »
eu ja trabalhei  ;D

Offline durza

  • Mini Robot
  • *
  • Mensagens: 60
Re: [Ajuda]lcd serial 4x20 (ligação i2c)+ picaxe 40x1
« Responder #2 em: 14 de Setembro de 2010, 00:29 »
e tens uns erros na programação  :P

Offline andre_f_carvalho

  • Mini Robot
  • *
  • Mensagens: 1.469
    • Pro - andrefcarvalho
Re: [Ajuda]lcd serial 4x20 (ligação i2c)+ picaxe 40x1
« Responder #3 em: 14 de Setembro de 2010, 10:40 »
provavelmente no segundo código, no 1º esta bom, pelo menos no lcd está

Offline XicoMBD

  • Mini Robot
  • *
  • Mensagens: 571
    • FranciscoDias.net
Re: [Ajuda]lcd serial 4x20 (ligação i2c)+ picaxe 40x1
« Responder #4 em: 14 de Setembro de 2010, 17:09 »
Boas,

Não sei se tens o datasheet do LCD, mas se não tiveres aqui o tens em anexo.

A tabela de comandos dá bastante jeito.



Na terceira linha podes encontrar o seguinte:

decimal           command                                                                          description
     2          |  Set cursor (1-80) | Cursor to a position specified by the next byte, where 1 is the top left and 80 is the bottom right


Portanto se  escreveres "writei2c (0,2,5)" vais colocar o cursor na posição 5 do LCD, ou seja o 5º rectâgulo da primeira linha, se quisesses na linha seguinte terias de trocar o 5 por 25.


Acho que assim deve funcionar:

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

ler_temp:
readtemp 0,w1
debug w1
pause 10
readtemp 1,w2
debug w2
pause 10


escrever_lcd:
writei2c 0,(254,128,255)
pause 10
writei2c 0,(".:Temperatura:.")
bintoascii w1,b0,b1,b2
bintoascii w2,b3,b4,b5
writei2c 0,(254,192,255)
pause 10


writei2c (0,2,22)

hi2cout("interior=",b1,b2,"","")
pause 10

writei2c (0,2,42)


hi2cout("exterior=",b4,b5,"","")
pause 1000
goto ler_temp
« Última modificação: 14 de Setembro de 2010, 17:14 por XicoMBD »

Offline andre_f_carvalho

  • Mini Robot
  • *
  • Mensagens: 1.469
    • Pro - andrefcarvalho
Re: [Ajuda]lcd serial 4x20 (ligação i2c)+ picaxe 40x1
« Responder #5 em: 14 de Setembro de 2010, 17:51 »
o datacheet do display já o tinha, em relação a modança de cursor o "writei2c (0,2,5)" este 2 serve para que efeito?

Offline XicoMBD

  • Mini Robot
  • *
  • Mensagens: 571
    • FranciscoDias.net
Re: [Ajuda]lcd serial 4x20 (ligação i2c)+ picaxe 40x1
« Responder #6 em: 14 de Setembro de 2010, 17:53 »
decimal           command                                                                          description
     2          |  Set cursor (1-80) | Cursor to a position specified by the next byte, where 1 is the top left and 80 is the bottom right

Offline andre_f_carvalho

  • Mini Robot
  • *
  • Mensagens: 1.469
    • Pro - andrefcarvalho
Re: [Ajuda]lcd serial 4x20 (ligação i2c)+ picaxe 40x1
« Responder #7 em: 14 de Setembro de 2010, 18:01 »
decimal           command                                                                          description
     2          |  Set cursor (1-80) | Cursor to a position specified by the next byte, where 1 is the top left and 80 is the bottom right

peço desculpa não tinha reparado com precisão para a frase


cump

Offline XicoMBD

  • Mini Robot
  • *
  • Mensagens: 571
    • FranciscoDias.net
Re: [Ajuda]lcd serial 4x20 (ligação i2c)+ picaxe 40x1
« Responder #8 em: 14 de Setembro de 2010, 18:11 »
Não há problema.

Já funciona?

Offline andre_f_carvalho

  • Mini Robot
  • *
  • Mensagens: 1.469
    • Pro - andrefcarvalho
Re: [Ajuda]lcd serial 4x20 (ligação i2c)+ picaxe 40x1
« Responder #9 em: 14 de Setembro de 2010, 18:17 »
boas,

funciona, alterei um bocado o código, ficando assim
Código: [Seleccione]
init:
pause 500
i2cslave $c6, i2cslow, i2cbyte
writei2c 0,(254,128,255,19,12,4)

ler_temp:
readtemp 0,w1
debug w1
pause 10
readtemp 2,w2
debug w2
pause 10


escrever_lcd:
writei2c 0,(254,128,255,4)
pause 10
writei2c 0,(".:Temperatura:.")
pause 10


writei2c (0,2,22)
bintoascii w1,b0,b1,b2
hi2cout(" interior=",b1,b2,"")
pause 10

writei2c (0,2,42)
bintoascii w2,b3,b4,b5
hi2cout(" exterior=",b4,b5,"")
pause 10
goto ler_temp

mas tenho agora dois problemas, um é a 2º temperatura que esta a 20 mas se a aquecer com os dedos passa a 31(valor normal) e dp passa a 20, a segunda coisas é a escrita de temperatura a mais e alguns caracteres manhosos, vou inserir um vídeo para mostrar com está.

edit:

tive problemas ao filmar, está aqui uma foto onde podes ver o valor a 20 da temp e os caracteres manhosos

« Última modificação: 14 de Setembro de 2010, 18:31 por andre_f_carvalho »

Offline XicoMBD

  • Mini Robot
  • *
  • Mensagens: 571
    • FranciscoDias.net
Re: [Ajuda]lcd serial 4x20 (ligação i2c)+ picaxe 40x1
« Responder #10 em: 14 de Setembro de 2010, 18:59 »
Porque metes sempre "writei2c 0,(254,128,255,4)" antes de temperatura?

Experimenta pôr só:

"writei2c 0,(0,1,12)
writei2c 0,(0,2,3) "

Offline andre_f_carvalho

  • Mini Robot
  • *
  • Mensagens: 1.469
    • Pro - andrefcarvalho
Re: [Ajuda]lcd serial 4x20 (ligação i2c)+ picaxe 40x1
« Responder #11 em: 14 de Setembro de 2010, 19:23 »
tb n sei pq, agora está tudo ok, menos o valor da temp que esta a 20, vou tentar resolver o código e vou dando noticias a medida que avanço,

cump

Offline XicoMBD

  • Mini Robot
  • *
  • Mensagens: 571
    • FranciscoDias.net
Re: [Ajuda]lcd serial 4x20 (ligação i2c)+ picaxe 40x1
« Responder #12 em: 14 de Setembro de 2010, 19:24 »
Com a temperatura é que não te devo poder ajudar, nunca utilizei nenhum sensor desse género...

Offline andre_f_carvalho

  • Mini Robot
  • *
  • Mensagens: 1.469
    • Pro - andrefcarvalho
Re: [Ajuda]lcd serial 4x20 (ligação i2c)+ picaxe 40x1
« Responder #13 em: 14 de Setembro de 2010, 19:27 »
eu tenho uma ideia do que seja, mas so confirmo quando obter os resultados

Offline andre_f_carvalho

  • Mini Robot
  • *
  • Mensagens: 1.469
    • Pro - andrefcarvalho
Re: [Ajuda]lcd serial 4x20 (ligação i2c)+ picaxe 40x1
« Responder #14 em: 14 de Setembro de 2010, 20:35 »
n prebo é porque é que a segunda temperatura está com valores diferentes, ao ver o debug da segunda temperatura esta  b4 esta a 2 e b5 a 0, depois passa a n ter nenhum nº e continua a alternar nesses dois nº, o que é estranho