Нам понадобится:
1. Arduino UNO R3
2. DS18B20 цифровой датчик температуры.
3. 16X2 LCD дисплей.
1) Подключаем LCD дисплей
Подстроечный резистор, это регулировка контрастности дисплея (от 2кОм до 10кОм)
2) Подключаем датчик температуры DS18B20.
Центральный вывод датчика подключаем к PIN7 Arduino Uno.
3) Заливаем скетч в Arduino Uno
Понадобится библиотека OneWire
#include <OneWireTempSensor.h>
#include <OneWire.h>
#include <LiquidCrystal.h>
int DS18S20_Pin = 7; //DS18S20 Signal pin on digital 7
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);
//Temperature chip i/o
OneWire ds(DS18S20_Pin); // on digital pin 7
void setup(void) {
Serial.begin(9600);
lcd.begin(16, 2);
// Print a message to the LCD.
lcd.print("Current Time");
}
void loop(void) {
float temperature = getTemp();
Serial.println(temperature);
lcd.setCursor(0, 1);
lcd.print("Temp : ");
lcd.print(temperature);
lcd.print(" *C");
delay(100); //just here to slow down the output so it is easier to read
}
float getTemp(){
//returns the temperature from one DS18S20 in DEG Celsius
byte data[12];
byte addr[8];
if ( !ds.search(addr)) {
//no more sensors on chain, reset search
ds.reset_search();
return -1000;
}
if ( OneWire::crc8( addr, 7) != addr[7]) {
Serial.println("CRC is not valid!");
return -1000;
}
if ( addr[0] != 0x10 && addr[0] != 0x28) {
Serial.print("Device is not recognized");
return -1000;
}
ds.reset();
ds.select(addr);
ds.write(0x44,1); // start conversion, with parasite power on at the end
byte present = ds.reset();
ds.select(addr);
ds.write(0xBE); // Read Scratchpad
for (int i = 0; i < 9; i++) { // we need 9 bytes
data[i] = ds.read();
}
ds.reset_search();
byte MSB = data[1];
byte LSB = data[0];
float tempRead = ((MSB << 8) | LSB); //using two's compliment
float TemperatureSum = tempRead / 16;
return TemperatureSum;
}
В проекте использовалась arduino 1.0.5
|