Датчик температуры DS18B20 и LCD дисплей

В этой статье, доработаю показанный ранее пример с датчиком DS18B20+, вывод температуры через последовательный монитор порта, является полезным, но мало практичным. В примере будем выводить температуру на LCD-дисплей работающий по протоколу I2C.

Датчик температуры DS18B20 и LCD дисплей

Датчик температуры DS18B20 и LCD дисплей

Необходимые детали:
► Arduino UNO R3 x 1 шт.
► LCD-дисплей 1602A (2×16, 5V, Синий) x 1 шт.
► Интерфейсный модуль IIC, I2C, TWI для LCD x 1 шт.
► Провод DuPont, 2,54 мм, 20 см, F-M (Female — Male) x 1 шт.
► Кабель USB 2.0 A-B x 1 шт.
► Датчик температуры DS18b20+ x 1 шт.
► Резистор 4.7 кОм x 1 шт.
► Макетная плата MB-102 (Breadboard) x 1 шт.

Подключение:
Для вывода температуры на LCD дисплей с датчика DS18b20, будем использовать плату Arduino UNO. Собираем схему, которая показана ниже, для удобства дополнительно нарисовал таблицу подключения.

Датчик температуры DS18B20 и LCD дисплей

Таблица подключение

Датчик температуры DS18B20 и LCD дисплей

В примере используется три дополнительных библиотеки LiquidCrystal_I2C, DallasTempature и OneWire, необходимо скачать их и установить, без них скетч не заработает. Далее, скачиванием скетч и запускаем среду разработки IDE, если все правильно сделали, на дисплее отобразится температура.

/* 
Тестировалось на Arduino IDE 1.6.12
Дата тестирования 23.12.2016г.
*/ 
 
#include <Wire.h>                           // Подключаем библиотеку Wire
#include <LiquidCrystal_I2C.h>              // Подключаем библиотеку LiquidCrystal_I2C 
#include <DallasTemperature.h>              // Подключаем библиотеку DallasTempature
#define DS18B20 2                           // Указываем, к какому выводу подключена DQ

byte simvol[8]   = {B11100,B10100,B11100,B00000,B00000,B00000,B00000,B00000,}; // Символ градуса

LiquidCrystal_I2C lcd(0x27,16,2);           // Задаем адрес и размер дисплея
OneWire oneWire(DS18B20);                   
DallasTemperature sensors(&amp;oneWire);
 
void setup()
{
  sensors.begin();                           // Запуск библиотеки, по умолчанию 9 бит, то есть кратность 0.5 градуса 
  lcd.init();                                // Инициализация lcd    
  lcd.backlight();                           // Включаем подсветку
  lcd.setCursor(2,0);                        // Устанавливаем курсор на 1 строку, ячейка 2
  lcd.print("TEMP");                         // Выводим текст
  lcd.setCursor(0,1);                        // Устанавливаем курсор на 2 строку, ячейка 2 
  lcd.print("www.robotchip.ru");             // Выводим текст
}
void loop()
{
  lcd.createChar(1, simvol);                  // Создаем символ под номером 1
  sensors.requestTemperatures();              // Считываем показания температуры 
  lcd.setCursor(7,0);                         // Устанавливаем курсор на 1 строку, ячейка 7 
  lcd.print(sensors.getTempCByIndex(0));      // Выводим показания температуры
  lcd.setCursor(12,0);                        // Устанавливаем курсор на 1 строку, ячейка 12  
  lcd.print("\1");                            // Выводим символ градуса
  lcd.setCursor(13,0);                        // Устанавливаем курсор на 1 строку, ячейка 13 
  lcd.print("C");                             // Выводим текст 
}

  Скачать скетч

Описание команд, можно посмотреть в комментариях, в скетч добавлен символ градуса.

Ссылки
  
Скачать библиотеку DallasTemperature
  Скачать библиотеку OneWire v.2.2
  Скачать библиотеку LiquidCrystal_I2C
  Документация к LCD1602A

Купить на Aliexpress
  Контроллер Arduino UNO R3
  Комплект проводов DuPont, 2,54 мм, 20 см
  Датчик температуры DS18b20+
  LCD-дисплей 1602A

Купить в Самаре и области
  
