Pages: [1] 2   Go Down
Author Topic: serial printer na mesma linha  (Read 2757 times)
0 Members and 1 Guest are viewing this topic.
Offline Offline
Newbie
*
Karma: 0
Posts: 28
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Ola a todos,
sou o que se chama um verdadeiro iniciante (maçarico)  smiley-mr-green 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
Quote
{
  delay(10000);
 // Serial.print("Lendo temperaturas...\n\r");
  sensors.requestTemperatures();
  
// Serial.print("Temperatura Sensor 1: ");
 printTemperature(insideThermometer);
 Serial.print(" \r");
 // Serial.print("Temperatura Sensor 2: ");
  printTemperature(outsideThermometer);
Serial.print(" \r");
  //Serial.print("Temperatura Sensor 3s: ");
  printTemperature(dogHouseThermometer);
Serial.print(" \r");
}

o serial printer :

Quote
31.25 33.00 34.75 31.25 33.00 34.75 31.25 33.00 34.75 31.25 33.00 34.75

Alguma idea ?

obrigado
Logged

'round the world...
Offline Offline
Faraday Member
**
Karma: 42
Posts: 3290
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Code:
{
  delay(10000);
 // Serial.print("Lendo temperaturas...\n\r");
  sensors.requestTemperatures();
 
// Serial.print("Temperatura Sensor 1: ");
 printTemperature(insideThermometer);
 Serial.println();
 // Serial.print("Temperatura Sensor 2: ");
  printTemperature(outsideThermometer);
Serial.println();
  //Serial.print("Temperatura Sensor 3s: ");
  printTemperature(dogHouseThermometer);
Serial.println();
}
Logged

Eu não sou o teu criado. Se respondo no fórum é para ajudar todos mediante a minha disponibilidade e disposição. Responder por mensagem pessoal iria contra o propósito do fórum e por isso evito-o.
Se realmente pretendes que eu te ajude por mensagem pessoal, então podemos chegar a um acordo e contrato onde me pagas pela ajuda que eu fornecer e poderás então definir os termos de confidencialidade do meu serviço. De forma contrária toda e qualquer ajuda que eu der tem de ser visível a todos os participantes do fórum (será boa ideia, veres o significado da palavra fórum).
Nota também que eu não me responsabilizo por parvoíces escritas neste espaço pelo que se vais seguir algo dito por mim, entende que o farás por tua conta e risco.

Dito isto, mensagens pessoais só se forem pessoais, ou seja, se já interagimos de alguma forma no passado ou se me pretendes convidar para uma churrascada com cerveja (paga por ti, obviamente).

Offline Offline
Newbie
*
Karma: 0
Posts: 28
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Boas @bubulindo

mas não funciona !! fica assim :
Quote
30.25
32.50
31.00
30.25
32.50
31.00

o que eu pretendia era algo assim :

Quote
30.25 32.50 31.00
30.25 32.50 31.00
Logged

'round the world...
Offline Offline
Faraday Member
**
Karma: 42
Posts: 3290
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Code:
{
  delay(10000);
 // Serial.print("Lendo temperaturas...\n\r");
  sensors.requestTemperatures();
 
// Serial.print("Temperatura Sensor 1: ");
 printTemperature(insideThermometer);
 Serial.print(" ");
 // Serial.print("Temperatura Sensor 2: ");
  printTemperature(outsideThermometer);
Serial.print(" ");
  //Serial.print("Temperatura Sensor 3s: ");
  printTemperature(dogHouseThermometer);
Serial.println();
}
Logged

Eu não sou o teu criado. Se respondo no fórum é para ajudar todos mediante a minha disponibilidade e disposição. Responder por mensagem pessoal iria contra o propósito do fórum e por isso evito-o.
Se realmente pretendes que eu te ajude por mensagem pessoal, então podemos chegar a um acordo e contrato onde me pagas pela ajuda que eu fornecer e poderás então definir os termos de confidencialidade do meu serviço. De forma contrária toda e qualquer ajuda que eu der tem de ser visível a todos os participantes do fórum (será boa ideia, veres o significado da palavra fórum).
Nota também que eu não me responsabilizo por parvoíces escritas neste espaço pelo que se vais seguir algo dito por mim, entende que o farás por tua conta e risco.

