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:
- VCC на 3V3 на Pico
- GND к GND на Pico
- CLK к GP16 на Pico
- 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.