Die Idee entstand als ein Mittel, um sicherzustellen, dass die Temperatur des Zimmers richtig bevor ein Quecksilberthermometer war.
Eine alphanumerische LCD 20 angeordnet×4 Zeichen, beschädigte FAX , aber zum Glück war das LCD OK und es gab einige Beispiele von 1Wire-Temperatursensoren. Das Ziel würde daher LCD Temperaturinformationen zeigen..
Dies war das Ergebnis, unter Verwendung der Arduino-Bibliotheken :
LCD und 1Wire Bibliotheken erhalten Sie hier:
Ein Draht-Bibliothek Und dies ist der Quellcode:/*
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);
}