Датчик температуры DHT11 и TM1637

Часто проекты требуют от нас вывода данных с различных датчиков и устройств в монитор порта или же на дисплей, например, для вывода данных с датчика температуры. Многие из вас уже знакомы с бюджетным дисплеем LCD 1602, подключаемым с помощью i2c интерфейса.

Но существуют также и LED дисплеи. С их помощью можно выводить те же данные, но в более удобном формате: за счет большего размера дисплея данные легче считывать, а еще с их помощью можно создать проект наподобие настоящих часов!

В данной статье разберем устройство LED индикатора TM1637, научимся подключать его к Arduino и писать программный код для работы с ним!

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

  • Arduino Uno R3
  • Семисегментный индикатор TM1637
  • Макетная плата на 400 точек
  • Набор макетных проводов “папа-мама”

ОБЗОР МОДУЛЯ

Модуль представляет собой небольшую плату, на которой установлен LED 4-х разрядный семисегментный дисплей на основе одноименного i2c драйвера TM1637.

Внешне конструкция довольно простая, и на этом останавливаться сильно не будем. Разве что, можно отметить, что продается модуль иногда и в качестве 8-разрядной версии, которая будет занимать больше выводов для подключения к Arduino.

Также на некоторых дисплеях имеется часовой разделитель, в виде двоеточия. Именно поэтому очень широкое применение индикатор TM1637 нашел в DIY часах на Arduino.

ПОДКЛЮЧЕНИЕ В ARDUINO IDE

Приведенный ниже код выводит на дисплей любые 4 символа, которые мы пропишем перед компиляцией, а также включает и выключает часовой разделитель с задержкой в 1 секунду (1000 миллисекунд):

#include "TM1637.h"   // Подключаем библиотеку для работы с модулем
int8_t DispMSG[] = {1, 2, 3, 4};   // Настройка символов для последующего вывода на дислей
//Определяем пины для подключения к плате Arduino
#define CLK 3
#define DIO 2
//Создаём объект класса TM1637, в качестве параметров
//передаём номера пинов подключения
TM1637 tm1637(CLK, DIO);
void setup()
{
  //Инициализация модуля
  tm1637.init();
  //Установка яркости горения сегментов
  /*
     BRIGHT_TYPICAL = 2 Средний
     BRIGHT_DARKEST = 0 Тёмный
     BRIGHTEST = 7      Яркий
  */
  tm1637.set(BRIGHT_TYPICAL);
}
void loop()
{
  //Задание на включение разделителя
  tm1637.point(true);
  //Выводим массив на дисплей
  tm1637.display(DispMSG);
  //Задержка
  delay(1000);
  //Задание на выключение разделителя
  tm1637.point(false);
  //Выводим массив на дисплей
  tm1637.display(DispMSG);
  //Задержка
  delay(1000);
}

После загрузки и успешной компиляции данного кода, мы увидим цифры 1, 2, 3, 4 на LED экране.

ВЫВОД ДАННЫХ НА ДИСПЛЕЙ
Если мы хотим выводить данные на дисплей, например с датчика температуры, то в том нам поможет следующий код:

#include "TM1637.h"   // Подключаем библиотеку для работы с модулем
#include "DHT.h"
//{0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15};
//0~9,A,b,C,d,E,F
// Настройка символов для последующего вывода на дислей
//Определяем пины для подключения к плате Arduino
#define CLK 3
#define DIO 2
#define DHTPin 2 // Pin sensor
#define DHTTYPE DHT11   // DHT 11
//Создаём объект класса TM1637, в качестве параметров
//передаём номера пинов подключения
TM1637 tm1637(CLK, DIO);

void setup()
{
  //Инициализация модуля
  tm1637.init();
  //Установка яркости горения сегментов
  /*
     BRIGHT_TYPICAL = 2 Средний
     BRIGHT_DARKEST = 0 Тёмный
     BRIGHTEST = 7      Яркий
  */
  tm1637.set(BRIGHT_TYPICAL);
}
void loop()
{
  DHT dht(DHTPin, DHTTYPE);
int Temperature = dht.readTemperature(); // Gets the values of the temperature
int Humidity = dht.readHumidity(); // Gets the values of the humidity 


//int Temperature;
int digitoneT = Temperature /10;
int digittwoT = Temperature % 10;

int digitoneH = Humidity / 10;
int digittwoH = Humidity % 10;

tm1637.display(1, digitoneT);
tm1637.display(2, digittwoT);
tm1637.display(3, 12); //  C

delay (5000);

tm1637.display(1, digitoneH);
tm1637.display(2, digittwoH);
tm1637.display(3, 15);
delay (5000);  
}

Обратите внимание, что мы также сначала подключаем отдельную библиотеку для датчика температуры и влажности DHT. Для нашего дисплея прописаны также цифры и буквы, но они не относятся к коду – эта часть кода лишь показывает нам, что библиотека позволяет модулю отображать цифры от 0 до 9 в обычном режиме, и от 10 до 15 в виде букв.

Далее прописываем, к какому выводу подключаем наши модули, по сравнению с предыдущей схемой у нас добавляется подключение цифрового вывода с датчика температуры к пину номер 2.

В функции void setup инициализируем работу датчиков и запускаем цикл. В самом цикле считываем показания с датчика температуры: в переменную temp сохраняем значение температуры, а в значение humidity влажности.

Далее идет деление этих значений на 10, чтобы выводить эти данные на наш дисплей, так как на семисегментный дисплей можно выводить информацию только посимвольно.

Последние восемь строчек посвящены выводу данных непосредственно на дисплей. Последним значением выведем символ С, для температуры и F для влажности. И также поставим задержку в 5 секунд между передачей показаний.

На этом наша статья подошла к концу. Надеемся, что материал был для вас полезным и вы сможете применить полученные знания и опыт в собственных крутых проектах! Всем успешной компиляции, следите за нашим блогом!

0 0 голоса
Рейтинг статьи
Подписаться
Уведомить о
guest
0 комментариев
Межтекстовые Отзывы
Посмотреть все комментарии
× iOs app

To install this Web App in your iPhone/iPad press iOs sourse and then Add to Home Screen.