A ideia surgiu como meio para verificar se a temperatura de um quarto estava correcta perante um termómetro de mercúrio.
Arranjou-se um LCD Alfanumérico de 20×4 caracteres, de um FAX danificado , mas por sorte o LCD estava OK e obtiveram-se algumas amostras de sensores de temperatura 1Wire. O objectivo seria portanto visualizar informação da temperatura no LCD.
Este foi o resultado obtido, usando as bibliotecas do Arduino :
As bibliotecas do LCD e 1Wire podem ser obtidas aqui:
One Wire Library E este é o código-fonte:/*
 Thermometer Ds18B20 and LCD
*/
#include 
 #include
#define DS18S20_ID 0x10
 #define DS18B20_ID 0x28
 float temp;
 LiquidCrystal lcd(11, 12, 5, 4, 3, 2);
OneWire ds(10);
boolean getTemperature(){
 byte i;
 byte present = 0;
 byte data[12];
 byte addr[8];
//find a device
 if (!ds.search(addr)) {
 ds.reset_search();
 return false;
 }
 if (OneWire::crc8( addr, 7) != addr[7]) {
 return false;
 }
 if (addr[0] != DS18S20_ID && addr[0] != DS18B20_ID) {
 return false;
 }
 ds.reset();
 ds.select(addr);
 // Start conversion
 ds.write(0x44, 0); //No parasite mode, Feed it
 // Wait some time...
 // delay(850);
 present = ds.reset();
 ds.select(addr);
 // Issue Read scratchpad command
 ds.write(0xBE);
 // Receive 9 bytes
 for ( i = 0; i < 9; i++) {
 data[i] = ds.read();
 }
 // Calculate temperature value
 temp = ( (data[1] << 8 ) + data[0] )*0.0625;
 return true;
}
void setup(void){
lcd.begin(20, 4);
Serial.begin(9600);
}
void loop(void)
 {
if(getTemperature()==1)
 {
 lcd.setCursor(0, 0);
 lcd.print("Temp: ");
lcd.print(temp, 2);
Serial.print("Temp: " );
 Serial.println(temp, 2);
}
 delay(500);
 }