I need to send data from my temperature sensor (MLX90614 IF) which is connected to arduino uno, to excel.
I have been reading about PLX-DAQ, the problem is I do not know how to write the code to do this. Below I have the code for the sensor:
i2c_init(); //Initialise the i2c bus
PORTC = (1 << PORTC4) | (1 << PORTC5);//enable pullups
// Set up serial communication. Start Excel.
}
void loop(){
int dev = 0x5A<<1;
int data_low = 0;
int data_high = 0;
int pec = 0;
i2c_start_wait(dev+I2C_WRITE);
i2c_write(0x07);
// read
i2c_rep_start(dev+I2C_READ);
data_low = i2c_readAck(); //Read 1 byte and then send ack
data_high = i2c_readAck(); //Read 1 byte and then send ack
pec = i2c_readNak();
i2c_stop();
//This converts high and low bytes together and processes temperature, MSB is a error bit and is ignored for temps
double tempFactor = 0.02; // 0.02 degrees per LSB (measurement resolution of the MLX90614)
double tempData = 0x0000; // zero out the data
int frac; // data past the decimal point
// This masks off the error bit of the high byte, then moves it left 8 bits and adds the low byte.
tempData = (double)(((data_high & 0x007F) << 8 ) + data_low);
tempData = (tempData * tempFactor)-0.01;
The help file gets installed with that appears fairly adequate to figure out how to use it. IE: Sending the following string out the Arduino to the PC:
DATA,123,456,789
will place those 3 values in the next 3 cells of the spreadsheet.
Download, install, rtfm.
I did not rtfm and just going off the comment from jraskell.
Basically something like this.
Serial.print("DATA,");
Serial.println(celcius);
#include <i2cmaster.h>
void setup(){
Serial.begin(9600);
// Serial.println("Initializing...");
i2c_init(); //Initialise the i2c bus
PORTC = (1 << PORTC4) | (1 << PORTC5);//enable pullups
// Set up serial communication. Start Excel.
}
void loop(){
int dev = 0x5A<<1;
int data_low = 0;
int data_high = 0;
int pec = 0;
i2c_start_wait(dev+I2C_WRITE);
i2c_write(0x07);
// read
i2c_rep_start(dev+I2C_READ);
data_low = i2c_readAck(); //Read 1 byte and then send ack
data_high = i2c_readAck(); //Read 1 byte and then send ack
pec = i2c_readNak();
i2c_stop();
//This converts high and low bytes together and processes temperature, MSB is a error bit and is ignored for temps
double tempFactor = 0.02; // 0.02 degrees per LSB (measurement resolution of the MLX90614)
double tempData = 0x0000; // zero out the data
int frac; // data past the decimal point
// This masks off the error bit of the high byte, then moves it left 8 bits and adds the low byte.
tempData = (double)(((data_high & 0x007F) << 8 ) + data_low);
tempData = (tempData * tempFactor)-0.01;
float celcius = tempData - 273.15;
float fahrenheit = (celcius*1.8 ) + 32;
// Serial.print("Celcius: ");
// Serial.println(celcius);
delay(1000); // wait a second before printing again
Serial.print("DATA,");
Serial.println(celcius);
}
I have never used the parallax software, so this is guesswork, but based on the code posted earlier in the thread, you need to send
DATA,Altitude,Pressure