Digital termometer med Arduino & DS18B20 (5 / 7 steg)
Steg 5: Arduino kod
#include < OneWireTempSensor.h >#include < OneWire.h >
#include < LiquidCrystal.h >
int DS18S20_Pin = 7. DS18S20 Signal stift på digital 7 av rahulmitra
LiquidCrystal lcd (12, 11, 5, 4, 3, 2);
Temperaturen chip i/o
OneWire ds(DS18S20_Pin); på digital stift 7 av rahulmitra
void setup(void) {
Serial.BEGIN(9600);
LCD.BEGIN (16, 2);
Skriv ut ett meddelande till LCD-skärmen.
LCD.Print ("Rahul Mitra");
}
void loop(void) {
flyta temperatur = getTemp();
Serial.println(temperature);
lcd.setCursor (0, 1);
LCD.Print ("Temp:");
LCD.Print(temperature);
LCD.Print ("* C");
Delay(100); bara här till långsam ned produktionen så det är lättare att läsa
}
float getTemp() {
Returnerar temperaturen från en DS18S20 i grader Celsius
byte data [12].
byte addr [8].
om (! ds.search(addr)) {
Inga fler sensorer på kedja, Återställ sökning
DS.reset_search();
återvända-1000;
}
om (OneWire::crc8 (addr, 7)! = addr[7]) {
Serial.println ("CRC är inte giltig!");
återvända-1000;
}
om (addr [0]! = 0x10 & & addr [0]! = 0x28) {
Serial.Print ("enhet identifieras inte");
återvända-1000;
}
DS.Reset();
DS.Select(addr);
DS.write(0x44,1); Starta konvertering, med parasit driver på i slutet
byte närvarande = ds.reset();
DS.Select(addr);
DS.write(0xBE); Läs Scratchpad
för (int jag = 0; jag < 9; i ++) {/ / vi behöver 9 byte
data [i] = ds.read();
}
DS.reset_search();
byte MSB = data [1].
byte LSB = data [0];
flyta tempRead = ((MSB << 8) | LSB); med hjälp av två komplimang
flyta TemperatureSum = tempRead / 16;
återvända TemperatureSum;
}