Dito isto, mensagens pessoais só se forem pessoais, ou seja, se já interagimos de alguma forma no passado ou se me pretendes convidar para uma churrascada com cerveja (paga por ti, obviamente).

Offline Offline
Newbie
*
Karma: 0
Posts: 28
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

 smiley és uma maquina, funciona as mil maravilhas

obrigado
Logged

Offline Offline
Newbie
*
Karma: 0
Posts: 28
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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 :
Quote
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
Logged

'round the world...
Offline Offline
Faraday Member
**
Karma: 42
Posts: 3290
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Se meteres aqui o código, facilita imenso...

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...
Logged

Eu não sou o teu criado. Se respondo no fórum é para ajudar todos mediante a minha disponibilidade e disposição. Responder por mensagem pessoal iria contra o propósito do fórum e por isso evito-o.
Se realmente pretendes que eu te ajude por mensagem pessoal, então podemos chegar a um acordo e contrato onde me pagas pela ajuda que eu fornecer e poderás então definir os termos de confidencialidade do meu serviço. De forma contrária toda e qualquer ajuda que eu der tem de ser visível a todos os participantes do fórum (será boa ideia, veres o significado da palavra fórum).
Nota também que eu não me responsabilizo por parvoíces escritas neste espaço pelo que se vais seguir algo dito por mim, entende que o farás por tua conta e risco.

Dito isto, mensagens pessoais só se forem pessoais, ou seja, se já interagimos de alguma forma no passado ou se me pretendes convidar para uma churrascada com cerveja (paga por ti, obviamente).

Offline Offline
Newbie
*
Karma: 0
Posts: 28
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Boas,
mas se fosse dos DS,s como é que funciona em xp e depois em linux não ?
o código é este :
Quote
// 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

#include <OneWire.h>
#include <DallasTemperature.h>

// Conectar o pino central dos sensores ao pino 10 do Arduino
#define ONE_WIRE_BUS 10

// Setup a oneWire instance to communicate with any OneWire devices
OneWire oneWire(ONE_WIRE_BUS);

// Pass our oneWire reference to Dallas Temperature
DallasTemperature sensors(&oneWire);

DeviceAddress sondaExterior = { 0x28, 0x86, 0x0F, 0xEF, 0x04, 0x00, 0x00, 0x64 };
DeviceAddress sondaAQS = { 0x28, 0x27, 0x9C, 0xEE, 0x04, 0x00, 0x00, 0x79 };
DeviceAddress sondaPaineis = { 0x28, 0xB6, 0x55, 0x8E, 0x04, 0x00, 0x00, 0xBE };

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);
}

void printTemperature(DeviceAddress deviceAddress)
{
  float tempC = sensors.getTempC(deviceAddress);
  if (tempC == -127.00) {
    Serial.print("Erro ao ler temperatura !");
  } else {
   //Serial.print("C: ");
   Serial.print(tempC);
  //  Serial.print(" F: ");
 //   Serial.print(DallasTemperature::toFahrenheit(tempC));
  }
}

