Tm1637 подключение к ардуино

7 сегментный дисплей с контроллером TM1637, очень дешёвый и удобный модуль для создания часов. Контакты CLK и DIO подключаются к любым цифровым пинам МК.

БИБЛИОТЕКА

GyverTM1637 v1.4

GyverTM1637 – бибилотека для 7 сегментного дисплея на чипе TM1637 с кучей приколюх

  • Вывод цифр массивом или прицельно
  • Вывод букв из списка доступных (листай ниже) массивом или прицельно
  • Отдельная функция вывода часов и минут (часы без нуля слева, минуты с нулём)
  • Вывод числа от -999 до 9999 с учётом знака
  • Готовая функция бегущей строки
  • Функции смены яркости и состояния двоеточия автоматически обновляют дисплей
  • Функция обновления значения с эффектом вертикальной прокрутки
  • Функция обновления значения с эффектом скручивания (лучше один раз увидеть)

Совместима со всеми Arduino платформами (используются Arduino-функции)

Необходимые компоненты

  1. Плата Arduino Uno (купить на Aliexpress).
  2. Модуль TM1637 (купить на Aliexpress).

Общие принципы работы модуля

TM1637 представляет собой разновидность контроллера светодиодных дисплеев. Также данная микросхема позволяет управлять яркостью подключенных дисплеев (индикаторов). Микросхема поставляется в корпусах типа DIP и SOIC и находит широкое применение в микроволновках, индукционных электроплитах и других бытовых электрических устройствах.

Также микросхема значительно упрощает написание программы управления семисегментными индикаторами с помощью микроконтроллера. В данном случае вам необходимо просто последовательно передать в нее данные, а все заботы по обновлению состояния индикаторов она берет на себя, что снижает нагрузку на микроконтроллер. Также, если присмотреться к модулю TM1637 внимательнее, то между 2-м и 3-м семисегментными индикаторами вы увидите «двоеточие», что делает его применение очень удобным в проектах, в которых требуется отображение времени.

Рабочее напряжение для модуля составляет от 3.3V до 5V, а для приема данных он использует двухпроводную шину (two-wire bus), а не интерфейс I2C как в большинстве ЖК и OLED дисплеях. Для получения более подробной информации по модулю TM1637 вы можете посмотреть даташит на него.

Распиновка модуля семисегментных дисплеев TM1637

Распиновка модуля TM1637 показана на рисунке ниже. Он содержит 4 контакта: CLK, DIO, VCC и GND. Все эти контакты являются цифровыми, за исключением контактов VCC и GND.

Распиновка модуля TM1637

Подключение дисплея TM1637 к Arduino

CLK – входной контакт синхронизации. Необходимо подключить к любому цифровому контакту платы Arduino Uno.

DIO – контакт приема последовательных данных (Serial Data I/O pin). Необходимо подключить к любому цифровому контакту платы Arduino Uno.

VCC – контакт подачи питания на модуль. Можно подключить к источнику питания с напряжением от 3.3V до 5V.

GND – общий провод (земля).

Компоненты модуля семисегментных дисплеев TM1637

TM1637 – это сравнительно дешевый модуль дисплея с низким энергопотреблением, который можно использовать в разнообразных проектах. Его компоненты показаны на следующем рисунке.

Компоненты модуля TM1637

Модуль TM1637 состоит из двух частей: первая – это 4-х символьный семисегментный дисплей, а вторая – микросхема управления им TM1637, которая поддерживает широкий набор функций, начиная включением/выключением дисплеев/индикаторов и заканчивая регулировкой их яркости. Микросхема также содержит буфер данных, что позволяет передавать ей сразу все пакеты данных, а она будет отображать эти данные на дисплеях последовательно, что высвобождает ресурсы микроконтроллера для решения других задач.

Наиболее часто задаваемые вопросы про модуль TM1637

Что представляет собой микросхема TM1637?
Она представляет собой разновидность схемы драйвера светодиодными дисплеями с интерфейсом сканера клавиатуры и внутренне интегрированная с цифровым интерфейсом микроконтроллера, триггером данных, драйвером светодиодов и сканером клавиатуры.

Использует ли модуль интерфейс I2C?
Нет, не использует. Он использует цифровой интерфейс, поэтому его можно подключать к любым цифровым контактам микроконтроллеров (плат).

Какие типы семисегментных индикаторов существуют и какой из них использует модуль TM1637?
Существует два типа семисегментных индикаторов: с общим катодом (CC) и общим анодом (CA). Разница между ними состоит лишь в том, что в дисплее с общим катодом все катоды семи сегментов соединены вместе, а в дисплее с общим анодом вместе соединены все аноды сегментов. Модуль TM1637 использует семисегментный индикатор с общим катодом.

