Guys, i really appreciate your help. Sorry that i am abit slow.
I am connecting an Arduino Pro Mini to the Nonin OEM III Module.
Module specs:
http://www.nonin.com/documents/OEM%20III%20Module%20Specifications.pdf (Look at Page 5 under Serial Data Format #1)
Allow me to clarify some doubts:
1.) byte vals[3]; refers to the 3 bytes (vals 0,1 and 2) that i will later extract the data from the 24 bits?
2.) if(nss.available() >= 3) - i don't understand how this works.
3.) heartRate = 0; // Sets all 8 bits to 0
oxyLevel = 0; // Sets all 8 bits to 0...........Is this necessary?
4.) bitWrite(heartRate, 7, bitRead(vals[0], 0));
bitWrite(heartRate, 8, bitRead(vals[0], 1));...........bitRead reads bit 1 from vals[0] and bitWrite writes bit 1 into a numeric variable 8?
#include <NewSoftSerial.h>
NewSoftSerial nss(5,8); // Put your TX and RX pins here, in the correct order
byte vals[3];
int heartRate, oxyLevel;
void setup()
{
nss.begin(9600);
Serial.begin(9600);
}
void loop()
{
if(nss.available() >= 3)
{
vals[0] = nss.read(); //represent byte 1
vals[1] = nss.read(); //represent byte 2
vals[2] = nss.read(); //represent byte 3
heartRate = 0; // Sets all 8 bits to 0
oxyLevel = 0; // Sets all 8 bits to 0
bitWrite(heartRate, 0, bitRead(vals[1], 0)); // Set bit 0
bitWrite(heartRate, 1, bitRead(vals[1], 1)); // Set bit 1
bitWrite(heartRate, 2, bitRead(vals[1], 2)); // Set bit 2
bitWrite(heartRate, 3, bitRead(vals[1], 3)); // Set bit 3
bitWrite(heartRate, 4, bitRead(vals[1], 4)); // Set bit 4
bitWrite(heartRate, 5, bitRead(vals[1], 5)); // Set bit 5
bitWrite(heartRate, 6, bitRead(vals[1], 6)); // Set bit 6
bitWrite(heartRate, 7, bitRead(vals[0], 0)); // Set bit 7(Vals[0])
bitWrite(heartRate, 8, bitRead(vals[0], 1)); // Set bit 8(Vals[0])
bitWrite(oxyLevel, 0, bitRead(vals[2], 0)); // Set bit 0
bitWrite(oxyLevel, 1, bitRead(vals[2], 1)); // Set bit 1
bitWrite(oxyLevel, 2, bitRead(vals[2], 2)); // Set bit 2
bitWrite(oxyLevel, 3, bitRead(vals[2], 3)); // Set bit 3
bitWrite(oxyLevel, 4, bitRead(vals[2], 4)); // Set bit 4
bitWrite(oxyLevel, 5, bitRead(vals[2], 5)); // Set bit 5
bitWrite(oxyLevel, 6, bitRead(vals[2], 6)); // Set bit 6
Serial.print("Heart rate: ");
Serial.println(heartRate);
Serial.print("Oxygen level: ");
Serial.println(oxyLevel);
delay (100);
}
}
I hope this is correct after looking at the module specs on page 5.