Olá a todos.
Estou a ter um problema para mostrar os valores da Temperatura numa janela no Processing
No Arduino tenho como um exemplo, neste caso, o seguinte código:
if(tempC <= 22.0)
{
Serial.print(tempC, 1);
Serial.print("\t");
Serial.print(tempK, 1);
Serial.print("\t");
Serial.print(tempF, 1);
Serial.print("\t");
Serial.println("Alarme!" );
}
No software Processing estou a conseguir gravar para um bloco de notas neste formato:
2013/8/28 16:31:52 25.6 298.7 78.1
2013/8/28 16:31:53 25.9 299.1 78.7
2013/8/28 16:31:54 25.9 299.1 78.6
Mas quando mostro a string sensorReading numa janela, aparece desta forma:
25.9299.178.6
Está a mostrar a Temperatura em ºC, Kelvin e ºF coladas uma à outra.
No Processing estou a utilizar o seguinte código:
import processing.serial.*;
Serial myPort;
String sensorReading="";
PFont font;
PrintWriter output;
void setup()
{
size(600, 300);
myPort = new Serial(this, "COM4", 9600);
myPort.bufferUntil('\n');
font = createFont(PFont.list()[4], 36);
textFont(font);
output = createWriter( "C:/Users/alunosdefi/Desktop/data.txt" );
}
void draw()
{
}
void serialEvent (Serial myPort)
{
sensorReading= myPort.readStringUntil('\n');
if(sensorReading != null)
{
sensorReading=trim(sensorReading);
}
output.println(year() + "/" + month() + "/" + day() + "\t" + hour() + ":" + minute() + ":" + second() + "\t" + sensorReading);
output.flush();
writeText("Temperatura: " + sensorReading + " ºC");
}
void writeText(String textToWrite)
{
background(180);
fill(127,0,0);
text(textToWrite, width/20, height/2);
}
Alguém me sabe dizer como consigo mostrar apenas a temperatura em ºC na janela?
Penso que o código chave é este:
sensorReading= myPort.readStringUntil('\n');
if(sensorReading != null)
{
sensorReading=trim(sensorReading);
}
e depois vou buscar a variável a ser imprimida aqui:
writeText("Temperatura: " + sensorReading + " ºC");
Um dos métodos que fiz e deu foi criar no ínicio a variavel:
String imprimir="";
e antes de imprimir o código chave anterior coloquei o seguinte código:
imprimir =myPort.readStringUntil('\t');
if(imprimir != null)
{
imprimir=trim(imprimir);
writeText("Temperatura: " + imprimir + " ºC");
}
A questão aqui é que tenho de imprimir duas vezes a temperatura em ºC no código do Arduino, visto que a lê apenas até o primeiro tab - "/t", porque senão a temperatura em ºC não aparecia no bloco de notas.
Mas o problema maior é tbm que depois na janela não aparece a String "ALARME!" sempre que a TempC < 22 ºC...
Alguma sugestão??
Cumprimentos,
Pedro