КОРЗИНА
магазина
8 (499) 500-14-56 | ПН. - ПТ. 12:00-18:00
ЛЕСНОРЯДСКИЙ ПЕРЕУЛОК, 18С2, БЦ "ДМ-ПРЕСС"

Урок 7. Термометр на базе DS18B20 и OLED дисплея 128X64

Для термометра отлично подходит датчик температуры DS18B20. Он позволяет измерять температуру в домашних, так и в уличных условиях, потому что исполнен с водонепроницаемом корпусе. В качестве дисплея будем использовать матрицу 0.96 128X64 OLED.

Для создания термометра нам понадобятся следующие компоненты:

Для реализации проекта нам необходимо установить сразу несколько библиотек:

Сборка:

1) OLED дисплей подключаем к arduino следующим образом:

Arduino Uno Экран 0.96 128X64 OLED
5V VCC
GND GND
Pin 9 SCL
Pin 8 SDA

Для удобства подключения можно использовать макетную плату.

2) Датчик температуры DS18B20 подключается к arduino следующим образом.

Распиновка для влагозащитного датчика DS18B20 с метровым проводом:

Arduino UNO Влагозащитный датчика
DS18B20

5V Красный провод ( 5V)
GND Черный провод (GND)
Pin 10 Желтый провод (Сигнальный) (Необходимо подтянуть резистором 4,7кОм к 5V )

В случае, если Вы будете использовать не влагозащитный датчик в корпусе to92.(Датчик температуры DS18B20 в корпусе TO-92)

Теперь необходимо записать скетч в arduino Скачать пример.

#include <OneWire.h>
#include <DallasTemperature.h>
#define ONE_WIRE_BUS 10 // номер пина к которому подключен DS18B20
OneWire oneWire(ONE_WIRE_BUS);
DallasTemperature sensors(&oneWire);
#include <OLED_I2C.h>
OLED  myOLED(8, 9, 8); // 8pin - SDA , 9pin - SCL
extern uint8_t RusFont[]; // Русский шрифт
extern uint8_t MegaNumbers[]; // Подключение больших шрифтов
extern uint8_t SmallFont[]; // Базовый шрифт без поддержки русскийх символов.
void setup()
{
  sensors.begin(); 
  myOLED.begin();
}
void loop()
{
sensors.requestTemperatures();
myOLED.clrScr(); // очищаем экран
myOLED.setFont(RusFont); // Устанавливаем русский шрифт
myOLED.print("Ntvgthfnehf", CENTER, 0); // Выводим надпись "Температура"
myOLED.setFont(SmallFont);
myOLED.print("iarduino.ru", CENTER, 55); // вывод текста
myOLED.setFont(MegaNumbers);
myOLED.print(String(sensors.getTempCByIndex(0) , 1), CENTER, 9);   // Отображение температуры
myOLED.update();
delay(100);
}

Результаты:




Обсуждение

Гарантии и возврат Используя сайт Вы соглашаетесь с условями