I am using an Arduino Uno and a DTH11 temperature sensor to read temperature and then send that value to a computer via the serial port.
A NodeJS application is running on the computer and captures that value and writes to a log file.
When I try to get values from my NodeJS application, sometimes the value is broken into two values. Eg: 25 -> 2 and 5
This is my Arduino code:
dht DHT;
#define DHT11_PIN 7
float tem [4];
void setup() {
Serial.begin(9600);
pinMode(12, OUTPUT);
}
void loop() {
int chk = DHT.read11(DHT11_PIN);
int val = (int)(DHT.temperature);
Serial.println(val);
delay(600000);
}
This is my NodeJS program.
var fs = require('fs')
var logger = fs.createWriteStream('/data/Temperature/temperature.csv', {
flags: 'a' // 'a' means appending (old data will be preserved)
})
var SerialPort = require("serialport")
var serialPort = new SerialPort("/dev/ttyACM0", {
baudRate: 9600,
});
serialPort.on("open", function () {
serialPort.on('data', function(data) {
var moment = require('moment');
var dayTime = moment().format('YYYY-MM-DD,hh:mm');
var val1 = data.toString();
var val = val1.trim();
if (val == '') {
console.log('no data');
else {
console.log(val);
logger.write(dayTime + ',' + val + '\n');
}
});
});
Is it a problem with my code?
Thanks in advance.
val1 = val1 + data.toString()
. Maybe. I don't program in Javascript nor PHP.