Ola a todos,
sou o que se chama um verdadeiro iniciante (maçarico) por isso precisava da vossa ajuda para o seguinte:
tenho 3 sensores de temperatura (DS18B20) se estão a criar um ficheiro .txt de x em x segundos, agora precisava da vossa ajuda para o seguinte, em vez de ter as leituras de cada sensor na sua linha ou todos de seguida (horizontal), queria ter uma linha com os 3 valores, a proxima leitura na linha por baixo e assim sucessivamente.
neste momento uso este código que me faz os 3 valores na mesma linha, mas os seguintes, ficam a seguir e não mudam de linha
Boas,
estou a ficar maluco com isto, então como é que é possivel que os dados na "serial port" do arduino softw. em xp saiam todos direitinhos, mas depois
quando ligo o arduino a pc linux com o comando CAT, os mesmos não saiam iguais.
Passo a explicar, estou a construir um interface com o famoso DS18B20 que neste caso são 3 sensores, tudo funciona certinho em xp com a consola do arduino softw.
Já quando ligo o arduino ao linux e faço um cat a porta serie, só recebo informação de 1 sensor, assim :
Erro ao ler temperatura ! Erro ao ler temperatura ! 22.00
23.75 77.06 Erro ao ler temperatura !
alguem me consegue explicar o que possa ser ?
obrigado
No entanto, o simples facto que tu consegues receber strings inteiras leva-me a crer que o problema está no circuito dos DS18B20 e não na porta série...
Boas,
mas se fosse dos DS,s como é que funciona em xp e depois em linux não ?
o código é este :
// Programa : Leitor temperatura sensores DS18B20
// Alterações : Arduino & Cia
// Este programa usa o endereço físico de cada sensor para mostrar as
// informações de temperatura no Serial Monitor
void setup(void)
{
// start serial port
Serial.begin(9600);
// Start up the library
sensors.begin();
// set the resolution to 10 bit (good enough?)
sensors.setResolution(sondaExterior, 10);
sensors.setResolution(sondaAQS, 10);
sensors.setResolution(sondaPaineis, 10);
}
Ola colega
O que dizes não pode estar correcto.Algo te esta a escapar mesmo debaixo do teu nariz.Se dizes que no xp funciona então no linux também tem de dar.Antes de mais faz estes testes
Dizes que no Xp da no arduino soft(presumo que te refiras ao IDE do arduino) então e que tal testares no putty abrindo la a porta Serie?(Conheces o putty? http://the.earth.li/~sgtatham/putty/latest/x86/putty.exe) Saca, escolhes porta serie colocas o numero da serie e defines o baud.
Se ai der igual ok, tens garantido que no xp esta tudo a dar ok.
Agora no linux em vez do CAT instala o GTKTERM (apt-get install gtkterm) e executa em modo root e abre a tty correcta (talvez TTY.USB0) se fores a lista das configuraçoes a porta aparece la.Confirmas o baud e abres
Agora faz as tuas comparaçoes e tira as conclusoes
O teu código parece estar correcto, assim a primeira vista não vejo nada de grave para que isso pudesse acontecer ...
HugoPT:
Ja agora é uma questao pertinente porque é que estas a usar o CAT para veres o output stream do dispositivo Serial?
A internet está cheia de gente a recomendar o cat... se bem que a recomendacão não termina no cat... estende-se ao stty para configurar a ligacão. Se não me engano existe uma opcão para desligar o DTR que activa o reset.
Realmente o CAT pode não ser o comando mais correto para fazer a escuta da serial, mas funciona com os 3 sensores na bancada ...
agora o que realmente mudou (e está debaixo do meu nariz) é que estou a usar uma só resistência junto ao arduino. e na bancada usava uma para cada e todos a mesma distancia. Agora tenho os sensores dispersos pelo cabo, ou seja não estão todos a mesma distancia !!!! hoje vou adicionar uma R 4k7 junto a cada sensor e ver o resultado.
Já agora obrigado pelas vossas respostas são sempre úteis
HugoPT:
Ja agora é uma questao pertinente porque é que estas a usar o CAT para veres o output stream do dispositivo Serial?
A internet está cheia de gente a recomendar o cat... se bem que a recomendacão não termina no cat... estende-se ao stty para configurar a ligacão. Se não me engano existe uma opcão para desligar o DTR que activa o reset.
eu uso este script para criar um log com as temperaturas registadas !! (não sei se será o mais correto, mas funciona)
Mas continuo achar que o problema está mesmo no linux, Eu estou a usar o Centos5 contra o XP onde tudo corre bem, Logo vou ter que me virar mesmo para o linux e usar outro comando que não o cat de forma a poder gerir as velocidades do baud rate etc de forma a conseguir as leituras sem erros.
outra coisa que me ocorre pode ser o tempo de resposta dos DS´s ...
Podes estar a sofrer de autoreset provocado por cada vez que o cat "Abre a porta"
Tenta colocar como um led a acender 1 segundo e depois apaga-lo no void setup() para veres visualmente se ele esta a reniciar.
Se estiver desactiva o auto-reset (coloca uma resistencia de 120 ohms entre o pino de reset e o VCC do arduino)
o codigo corre uma maravilha num pc com o putty a fazer escuta ao arduino, basta mudar para o pc com
o linux faço escuta a porta com o cat, ou o picocom e destrambelha logo :~
Já andei a tentar mexer nos delays do onewire.cpp, mas não percebi muito bem onde tinha de mexer ...
mas cada vez chego mais a conclusão que o problema será mesmo das maquinas !!!
bubulindo:
Tens o reset da placa ligado, suponho... já pensaste em adicionar isto:
Serial.println("Setup succeeded");
no final da tua funcão de setup()?
Boas,
Já tinha visto o teu comentário antes, já usei uma resitencia de 120ohm entre o reset e o vcc, no codigo ainda não adicionei pois não sei bem onde
adicionar