Объявление

Внимание!
Данный форум предназначен только для радиолюбителей!
Никакие прочие объявления, реклама товаров либо услуг невозможны!


Любой спам на нашем форуме запрещён!
Разрешаются только ссылки по темам! 3а нарушения БАН.


Цифровой термометр на Arduino UNO R3 и DS18B20, 16X2 LCD

Правила форума
Внимание! Любой спам на нашем форуме запрещён!
Коммерческая реклама сайтов, ссылки, спам запрещены. Так же запрещены ссылки на сайты в профилях новичков.
Бан без предупреждений.

Цифровой термометр на Arduino UNO R3 и DS18B20, 16X2 LCD

Сообщение admin » 03 дек 2016, 22:08

Нам понадобится:

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;

}
Вложения
OneWire.rar
OneWire
(13.01 KiB) Скачиваний: 199
admin
Администратор
 
Сообщений: 63
Зарегистрирован: 27 ноя 2016, 18:21
ТегиЦифровой, термометр, Arduino UNO R3, DS18B20, 16X2 LCD

Вернуться в Для новичков. Азы.

Кто сейчас на форуме

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 2

cron
/