Engineer Notes
  • Главная
  • Заметки
    • Градусник
      • Вывод информации на дисплей (семи сегмент)
      • Вывод информации на ЖК дисплей
      • Градусник DS18B20
    • Работа с датчиком освещенности
      • Работа с реле
      • Создание удлинителя, который работает только в темноте
    • Перехват кодов с пульта управления (IR)
      • Передача сигнала
    • Серво привод
    • Разбираемся с мотором
    • Подключение гироскопа
    • Сохраним файлы на SD карту
    • Часы реального времени
    • Контроллер ATTINY85
    • Доступ к датчикам через Web
  • Проекты
Powered by GitBook
On this page
  • Нужные элементы
  • Схема подключения
  • Написание кода

Was this helpful?

  1. Заметки
  2. Градусник

Вывод информации на дисплей (семи сегмент)

PreviousГрадусникNextВывод информации на ЖК дисплей

Last updated 5 years ago

Was this helpful?

Нужные элементы

Датчики:

Дисплей:

Схема подключения

Как работать с датчиками DHT-NN разбирались в .

Для подключения дисплея требуется задействовать ещё 2 пина.

Схема подключения датчика и дисплея:

Написание кода

lib_deps =
  https://github.com/avishorp/TM1637.git

Теперь пришло время доработать наш код и добавить отображение температуры на дисплей

#include "DHT.h"

// Подключаем библиотеку для работы с дисплеем
#include <TM1637Display.h>

#define DHTPIN 2

// Номера пинов которые будут использоваться для работы с дисплеем
#define CLKPIN 3
#define DIOPIN 4

DHT dht(DHTPIN, DHT11);

// Создание объекта для работы с дисплеем
TM1637Display display(CLKPIN, DIOPIN);

// Объявляем наличие собственной процедуры
void setSegmentsFormatTemperature(int num);

// Реализуем функцию по форматированию числа в температуру, для красивого отображения
void setSegmentsFormatTemperature(int num) {
  uint8_t data[] = {0x00, 0x00, 0x63, 0x39};

  for (int i = 1; i >= 0; --i) {
    uint8_t digit = num % 10;

    if (digit == 0 && num == 0)
    data[i] = 0;
    else
    data[i] = display.encodeDigit(digit);

    num /= 10;
  }

  display.setSegments(data);
}

void setup() {
  Serial.begin(9600);
  dht.begin();

  // Выставляем яркость на самый минимум
  // Допустимые значения от 0 до 7
  display.setBrightness(0);
}

void loop() {
  delay(2000);
  float h = dht.readHumidity();
  float t = dht.readTemperature();
  if (isnan(h) || isnan(t)) {
    Serial.println("Не удается считать показания");
    return;
  }

  //Выведем полученное значение температуры на наш дисплей
  setSegmentsFormatTemperature((int) t);
  Serial.print("Влажность: ");
  Serial.print(h);
  Serial.print("%\tТемпература: ");
  Serial.print(t);
  Serial.println(" °C");
}

Загружаем нашу поделку на плату и радуемся тому как работает наш градусник. У меня получилось это как то так

Для работы с дисплеем нам потребуется библиотека , можно установить аналогичным способом или при использовании PlatformIO можно добавить в файл platformio.ini зависимость от данной библиотеки и она будет скачена в автоматическом режиме.

TM1637
DHT-11
DHT-11 в готовом модуле
DHT-22
4х битный семи сегментный дисплей
статье чуть ранее
Схема подключения
Termometer photo with 7segment