Схема модуля семисегментных дисплеев TM1637

Схема модуля семисегментных дисплеев TM1637 представлена на рисунке ниже. Кроме микросхемы TM1637 она содержит также 4 конденсатора и 2 резистора.

Схема модуля TM1637Схема проекта

Схема подключения 4-х символьного семисегментного индикатора TM1637 к плате Arduino представлена на следующем рисунке.

Схема подключения 4-х символьного семисегментного индикатора TM1637 к плате Arduino

Как видите, его подключение к плате Arduino достаточно просто. Необходимо всего лишь подключить контакты питания модуля к контакту 3.3V или 5V платы Arduino Uno, а его линии данных подключить к цифровым контактам 3 и 4 платы Arduino Uno.

Внешний вид собранной конструкции проекта представлен на следующем рисунке.

Внешний вид собранной конструкции проекта

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

Благодаря наличию i2c интерфейса на борту, подключается модуль очень просто – с помощью четырех контактов. Два из них отвечают за питание и подключаются к выводам 5V и Gnd на панели Power нашего контроллера; два других, называются они CLK и DIO, подключатся к цифровым выводам, например 3 и 2, соответственно.

Визуальная схема подключения, для вашего удобства, изображена на картинке справа:

LED индикатор TM1637 и Arduino - схема подключения

Подключение в Arduino IDE

Перед тем, как начинать писать программный код, а затем уже и ломать голову над более сложными проектами, необходимо загрузить специализированную библиотеку для нашего дисплея – tm1637.h:

Одновременно с загруженной библиотекой в папке «примеры» появятся три новых кода для ознакомления и проверки работоспособности. Познакомимся с одним из них.

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

Код для вывода на дисплей любых 4 символов
#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 ) ;
//Задание на включение разделителя
tm1637 . point ( true ) ;
//Выводим массив на дисплей
tm1637 . display ( DispMSG ) ;
delay ( 1000 ) ;
//Задание на выключение разделителя
tm1637 . point ( false ) ;
//Выводим массив на дисплей
tm1637 . display ( DispMSG ) ;
delay ( 1000 ) ;
После загрузки и успешной компиляции данного кода, мы увидим цифры 1, 2, 3, 4 на LED экране.
Код для вывода данных с датчика температуры
#include «dht.h»
#include «TM1637.h»
#define dht_pin 2 // Pin sensor
#define CLK 3//Pins for TM1637
#define DIO 2
TM1637 tm1637 ( CLK , DIO ) ;
void setup ( ) <
tm1637 . init ( ) ;
tm1637 . set ( BRIGHT_TYPICAL ) ;
//BRIGHT_TYPICAL = 2,BRIGHT_DARKEST = 0,BRIGHTEST = 7 0-7;
delay ( 1500 ) ; //Delay
DHT . read11 ( dht_pin ) ;
int temp = DHT . temperature ;
int humidity = DHT . humidity ;
int digitoneT = temp / 10 ;
int digittwoT = temp % 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 ) ; // F
delay ( 5000 ) ;

Обратите внимание, что мы также сначала подключаем отдельную библиотеку для датчика температуры и влажности DHT. Для нашего дисплея прописаны также цифры и буквы, но они не относятся к коду – эта часть кода лишь показывает нам, что библиотека позволяет модулю отображать цифры от 0 до 9 в обычном режиме, и от 10 до 15 в виде букв. Далее прописываем, к какому выводу подключаем наши модули, по сравнению с предыдущей схемой у нас добавляется подключение цифрового вывода с датчика температуры к пину номер 2. В функции void setup инициализируем работу датчиков и запускаем цикл. В самом цикле считываем показания с датчика температуры: в переменную temp сохраняем значение температуры, а в значение humidity влажности. Далее идет деление этих значений на 10, чтобы выводить эти данные на наш дисплей, так как на семисегментный дисплей можно выводить информацию только посимвольно. Последние восемь строчек посвящены выводу данных непосредственно на дисплей. Последним значением выведем символ С, для температуры и F для влажности. И также поставим задержку в 5 секунд между передачей показаний. На этом наша статья подошла к концу. Надеемся, что материал был для вас полезным и вы сможете применить полученные знания и опыт в собственных крутых проектах! Всем успешной компиляции, следите за нашим блогом!

Оцените статью
TutShema
Добавить комментарий