TM1638: модуль кнопок и светодиодной индикации для Arduino проектов

Что такое модуль TM1638. Как использовать TM1638 для создания пользовательского интерфейса. Какие возможности предоставляет TM1638 для работы со светодиодами и кнопками. Как подключить и запрограммировать модуль TM1638 с Arduino.

Содержание

Что такое модуль TM1638 и для чего он используется

TM1638 — это специализированная микросхема, предназначенная для управления светодиодными индикаторами и считывания состояния кнопок. Модули на базе TM1638 часто используются в Arduino проектах для создания простых пользовательских интерфейсов. Основные возможности модуля TM1638:

  • Управление 8 семисегментными светодиодными индикаторами
  • Управление 8 отдельными светодиодами
  • Считывание состояния 8 кнопок
  • Простой 3-проводной интерфейс для подключения к Arduino
  • Напряжение питания 5В

Благодаря этим возможностям, модуль TM1638 позволяет легко добавить в проект цифровой дисплей, светодиодную индикацию и кнопки управления, не загромождая схему множеством проводов.


Характеристики и возможности модуля TM1638

Рассмотрим более подробно ключевые характеристики и функциональные возможности модуля TM1638:

Светодиодная индикация

Модуль TM1638 позволяет управлять 8 семисегментными индикаторами и 8 отдельными светодиодами. Какие преимущества это дает?

  • Возможность отображать цифровую информацию (числа, время и т.д.)
  • Отображение буквенных символов (ограниченный набор)
  • Индикация различных состояний с помощью отдельных светодиодов
  • Регулировка яркости свечения (16 уровней)

Кнопки управления

Модуль поддерживает до 8 кнопок, что позволяет реализовать различные варианты управления:

  • Цифровая клавиатура
  • Кнопки навигации по меню
  • Кнопки выбора режимов работы
  • Комбинации кнопок для дополнительных функций

Интерфейс подключения

Для связи с Arduino используется простой 3-проводной интерфейс:

  • DIO — линия данных (двунаправленная)
  • CLK — тактовый сигнал
  • STB — строб

Такой интерфейс позволяет подключить модуль к любым цифровым пинам Arduino, не требуя специальных аппаратных интерфейсов.


Подключение модуля TM1638 к Arduino

Рассмотрим процесс подключения модуля TM1638 к плате Arduino. Для этого потребуется:

  • Плата Arduino (Uno, Nano, Mega и др.)
  • Модуль TM1638
  • 4 провода для подключения

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

  1. VCC модуля подключаем к 5V на Arduino
  2. GND модуля подключаем к GND на Arduino
  3. DIO модуля подключаем к любому цифровому пину Arduino (например, D7)
  4. CLK модуля подключаем к любому цифровому пину Arduino (например, D8)
  5. STB модуля подключаем к любому цифровому пину Arduino (например, D9)

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

Программирование модуля TM1638 на Arduino

Для удобной работы с модулем TM1638 рекомендуется использовать специализированные библиотеки. Одной из популярных библиотек является TM1638lite. Как начать работу с этой библиотекой?

  1. Установите библиотеку TM1638lite через менеджер библиотек Arduino IDE
  2. Подключите библиотеку в скетче: #include <TM1638lite.h>
  3. Создайте объект TM1638lite, указав пины подключения: TM1638lite tm(7, 8, 9);
  4. Используйте методы библиотеки для управления модулем

Пример простой программы для отображения числа на дисплее и считывания состояния кнопок:



#include <TM1638lite.h>

TM1638lite tm(7, 8, 9); // DIO, CLK, STB

void setup() {
  tm.reset();
}

void loop() {
  // Отображаем число на дисплее
  tm.displayText("12345678");
  
  // Считываем состояние кнопок
  byte buttons = tm.readButtons();
  
  // Зажигаем светодиоды в соответствии с нажатыми кнопками
  tm.setLEDs(buttons);
  
  delay(100);
}

Эта программа отобразит число «12345678» на дисплее и будет зажигать светодиоды при нажатии соответствующих кнопок.

Создание пользовательского интерфейса с TM1638

Модуль TM1638 предоставляет широкие возможности для создания пользовательских интерфейсов в Arduino проектах. Какие типы интерфейсов можно реализовать с помощью этого модуля?

Цифровые часы

Используя 6 разрядов дисплея, можно отображать текущее время в формате ЧЧ:ММ:СС. Оставшиеся 2 разряда можно использовать для отображения дня недели или дополнительной информации. Кнопки позволят настраивать время.

Термометр с настройками

На дисплее отображается текущая температура, а с помощью кнопок можно переключать единицы измерения (C/F) или устанавливать пороговые значения для срабатывания сигнализации.


Игровая консоль

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

Меню настроек

Для проектов со сложной логикой модуль TM1638 может служить интерфейсом для навигации по меню настроек. Дисплей отображает текущий пункт меню, а кнопки позволяют перемещаться по пунктам и изменять значения.

Преимущества использования модуля TM1638 в Arduino проектах

Почему стоит рассмотреть применение модуля TM1638 в своих Arduino проектах? Давайте разберем основные преимущества:

Экономия пинов Arduino

Одно из главных преимуществ модуля TM1638 — это возможность управлять большим количеством элементов, используя всего 3 пина микроконтроллера. Как это помогает в разработке:

  • Освобождает пины для подключения других датчиков и устройств
  • Позволяет использовать платы Arduino с меньшим количеством пинов (например, Arduino Nano)
  • Упрощает монтаж, уменьшая количество проводов в проекте

Простота использования

Модуль TM1638 предоставляет готовое решение для создания пользовательского интерфейса. Какие преимущества это дает разработчику:


  • Не требуется разрабатывать схемы подключения для каждого светодиода и кнопки
  • Готовые библиотеки упрощают программирование модуля
  • Возможность быстро создавать прототипы устройств с интерфейсом пользователя

Расширение функциональности проектов

Использование модуля TM1638 позволяет легко добавить в проект возможности отображения информации и ввода команд. Какие сценарии это открывает:

  • Отображение показаний датчиков в удобном цифровом формате
  • Добавление меню настроек в проекты домашней автоматизации
  • Создание простых игр и развлекательных проектов на Arduino
  • Реализация системы оповещения с визуальной и звуковой сигнализацией

Ограничения и альтернативы модулю TM1638

Несмотря на множество преимуществ, модуль TM1638 имеет некоторые ограничения. Какие это ограничения и какие существуют альтернативы?

Ограничения TM1638:

  • Ограниченное количество разрядов дисплея (8)
  • Невозможность отображения полноценных буквенных символов
  • Отсутствие поддержки матричных клавиатур
  • Относительно высокое энергопотребление из-за светодиодных индикаторов

Альтернативные решения:

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


  1. LCD дисплеи — для отображения большего объема текстовой информации
  2. OLED дисплеи — для создания графических интерфейсов с низким энергопотреблением
  3. Матричные клавиатуры — для проектов, требующих большего количества кнопок
  4. Сдвиговые регистры — для самостоятельной сборки схемы управления светодиодами и кнопками

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


Кнопочный и дисплейный модуль Velleman с чипом TM1638

Сэкономьте $0,00

Whadda
№ производителя: ВПМ461


Поделитесь этим продуктом

  • Модуль кнопок и дисплея с чипом TM1638 от Velleman
  • Комбинация из восьми 7-сегментных дисплеев
  • Идеально подходит для создания простых пользовательских интерфейсов
  • Напряжение питания: 5 В
  • Интерфейс: простой 3-проводной последовательный
  • Количество светодиодов: 8

Кнопочный и дисплейный модуль Velleman с чипом TM1638 сочетает в себе восемь 7-сегментных дисплеев, восемь красных светодиодов и восемь нажимных кнопок, что делает его идеально подходящим для создания простых пользовательских интерфейсов.

Все светодиоды и кнопки управляются и/или считываются микросхемой контроллера светодиодов TM1638. Этот чип драйвера использует простой 3-проводной последовательный интерфейс для связи с платой, совместимой с Arduino.

  • 1 кнопка Velleman и дисплейный модуль с чипом TM1638

Размер

  • 76,2 x 50,2 x 10,6 мм (Д x Ш x В)
  • Чип драйвера: контроллер светодиодов TM1638
  • Напряжение питания: 5 В
  • Интерфейс: простой 3-проводной последовательный
  • Количество светодиодов: 8
  • Количество 7-сегментных индикаторов: 8 (с десятичной точкой)
  • Количество кнопок: 8
  • Вес: 28 г
American ExpressApple PayDiners ClubDiscoverGoogle PayMastercardPayPalShop PayVisa

Ваша платежная информация надежно обрабатывается. Мы не храним данные кредитной карты и не имеем доступа к информации о вашей кредитной карте.

Country

CanadaUnited StatesNorwaySingapore—AfghanistanÅland IslandsAlbaniaAlgeriaAndorraAngolaAnguillaAntigua & BarbudaArgentinaArmeniaArubaAustraliaAustriaAzerbaijanBahamasBahrainBangladeshBarbadosBelarusBelgiumBelizeBeninBermudaBhutanBoliviaBosnia & HerzegovinaBotswanaBrazilBritish Indian Ocean TerritoryBritish Virgin IslandsBruneiBulgariaBurkina FasoBurundiCambodiaCameroonCanadaCape VerdeCaribbean NetherlandsCayman IslandsCentral African RepublicChadChileChinaChristmas IslandCocos (Keeling) IslandsColombiaComorosCongo — BrazzavilleCongo — KinshasaCook IslandsCosta RicaCroatiaCuraçaoCyprusCzechiaCôte d’IvoireDenmarkDjiboutiDominicaDominican RepublicEcuadorEgyptEl SalvadorEquatorial GuineaEritreaEstoniaEswatiniEthiopiaFalkland IslandsFaroe IslandsFijiFinlandFranceFrench GuianaFrench PolynesiaFrench Southern TerritoriesGabonGambiaGeorgiaGermanyGhanaGibraltarGreeceGreenlandGrenadaGuadeloupeGuatemalaGuernseyGuineaGuinea -БисауГайанаГаитиГондурасГонконг ЮАРХу ngaryIcelandIndiaIndonesiaIraqIrelandIsle of ManIsraelItalyJamaicaJapanJerseyJordanKazakhstanKenyaKiribatiKosovoKuwaitKyrgyzstanLaosLatviaLebanonLesothoLiberiaLibyaLiechtensteinLithuaniaLuxembourgMacao SARMadagascarMalawiMalaysiaMaldivesMaliMaltaMartiniqueMauritaniaMauritiusMayotteMexicoMoldovaMonacoMongoliaMontenegroMontserratMoroccoMozambiqueMyanmar (Burma)NamibiaNauruNepalNetherlandsNew CaledoniaNew ZealandNicaraguaNigerNigeriaNiueNorfolk IslandNorth MacedoniaNorwayOmanPakistanPalestinian TerritoriesPanamaPapua New GuineaParaguayPeruPhilippinesPitcairn IslandsPolandPortugalQatarRéunionRomaniaRussiaRwandaSamoaSan MarinoSão Tomé & PríncipeSaudi ArabiaSenegalSerbiaSeychellesSierra LeoneSingaporeSint MaartenSlovakiaSloveniaSolomon IslandsSomaliaSouth AfricaSouth Georgia & South Sandwich IslandsSouth KoreaSpainSri LankaSt.

Бартелеми Св. ЕленаСв. Китс и НевисСент. Люсия Св. МартинСт. Пьер и МикелонСв. Винсент и ГренадиныСуданСуринамШпицберген и Ян-МайенШвецияШвейцарияТайваньТаджикистанТанзанияТаиландТимор-ЛештиТогоТокелауТонгаТринидад и ТобагоТунисТурцияТуркменистанОстрова Теркс и КайкосТувалуСША. Отдаленные островаУгандаУкраинаОбъединенные Арабские ЭмиратыВеликобританияСоединенные ШтатыУругвайУзбекистанВануатуВатиканВенесуэлаВьетнамУоллис и ФутунаЗападная СахараЙеменЗамбияЗимбабве

Почтовый индекс

#481 7-сегментный драйвер светодиодов TM1638

Изучение возможностей TM1638 в качестве драйвера 7-сегментного дисплея и контроллера клавиатуры.

Вот небольшая демонстрация…

Примечания

TM1638 — это драйвер светодиодного дисплея, который чем-то похож на усовершенствованную версию MAX7219.

Он может обрабатывать 10x 7-сегментов (плюс десятичная точка), а также поддерживает сканирование клавиатуры до 24 кнопок. Он в основном используется для управления интерфейсом в простых бытовых приборах. Доступен ряд модулей разработки, использующих TM1638, например этот пример 9.0003

В отличие от MAX7219, он не включает шрифты или другое декодирование для отображения (не то чтобы возможности MAX7219 в этой области были такими уж большими).

Светодиодные 7-сегментные компоненты

Используемые здесь 7-сегментные компоненты аналогичны SC56-11.

Я использую варианты с общим катодом, поэтому сегменты подключены к контактам сегмента TM1638, и каждый разрядный катод подключается к соответствующему выводу сетки.

Сегмент SC56-11 контактный TM1638 SEG штифт
и 7 5
б 6 6
с 4 7
д 2 8
и 1 9
ф 9 10
г 10 11
дп 5 12

Кнопочные входы

В качестве интеллектуального мультиплексирования TM1638 также поддерживает набор кнопок. Они подключены от контактов сегмента (те же контакты сегмента, которые управляют светодиодными дисплеями) к одному из контактов X1, X2 или X3. таким образом максимум 8 сегментов x 3 X? булавки = 24 кнопки.

Последовательное подключение диода к каждой кнопке позволяет правильно определять комбинации нажатий клавиш.

Адрес дисплея

Каждая сетка имеет 16 битов памяти, разделенных на две области памяти размером в байт, чтобы указать значения включения/выключения для 8 сегментов (плюс 6 неиспользуемых битов).

Четные адреса содержат биты для Seg1-8:

Сегмент 1 Сегмент 2 Сегмент 3 Сегмент 4 Сегмент 5 Сегмент 6 Сегмент 7 Сегмент 8
Б0 Б1 В2 В3 В4 В5 В6 В7

Нечетные адреса содержат биты для Seg9-10:

Сегмент 9 Сегмент 10 х х х х х х
Б0 Б1 В2 В3 В4 В5 В6 В7

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

Сетка Четный Нечетный
1 0x00 0x01
2 0x02 0x03
3 0x04 0x05
4 0x06 0x07
5 0x08 0x08
6 0x0A 0x0B
7 0x0C 0x0D
8 0x0E 0x0F

Режим инкрементной адресации

Установка режима инкрементной адресации позволяет записывать все или серию адресов регистров в непрерывном потоке данных.

Последовательность:

  • Команда (1): 0b01000000 : устанавливает режим записи с автоматическим приращением
    • 0b01xxxxxx — режим передачи данных
    • 0bxxxx0xxx — нормальный режим
    • 0bxxxx0xx — автоматическое увеличение
    • 0bxxxxxx00 — режим записи
  • Команда(2): 0b11000000 : устанавливает начальный адрес дисплея
    • 0b11xxxxxx — установить режим адреса
    • 0bxxxx0000 — установить адрес 0x00
  • Данные(1) — Данные(n): значения регистров
  • Команда(3): 0b10001111 : устанавливает управление дисплеем
    • 0b10xxxxxx — установить режим управления дисплеем
    • 0bxxxx1xxx — установить дисплей на
    • 0bxxxx111 — установить полную яркость

Правильная последовательность состояния линии выбора чипа (STB) имеет решающее значение для принятия команды.

Режим фиксированной адресации

Режим фиксированного адреса позволяет обновлять значения отдельных регистров дисплея.

Последовательность:

  • Команда (1): 0b01000100 : устанавливает режим записи с автоматическим приращением
    • 0b01xxxxxx — режим передачи данных
    • 0bxxxx0xxx — нормальный режим
    • 0bxxxxx1xx — фиксированная адресация
    • 0bxxxxxx00 — режим записи
  • Команда(2): 0b11000000 : устанавливает адрес дисплея
    • 0b11xxxxxx — установить адресный режим
    • 0bxxxx0000 — установить адрес 0x00
  • Данные(1): значение для установки в регистр 0x00
  • Байты команды и значения адреса повторяются для необходимого количества адресов
  • Command(3): 0b10001011 : устанавливает управление дисплеем
    • 0b10xxxxxx — установить режим управления дисплеем
    • 0bxxxx1xxx — установить дисплей на
    • 0bxxxx011 — установить яркость на 10/16ths

Правильная последовательность состояния линии выбора чипа (STB) имеет решающее значение для принятия команды.

Чтение кнопок

Данные клавиатуры считываются через соединение для передачи данных после перевода TM1638 в режим чтения. Чип обрабатывает мультиплексирование дисплея, поэтому считывание значений клавиш не мешает светодиодному дисплею (умно!).

Последовательность:

  • Команда(1): 0b01000010 : устанавливает режим чтения
    • 0b01xxxxxx — режим передачи данных
    • 0bxxxx0xxx — нормальный режим
    • 0bxxxxxx10 — режим чтения
  • Данные (1-4): 4 байта данных сканирования ключа

Данные клавиатуры считываются как 4 байта, содержащие все значения для матрицы 8 сегментов x 3 сетки клавиш.

Бит: В0 В1 В2 В3 В4 В5 В6 В7
Байт1 К3. КС1 К2.КС1 К1.КС1 Х К3.КС2 К2.КС2 К1.КС2 Х
Байт2 К3.КС3 К2.КС3 К1.КС3 Х К3.КС4 К2.КС4 К1.КС4 Х
Байт3 К3.КС5 К2.КС5 К1.КС5 Х К3.КС6 К2.КС6 К1.КС6 Х
Байт4 К3.КС7 К2.КС7 К1.КС7 Х К3.КС8 К2.КС8 К1.КС8 Х

Например, две кнопки, которые я установил для демонстрации, соединяют сетку K1 с KS1 (seg1) и KS2 (seg2) соответственно:

  К1 К2 К3
КС1 кнопка 1    
КС2 кнопка 2    
КС3      
и т. д.      

Таким образом:

  • при первом нажатии byte1 = 0b00000100
  • при нажатии второго, byte1 = 0b01000000
  • , когда оба нажаты, byte1 = 0b01000100

Строительство

Для простой демонстрации я использую 2 7-сегментных светодиодных дисплея и 2 кнопки на макетной плате.

Исходящий вывод DIO TM1638 является открытым стоком и поэтому требует подтягивания.

Пример кода

Скетч RawDrive.ino является примером того, как управлять TM1638 напрямую с программным последовательным управлением — на самом деле, стандарт shiftOut и 9Функции 0360 shiftIn оказались вполне достаточными.

Приведен пример всех основных режимов взаимодействия:

  • после запуска запускается автоматический последовательный счетчик с использованием режима фиксированного адреса
  • одновременное нажатие клавиши:
    • очистить дисплей, используя режим инкрементной адресации
    • переключиться в ручной режим счетчика
  • В ручном режиме счета:
    • нажатие одной кнопки уменьшает счет, используя режим фиксированного адреса
    • нажатие другой кнопки увеличивает счет, используя режим фиксированного адреса
    • Одновременные кнопки очищаются и возвращаются в режим автоматического последовательного счетчика

Я разделил код на пару классов:

  • TM1638 Драйвер отвечает за все коммуникации с TM1638
  • KeyController инкапсулирует логику для интерпретации данных сканирования ключа

Процессы основного цикла с ручным или автоматическим режимами приращения.

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

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