Купить контроллер Arduino UNO R3 в г. Самаре
  Купить провода DuPont, 2,54 мм, 20 см в г. Самаре
  Купить датчик температуры DS18b20+ в г. Самаре

Читайте также:

комментариев 15

  1. алекс:

    Символ «градуса» можно не создавать. Он есть в синем дисплее.

  2. Серёга:

    подскажите пожалуйста в чём проблема? скетч загрузил, подключил. на экране информация:
    TEMP -127. C
    http://www.rchip.ru
    температура не изменяется. датчик DS18B20 модуль

  3. Александр:

    Братцы, если есть возможность, помогите плиз в такой проблеме.
    Решил я тут недавно слегка автоматизировать процесс самогоноварения.))) чем давно и плодотворно занимаюсь. точнее, не то чтобы автоматизировать, а обезопасить процесс в случае всяко-разных нештатных ситуаций. а именно: 1. отключение подачи воды на холодильник самогонного аппарата , 2. заполнение готовым продуктом «до верха» емкости, в которую он льется. имеется: Arduino UNO, реле, датчик температуры ds18b20, датчик уровня жидкости, жк-дисплей, аналогичный рассмотренному в примере выше. вопрос в следующем. поскольку я кодить давно разучился, да и кодил исключительно на машинах типа Искра-1256 (прошу не ржать!), подскажите, как прикрутить к коду приведенного примера: а.)управление на отключение нагрева перегонного куда (индукционная плита) посредством управляющего реле, выдача звукового сигнала, когда емкость с самогоном (ням-ням) заполнена доверху, т.е. датчик уровня жидкости отсигналил об этом.
    Буду очень признателен, если поможете, добрые люди.))

    • Юрец:

      Тоже хочу сделать подобное чудо.
      + хочу сделать полную автономку. т.е. регулировку температуры атоматом.

  4. Эдуард:

    Ктож скоро казенку пить будет? Тоже варю-гоню. Ни как у меня компиляция не проходит. Библиотеки DallasTemperature и LiquidCrystal_I2C не видит.

    • vip.sergey.mir:

      Добрый день, проверьте расположение библиотек DallasTemperature и LiquidCrystal_I2C в каталоге C:\Users\ваш профиль\Documents\Arduino\libraries

  5. Эдуард:

    Спасибо. Все проверил. Помогла переустановка программы. Сейчас пишет ошибка кампиляции для платы WAWCAT. Плату я уже удачно спалил. Сейчас заказал рекомендованую в теме. Но при выборе любой платы в программе ошибка не проходит.

  6. Руслан:

    Всё проверил. Сначала не работало, а потом понял, что на схеме резистор не в питание вставлен, а в землю 🙂
    Спасибо за статью, очень помог!

  7. Илья Павлович:

    Добрый день, только начал изучать программирование, будьте добры, скажите в какой среде разработки вы работаете?
    По дизайну программы сориентироваться не получается

    • Сергей Мир:

      Здравствуйте, среда разработки Arduino IDE, скачать можно бесплатно с официального сайта arduino.cc

      • Илья Павлович:

        Спасибо, очень вам признателен за столь быстрый ответ =)

      • Илья Павлович:

        Сергей, можно ли с вами как-то связаться?
        Или, возможно, в обсуждении к данной статье удастся решить следующих вопрос — при загрузке программы в Arduino Nano высвечивается следующая ошибка:
        «avrdude: stk500_recv(): programmer is not responding
        avrdude: stk500_getsync() attempt 1 of 10: not in sync: resp=0x3a»
        И так до десяти попыток, потом загрузка прерывается, значение после «resp=0x» часто меняется
        Возможно вы знаете как это исправить? Все параметры и порты указал в IDE правильно, пробовал выставлять разные программаторы в инструментах, но результат один
        Хочу прошить ARDUINO NANO V3 AVR ATM328P-20AU CH340
        Разумеется, буду безумно вам признателен, если поможете решить мою проблему

        • Сергей Мир:

          Добрый день, пищите на почту или в вайбер, телефон на странице контакты.

          • Илья Павлович:

            Нашёл решение проблемы, оказалось, что для записи программы в клон Нано необходимо установить следующий Драйвер — CH341SER, без него Arduino IDE работает только с оригинальными платами =)

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *