Update March 7th, 2023: This is the first article published on this website. Exactly twelve years ago !
I took some steps in learning the capabilities of Arduino Platforms. Below is the code of my Bluetooth-enabled temperature reader with OS X integration.
#define TMP102_I2C_ADDRESS 72
byte firstbyte, secondbyte; //bytes
int val; //integer for temperature reading
#define btRxPin 4 //definire pin rx bluetooth
#define btTxPin 5 //definire pin tx bluetooth
NewSoftSerial BlueTooth(btRxPin,btTxPin); //serial object
void setup()
{
Serial.begin(115200); //serial baud
BlueTooth.begin(115200); //Bluetooth baud
Wire.begin();
pinMode(btRxPin, INPUT); //digital input
pinMode(btTxPin, OUTPUT); //digital output
/* announce Bluetooth connection success */
BlueTooth.println("Bluetooth succesfully connected...");
delay(1000);
}
void getTemp102() {
Wire.beginTransmission(TMP102_I2C_ADDRESS);
Wire.send(0x00);
Wire.endTransmission();
Wire.requestFrom(TMP102_I2C_ADDRESS, 2);
Wire.endTransmission();
firstbyte = Wire.receive(); /* full */
secondbyte = Wire.receive(); /* decimal */
float convertedTemp;
float correctedTemp;
val = ((firstbyte) << 4); //concatenate values-step 1
val |= (secondbyte >> 4); //concatenate values-step 2
Serial.println((float)val * 0.0625); //check temp reading at terminal
convertedTemp = float(val) * 0.0625; //convert to float
correctedTemp = convertedTemp - 5; //correct overreading
/* check first byte at serial */
Serial.print("first byte: ");
Serial.print("t");
Serial.println(firstbyte,BIN);
/* check second byte at serial */
Serial.print("second byte: ");
Serial.print("t");
Serial.println(secondbyte,BIN);
/* check the string at serial */
Serial.print("concatenated byte is ");
Serial.print("t");
Serial.println(val,BIN);
/* check converted temperature */
Serial.print("Converted temp is ");
Serial.print("t");
Serial.println(convertedTemp);
/* check corrected temperature */
Serial.print("Corrected temp is ");
Serial.print("t");
Serial.println(correctedTemp);
BlueTooth.println(correctedTemp); //send to Bluetooth
}
/* execute the loop */
void loop() {
getTemp102();
delay(5000);
}
/* end */
See also this post on creating additional brushes for SyntaxHighlighter.