void loop(void)
{
  delay(5000);
  //Serial.print("Lendo temperaturas...\n\r");
  sensors.requestTemperatures();
 
// Serial.print("Temperatura Sensor 1: ");
 printTemperature(sondaExterior);
 Serial.print(" ");
 // Serial.print("Temperatura Sensor 2: ");
  printTemperature(sondaAQS);
Serial.print(" ");
  //Serial.print("Temperatura Sensor 3s: ");
  printTemperature(sondaPaineis);
Serial.println();
Logged

Portugal
Offline Offline
Edison Member
*
Karma: 37
Posts: 1593
Pretending you know everything then you will learn nothing.
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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 ...

Logged

Debian,Mint,Ubuntu
Arduino Mega 2560
Arduino Nano
Arduino Duemilanove
MAC OS Montain Lion
Raspberry PI Model B


'round the world...
Offline Offline
Faraday Member
**
Karma: 42
Posts: 3290
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Eu bem me parecia que reconhecia esse comando... cat não é para concatenar ficheiros?
Como é que o cat sabe a tua baud, paridade, etc, etc???

Como é que o cat se comporta quando atinge o fim do ficheiro?

Notas que entre algumas leituras tens menos de 5 segundos de intervalo?

Tens o reset da placa ligado, suponho... já pensaste em adicionar isto:

Code:
Serial.println("Setup succeeded");
no final da tua funcão de setup()?
Logged

Eu não sou o teu criado. Se respondo no fórum é para ajudar todos mediante a minha disponibilidade e disposição. Responder por mensagem pessoal iria contra o propósito do fórum e por isso evito-o.
Se realmente pretendes que eu te ajude por mensagem pessoal, então podemos chegar a um acordo e contrato onde me pagas pela ajuda que eu fornecer e poderás então definir os termos de confidencialidade do meu serviço. De forma contrária toda e qualquer ajuda que eu der tem de ser visível a todos os participantes do fórum (será boa ideia, veres o significado da palavra fórum).
Nota também que eu não me responsabilizo por parvoíces escritas neste espaço pelo que se vais seguir algo dito por mim, entende que o farás por tua conta e risco.

Dito isto, mensagens pessoais só se forem pessoais, ou seja, se já interagimos de alguma forma no passado ou se me pretendes convidar para uma churrascada com cerveja (paga por ti, obviamente).

Portugal
Offline Offline
Edison Member
*
Karma: 37
Posts: 1593
Pretending you know everything then you will learn nothing.
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Quote
Eu bem me parecia que reconhecia esse comando... cat não é para concatenar ficheiros?
Correctissimo
Quote
cat - concatenate files and print on the standard output
Eu no maximo se fosse para ver o que se passava na serial em linha de comandos usaria o screen
Quote
screen /dev/ttyUSB0 9600
Ja agora é uma questao pertinente porque é que estas a usar o CAT para veres o output stream do dispositivo Serial?
Logged

Debian,Mint,Ubuntu
Arduino Mega 2560
Arduino Nano
Arduino Duemilanove
MAC OS Montain Lion
Raspberry PI Model B


'round the world...
Offline Offline
Faraday Member
**
Karma: 42
Posts: 3290
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

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.

Logged

Eu não sou o teu criado. Se respondo no fórum é para ajudar todos mediante a minha disponibilidade e disposição. Responder por mensagem pessoal iria contra o propósito do fórum e por isso evito-o.
Se realmente pretendes que eu te ajude por mensagem pessoal, então podemos chegar a um acordo e contrato onde me pagas pela ajuda que eu fornecer e poderás então definir os termos de confidencialidade do meu serviço. De forma contrária toda e qualquer ajuda que eu der tem de ser visível a todos os participantes do fórum (será boa ideia, veres o significado da palavra fórum).
Nota também que eu não me responsabilizo por parvoíces escritas neste espaço pelo que se vais seguir algo dito por mim, entende que o farás por tua conta e risco.

Dito isto, mensagens pessoais só se forem pessoais, ou seja, se já interagimos de alguma forma no passado ou se me pretendes convidar para uma churrascada com cerveja (paga por ti, obviamente).

Offline Offline
Newbie
*
Karma: 0
Posts: 28
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Boas vocês deixaram me todo baralhado eheheheh

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
Logged

'round the world...
Offline Offline
Faraday Member
**
Karma: 42
Posts: 3290
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Realmente tendo por base uma assumpção errada, só com sorte é que te podemos ajudar.
Logged

Eu não sou o teu criado. Se respondo no fórum é para ajudar todos mediante a minha disponibilidade e disposição. Responder por mensagem pessoal iria contra o propósito do fórum e por isso evito-o.
Se realmente pretendes que eu te ajude por mensagem pessoal, então podemos chegar a um acordo e contrato onde me pagas pela ajuda que eu fornecer e poderás então definir os termos de confidencialidade do meu serviço. De forma contrária toda e qualquer ajuda que eu der tem de ser visível a todos os participantes do fórum (será boa ideia, veres o significado da palavra fórum).
Nota também que eu não me responsabilizo por parvoíces escritas neste espaço pelo que se vais seguir algo dito por mim, entende que o farás por tua conta e risco.

Dito isto, mensagens pessoais só se forem pessoais, ou seja, se já interagimos de alguma forma no passado ou se me pretendes convidar para uma churrascada com cerveja (paga por ti, obviamente).

Offline Offline
Newbie
*
Karma: 0
Posts: 28
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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)
Quote
#!/bin/bash
exec 3<> /dev/ttyACM0
sleep 1
cat <&3>> /var/www/ardu/logtmp
exec 3>&-

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 ...
« Last Edit: August 17, 2013, 07:02:46 am by patalhetas » Logged

Pages: [1] 2   Go Up
Jump to: