8-900-374-94-44
[email protected]
Slide Image
Меню

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

Подключаем к Arduino дисплей TM1637

6 октября 2018

Всем привет.
Сегодня для тестирования, подключаем к Arduino Nano, четырех значный, 7 х 4 сегментный, I2C дисплей TM1637.


Еще несколько лет назад подключить такой дисплей было не так просто и приходилось использовать все выводы платы Ардуино. Но сейчас благодаря микросхеме TM1637, преобразующей данные с шины I2C, в параллельные сигналы, эти дисплеи стало очень просто подключать к контроллерам. Так как для подключения этого дисплея нужно всего 4 провода, мама-мама или если использовать макетную плату, то 4 провода папа-папа. Из них 2 повода это питание +5 В, GND и оставшиеся 2 провода это шина I2C.
Вкратце расскажу про характеристики дисплея:
Микросхема драйвера дисплея TM1637
Логические уровни толерантные как к уровням напряжения 5 В и 3.

3 В.
Четыре семи сегментные цифры плюс разделительные точки.
Сам дисплей с общим анодом.
Яркость дисплея можно регулировать и имеет 3 уровня.
Цвета свечения сегментов бывают разные красный, синий, желтый, белый и зеленый. Но самый популярный цвет красный. Я бы для себя предпочел бы белый, но как мне кажется белый при ярком дневном освещении будет плохо читаем. Наверно с этим и связана популярность красного.

И так, перейдем к подключению сегментного экрана к Arduino nano. Подключение занимает всего несколько секунд.

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

Принципиальная схема:

Для того что бы на экране индикатора появилась какая либо информация, нужно скачать и установить библиотеку TM1637, потом запустить Arduino IDE и выбрать “Файлы – примеры – TM1637” и после чего нажать кнопочку “Загрузка в контроллер”, кнопку обозначил на изображении

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

Что бы создать и загрузить в дисплей свой символ, для его расчета нужно воспользоваться инструкций на изображении ниже. Если в двух словах, то значение каждого включенного сегмента нужно суммировать

Например нам нужно на экране получить цифру 4. Для этого нужно суммировать следующие значения 2 + 4 + 32 + 64 = 102. Переводим в шестнадцатеричную систему исчисления и получаем 0x66.

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

И на последок видео демонстрация возможностей сегментного индикатора TM1637

Как использовать дисплей с Raspberry Pi Pico — vHARDWARE

7-сегментные дисплеи, которые можно найти на старых цифровых будильниках, отлично подходят для проектов Raspberry Pi, в том числе тех, которые вы делаете с Raspberry Pi Pico.  Вы можете использовать 7-сегментный дисплей, чтобы вести счет в игре, отображать данные датчиков, такие как температура или расстояние, или отслеживать время. Вы даже можете показать несколько букв.

На рынке существует множество видов 7-сегментных дисплеев, и они различаются не только в зависимости от количества цифр и цвета, но и от платы контроллера или от ее отсутствия. Некоторые дешевые 7-сегментные дисплеи не имеют контроллера и используют отдельные контакты для каждого источника света. Если учесть, что каждая цифра имеет семь разных индикаторов (отсюда и название «7-сегментный дисплей»), это много выводов. 

Однако более совершенные 7-сегментные дисплеи имеют платы контроллеров, которые используют соединение I2C, использующее всего четыре контакта, с питанием от платы контроллера TM1637. Ниже мы покажем вам, как использовать один из этих 7-сегментных дисплеев с питанием от TM1637 с Raspberry Pi Pico.

Что нам понадобится

  • 7-сегментный дисплей. 
  • Raspberry Pi Pico с припаянными штыревыми разъемами и MicroPython.
  • Четыре соединительных кабеля типа мама-мама

Как подключить 7-сегментный дисплей к Raspberry Pi Pico

7-сегментный дисплей имеет четыре контакта: CLK, DIO, GND и VCC. Если вы используете перемычки «мама-мама», вам не понадобится макетная плата для подключения.

Подключите следующие контакты 7-сегментного дисплея к PIco:

  1. VCC на 3V3 на Pico
  2. GND к GND на Pico
  3. CLK к GP16 на Pico
  4. DIO к GP17 на Pico

Вы можете подключить контакты CLK и DIO к любым двум контактам GPIO на Pico, которые поддерживают I2C SCL и SDA соответственно, и вы можете подключить контакт GND к любому из 8 контактов GND Pico.

Как кодировать 7-сегментный дисплей в MicroPython

Мы во многом полагаемся на отличную библиотеку TM1637 MicroPython от Майка Каузера и попробуем создать сценарий, который показывает различные варианты отображения, которые вы можете использовать в своих собственных проектах.  

5. Загрузите файл tm1637.py из проекта Mike Causer TM1637 на github. Другие файлы вам не нужны. 

6. Скопируйте tm1637.py в корневой каталог вашего Pico . Поскольку Pico с MicroPython не отображается как буква диска, самый простой способ сделать это — открыть tm1637.py в Thonny или IDE или на ваш выбор и сохранить его оттуда. 

7. Создайте новый скрипт MicroPython в Thonny или в IDE MicroPython по вашему выбору. 

8. Импортируйте необходимые библиотеки.

import tm1637
from machine import Pin
from utime import sleep

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

9. Создайте экземпляр объекта tm1637.TM1637 с именем «mydisplay» и введите правильные номера контактов для контактов CLK и DIO в качестве параметров.

mydisplay = tm1637. TM1637(clk=Pin(16), dio=Pin(17))

10. Используйте метод «показать», чтобы отобразить любые четыре символа. Это могут быть буквы или цифры, но обратите внимание, что многие буквы, например W, будут выглядеть неудобно. Если вы введете более четырех символов, будут показаны только первые четыре. Обязательно заключите строку параметра в кавычки.

mydisplay.show(“Pico”)
sleep(1)

11. Очистите экран , используя «показать» с четырьмя пробелами (при условии, что на вашем экране четыре цифры).

mydisplay.show(“    “)
sleep(1)

Обратите внимание, что если вы не очистите дисплей, он останется включенным, когда ваша программа завершит выполнение. Вам не нужно очищать дисплей при его изменении, но если вы используете другую команду show с меньшим, чем максимальное количество символов, любые символы, которые вы не заменяете, останутся на экране. Например, если вы показываете («ореол»), а затем показываете («20»), на экране будет отображаться 20lo.  

12. Используйте «числовой» метод, чтобы показать целое число. Не заключайте параметр в кавычки. Вы можете отображать отрицательное или положительное число, но если это отрицательное число, он должен зарезервировать один символ для знака минус. Обратите внимание, что если вы вводите число, большее доступного количества цифр (например, ввод 12345 на четырехзначном дисплее), на экране будет отображаться «9999» или «-999» для отрицательных чисел.

mydisplay.number(-123)
sleep(1)

Используйте метод «чисел», чтобы показать время видимым цветом. Введите в качестве параметров два двузначных числа, и двоеточие, если оно есть на вашем экране, будет отображаться между ними. Этот пример будет отображаться как 12:59.

13. Учитывая, что вы можете использовать метод «show» для отображения цифр или букв, вы можете задаться вопросом, зачем вам использовать числовой метод. Одна из причин заключается в том, что вам не нужно преобразовывать целые числа в строки, а другая заключается в том, что на экране будет использоваться только необходимое количество цифр, поэтому вам не нужно вводить пробелы, чтобы выровнять номер по правому краю.

mydisplay.numbers(12,59)
sleep(1)

14. Отрегулируйте яркость с помощью метода яркости. В качестве параметра можно ввести число от 0 (наименьшее) до 7 (наибольшее).

#adjust the brightness to make it loewr
mydisplay.brightness(0)
sleep(1)

15. Используйте метод «прокрутки» для отображения прокручиваемого текста. Введите строку (в кавычках) в качестве первого параметра и добавьте «delay =» и количество миллисекунд, чтобы контролировать скорость прокрутки. Если вы пропустите параметр задержки, по умолчанию будет 250 мс.

mydisplay.scroll("Hello World 123", delay=200)
sleep(1)

16. Используйте метод «температуры», чтобы показать температуру в градусах Цельсия. Этот метод добавляет символ градуса и букву C после цифр. Вы вводите одно или двузначное целое число в качестве температуры, и вы можете делать отрицательные температуры, но это может быть только одна цифра.

mydisplay.temperature(99)
sleep(1)

17. Снова отключите экран, чтобы он не оставался гореть после завершения программы.

mydisplay.show(“    “)

Вот итоговый код:

import tm1637
from machine import Pin
from utime import sleep
mydisplay = tm1637.TM1637(clk=Pin(16), dio=Pin(17))
 
# Show a word
mydisplay.show("Pico")
sleep(1)
 
#blank the screen
mydisplay.show("    ")
sleep(1)
 
#show numbers
mydisplay.number(-123)
sleep(1)
 
#show a time with colon
mydisplay.numbers(12,59)
sleep(1)
 
#adjust the brightness to make it loewr
mydisplay.brightness(0)
sleep(1)
 
#show scrolling text
mydisplay.scroll("Hello World 123", delay=200)
sleep(1)
 
#show temperature
mydisplay.temperature(99)
sleep(1)
 
#blank the screen again
mydisplay.show(" ")

Есть и другие методы, которые Causer документирует на своей странице github, в том числе тот, который преобразует числа в шестнадцатеричный формат или принимает шестнадцатеричный ввод. Однако это основные методы, которые, по нашему мнению, большинству людей понадобятся для использования с 7-сегментным дисплеем и Raspberry Pi Pico.

Все о TM1637 | Hackaday.

io

В моей руке модуль 4-разрядного 7-сегментного дисплея.
Сердцем этого модуля является недорогой последовательный драйвер светодиодов от Titan Micro Electronics под названием TM1637.

В этом уроке я покажу вам, как управлять 4-значным 7-сегментным дисплеем TM1637 с помощью Arduino. Если вы хотите отображать данные датчика, температуру и влажность или хотите спроектировать часы, таймер или счетчик, вам понадобится этот 4-разрядный семисегментный дисплей.

Детали

Intro

В моей руке модуль 4-разрядного 7-сегментного дисплея.
Сердцем этого модуля является недорогой последовательный драйвер светодиодов от Titan Micro Electronics под названием TM1637.

В этом уроке я покажу вам, как управлять 4-значным 7-сегментным дисплеем TM1637 с помощью Arduino. Если вы хотите отображать данные датчика, температуру и влажность или хотите спроектировать часы, таймер или счетчик, вам понадобится этот 4-разрядный семисегментный дисплей.

Рассматриваемые темы

В этом уроке мы поговорим о:

  • Основы 7-сегментного дисплея
  • Обзор оборудования и разводка контактов модуля TM1637
  • TM1637 Установка библиотеки
  • Взаимодействие модуля TM1637 с Arduino
  • Загрузка Basic Arduino Код (поставляется с библиотекой TM1637)

Затем мы рассмотрим некоторые из этих быстрых примеров:

  • Пример 1:  Отображение строки и числа
  • Пример 2:  Отображение прокручивающегося и мигающего текста
  • Пример 3:  Создание 4-значного счетчика: 900 0 Пример
  • 4 90 90 42  Отображение температуры и влажности с помощью DHT11 /DHT22
  • Пример 5:  Создание цифровых часов на основе Arduino

И, наконец, мы рассмотрим некоторые распространенные ошибки.

Основные сведения о 7-сегментном дисплее

7-сегментный дисплей состоит из 7 светодиодов, образующих десятичную цифру 8. Эти светодиоды называются сегментами, потому что, когда они загораются, каждый сегмент участвует в формировании части десятичной или шестнадцатеричной цифры.

Эти отдельные сегменты помечены буквами от «a» до «g», что соответствует каждому отдельному светодиоду. Установив определенный сегмент ВЫСОКИМ или НИЗКИМ, можно сгенерировать желаемый шаблон символов.

Обзор оборудования и разводка контактов модуля TM1637

Модуль поставляется с 4 вилками под прямым углом. Меня немного раздражает, что разъемы контактов находятся на верхней стороне платы. Впрочем, их всегда можно выпаять и поставить внизу платы.

Теперь давайте взглянем на контакты GPIO:
CLK — это контакт входа часов. Вы можете подключить его к любому цифровому выводу Arduino.
DIO — контакт ввода/вывода данных. Это также может быть подключено к любому цифровому выводу Arduino.
ВКК — Подключается к источнику питания от 3,3 В до 5 В.
GND  — контакт заземления.

Контакты CLK и DIO можно подключить к любому цифровому выводу Arduino. Это дает нам возможность подключить множество этих модулей к Arduino, если у каждого экземпляра есть собственная пара контактов. При написании кода нам просто нужно указать пару контактов, а затем просто использовать их в своем проекте.

Если у вас закончились контакты на плате Arduino, вы можете использовать удлинители контактов GPIO, такие как PCF8574. Пожалуйста, ознакомьтесь с моим руководством по модулю Extender, ссылка находится в описании ниже.
PCF8574 GPIO Extender: https://diyfactory007.blogspot.com/2018/12/pcf8574-gpio-extender-with-arduino-and.html

Модуль имеет 4 x 0,36-сегментных 7-сегментных дисплея и «двоеточие» в центре создания часов или проектов, основанных на времени.

Для простого четырехразрядного 7-сегментного дисплея обычно требуется 12 соединительных контактов, но драйвер светодиодов TM1637 устраняет необходимость в дополнительной проводке для 7-сегментного дисплея, и всей настройкой можно управлять только с помощью 2 проводов (DIO и CLK) и еще два для питания, уменьшая общее количество проводов до 4,

Эти модули обмениваются данными с процессором, используя «протокол, подобный I2C». Реализация представляет собой чистую программную эмуляцию и не использует какое-либо специальное оборудование (кроме контактов GPIO).
Модуль работает от 3,3В до 5В с потреблением тока 80мА и позволяет регулировать яркость светодиодов на программном уровне. Они доступны в нескольких различных цветах.

Установка библиотеки TM1637

Для модуля TM1637 доступно множество библиотек. В этом уроке мы будем использовать «TM1637Display Library», написанную «Avishay Orpaz». Скачать библиотеку можно с помощью менеджера библиотек или с Github, ссылка в описании ниже.

Чтобы установить библиотеку с помощью «Диспетчера библиотек», перейдите к Sketch > Include Library > Manage Libraries…
Найдите « TM1637 » и найдите «Avishay Orpaz». Нажмите кнопку «Установить»…

Подробнее »

Посмотреть все подробности

Нравится этот проект?

Делиться

raspberrypi-tm1637 · PyPI

Порт Python 3 из библиотеки MicroPython для модулей четырехъядерных 7-сегментных светодиодных дисплеев на основе светодиодного драйвера TM1637, реализованного на Raspberry Pi.

Например, модуль Grove — 4-значный дисплей

Установка

Этот проект доступен через pip. Убедитесь, что вы используете Python 3.

 $ pip3 install raspberrypi-tm1637
 

Примеры

Основное использование

 импорт tm1637
tm = tm1637.TM1637 (clk = 5, dio = 4)
# все светодиоды на "88:88"
tm.write([127, 255, 127, 127])
# все светодиоды выключены
tm.write([0, 0, 0, 0])
# показать "0123"
tm.write([63, 6, 91, 79])
# показать "Круто"
tm.write([0b00111001, 0b00111111, 0b00111111, 0b00111000])
# показать "ПОМОЩЬ"
тм.шоу('помощь')
# отображать "dEAd", "bEEF"
tm.hex(0xdead)
tm.hex(0xbeef)
# показать "12:59"
тм.номера(12, 59)
# показать "-123"
тм.номер(-123)
# показать температуру '24*C'
тм.температура(24)
 

Более подробные примеры см. в demo.py

Они называются 7-сегментными дисплеями, поскольку на каждую цифру (сегмент) приходится 7 светодиодов. Один байт (7 младших бит) для каждого сегмента. 8-й бит (MSB) предназначен для двоеточия и только во 2-м сегменте.

 А
     ---
  Ф | | Б *
     -G-H (на 2-м сегменте)
  Е | | С *
     ---
      Д
  HGFEDCBA
0b01101101 = 0x6D = 109 = показать "5"
 
Дисплей Корзина Шестигранник декабрь
0 0b00111111 0x3F 63
1 0b00000110 0x06 6
2 0b01011011 0x5B 91
3 0b01001111 0x4F 79
4 0b01100110 0x66 102
5 0b01101101 0x6D 109
6 0b01111101 0x7D 125
7 0b00000111 0x07 7
8 0b01111111 0x7F 127
9 0b01101111 0x6F 111
А 0b01110111 0x77 119
б 0b01111100 0x7C 124
С 0b00111001 0x39 57
д 0b01011110 0x5E 94
Е 0b01111001 0x79 121
Ф 0b01110001 0x71 113
Г 0b00111101 0x3D 61
Н 0b01110110 0x76 118
я 0b00000110 0x06 6
Ж 0b00011110 0x1E 30
К 0b01110110 0x76 118
Л 0b00111000 0x38 56
М 0b01010101 0x55 85
п 0b01010100 0x54 84
О 0b00111111 0x3F 63
П 0b01110011 0x73 115
q 0b01100111 0x67 103
р 0b01010000 0x50 80
С 0b01101101 0x6D 109
т 0b01111000 0x78 120
У 0b00111110 0x3E 62
против 0b00011100 0x1C 28
Ш 0b00101010 0x2A 42
Х 0b01110110 0x76 118
и 0b01101110 0x6E 110
З 0b01011011 0x5B 91
пустой 0b00000000 0x00 0
0b01000000 0x40 64
* 0b01100011 0x63 99

Получить или установить яркость.

 яркость (значение=нет)
 

Запись одного или нескольких сегментов с заданным смещением.

 запись (сегменты, позиция = 0)
 

Преобразование одной шестнадцатеричной цифры (0x00-0x0f) в сегмент.

 encode_digit(цифра)
 

Преобразование строки в список сегментов.

 encode_string(строка)
 

Преобразование одного символа в сегмент.

 encode_char(char)
 

Отображение числа в шестнадцатеричном формате от 0000 до FFFF.

 шестнадцатеричный (значение)
 

Отображение числа от -999 до 9999 с выравниванием по правому краю.

 номер(число)
 

Отображение 2 независимых чисел по обе стороны от (необязательного) двоеточия с ведущими нулями.

 чисел (число1, число2, двоеточие = Истина)
 

Отображает температуру от -9 до 99, а затем градусы C.

 температура (число)
 

Показать строку на дисплее.

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

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