Используйте семисегментный индикатор SegM8 для отображения цифр, символов и некоторых букв, которые будут видны на расстоянии до 50 метров.
С модулями SegM8 вам не придётся думать про схему управления и питания каждого сегмента. Мы всё продумали, вам осталось лишь подключить контроллер с интерфейсом SPI и подать на индикатор общее питание!
В качестве мозга для работы с индикатором SegM8 рассмотрим платформы из семейства Arduino.
Для старта необходимо подключить железо и выполнить программную настройку.
На аппаратном уровне светодиодный модуль общается с управляющей электроникой по интерфейсу SPI. Рассмотрим два случая коммуникации:
Подробнее про SPI в Arduino
Hardware SPI — это аппаратный SPI, который предназначен для общения с модулями по одноименному интерфейсу. Контакты MOSI, MISO и SCK интерфейса SPI вынесены на платах Arduino на отдельный ICSP-разъём.
Подключим SegM8 к платформе Arduino Uno. Для коммуникации используйте соединительные провода «папа-папа» и «мама-папа».
Индикатор SegM8 | Arduino Uno |
---|---|
VCC | +5V |
GND | GND |
CS | 10 |
DI / MISO | DO / MOSI |
CLK / SCK | CLK / SCK |
Для быстрой сборки и отладки устройства рекомендуем взять плату расширения Screw Shield, которая одевается сверху на Arduino Uno методом бутерброда.
Software SPI — это программный SPI, который который позволяет имитировать аппаратный SPI на других контактах платы. Это удобно когда на плате нет доступа к контактам Hardware SPI.
Подключим SegM8 к платформе Arduino Uno. Для коммуникации используйте соединительные провода «папа-папа».
Индикатор SegM8 | Arduino Uno |
---|---|
VCC | +5V |
GND | GND |
CS | 10 |
DI / MISO | 5 |
CLK / SCK | 7 |
Для быстрой сборки и отладки устройства рекомендуем взять плату расширения Screw Shield, которая одевается сверху на Arduino Uno методом бутерброда.
На этом установка закончена, теперь смело переходите к экспериментам.
Выведем на семисегментный индикатор значения счётчика от 0 до 9.
// Библиотека для работы с cемисегментным модулем SegM8 // https://github.com/amperka/SegM8 // Подробности и описание функций читайте в API.md #include "segm8.h" // Создаём объект для работы с модулем SegM8 // Используем аппаратный SPI // Передаём номер пина CS и кол-во подключенных индикаторов SegM8 module(10, 1); void setup() { // Инициализируем cемисегментный индикатор SegM8 module.begin(); } void loop() { // Перебираем показания счётчика от 0 до 9 for (int counter = 0; counter < 10; counter++) { // Выводим текущее значение счётчика module.display(counter, 0, 1); // Ждём 1 секунду delay(1000); } }
// Библиотека для работы с cемисегментным модулем SegM8 // https://github.com/amperka/SegM8 // Подробности и описание функций читайте в API.md #include "segm8.h" // Создаём объект для работы с модулем SegM8 // Используем программный SPI // Передаём номер пинов CS, DI, CLK // и кол-во подключенных индикаторов SegM8 module(10, 5, 7, 1); void setup() { // Инициализируем cемисегментный индикатор SegM8 module.begin(); } void loop() { // Перебираем показания счётчика от 0 до 9 for (int counter = 0; counter < 10; counter++) { // Выводим текущее значение счётчика module.display(counter, 0, 1); // Ждём 1 секунду delay(1000); } }
После прошивки устройства, счётчик на индикаторе не заставит себя долго ждать.
Если яркость свечения индикатора для вас слишком слабая, подключите к SegM8 дополнительное питание через силовой клеммник.
Семисегментные индикаторы поддерживают последовательное подключение между собой в цепочку (гирлянду). Каждый новый модуль добавляет к текущему дисплею ещё один разряд для отображения цифры или буквы. Кол-во подключаемых модулей ограничено только мощностью источника питания и памятью контроллера.
Добавим к предыдущему примеру ещё три светодиодных модуля SegM8. Для соединения индикаторов между собой используйте штыревые контакты PLH-40, а откусить нужное кол-во штырьков помогут бокорезы.
Выведем на сборку из четырёх семисегментных индикаторов строку «7Seg».
// Библиотека для работы с cемисегментным модулем SegM8 // https://github.com/amperka/SegM8 // Подробности и описание функций читайте в API.md #include "segm8.h" // Создаём объект для работы с модулем SegM8 // Используем аппаратный SPI // Передаём номер пина CS и кол-во подключенных индикаторов SegM8 module(10, 4); void setup() { // Инициализируем cемисегментный индикатор SegM8 module.begin(); // Выводим строку module.display("7Seg", 0, 4); } void loop() { }
// Библиотека для работы с cемисегментным модулем SegM8 // https://github.com/amperka/SegM8 // Подробности и описание функций читайте в API.md #include "segm8.h" // Создаём объект для работы с модулем SegM8 // Используем программный SPI // Передаём номер пинов CS, DI, CLK // и кол-во подключенных индикаторов SegM8 module(10, 5, 7, 4); void setup() { // Инициализируем cемисегментный индикатор SegM8 module.begin(); // Выводим строку module.display("7Seg", 0, 4); } void loop() { }
После прошивки устройства вы увидите соответствующую надпись на индикаторах.
Если яркость свечения индикаторов для вас слишком слабая, подключите к SegM8 дополнительное питание через силовой клеммник.
В качестве мозга для работы с индикатором SegM8 рассмотрим платформы из семейства Raspberry Pi.
Для старта необходимо подключить железо и выполнить программную настройку.
На аппаратном уровне светодиодный модуль общается с управляющей электроникой по интерфейсу SPI.
Подробнее про SPI в Raspberry Pi
Подключим SegM8 к платформе Raspberry Pi 4. На Raspberry Pi есть несколько видов нумерации, мы будем использовать нумерацию BCM
. Для коммуникации используйте соединительные провода «папа-мама»
Индикатор SegM8 | Raspberry Pi 4 (BCM) |
---|---|
GND | 5V |
GND | GND |
CS | SPI0CE0 / 8 |
DI / MISO | MOSI0 / 10 |
CLK / SCK | SCK0 / 11 |
Для быстрой сборки и отладки устройства возьмите плату расширения Troyka HAT, которая надевается сверху на малину методом бутерброда.
Имена пинов на Troyka HAT относятся к нумерации Wiring Pi
, которая отличается от стандартной нумерации BCM
одноплатника Raspberry Pi. Для подробностей смотрите распиновку на Troyka HAT.
Индикатор SegM8 | Raspberry Pi 4 (BCM) | Troyka HAT (WiringPI) |
---|---|---|
GND | GND | GND |
CS | SPI0CE0 / 8 | SPI0CE0 / 10 |
DI / MISO | MOSI0 / 10 | MOSI0 / 12 |
CLK / SCK | SCK0 / 11 | SCK0 / 14 |
pip3 install segm8
На этом установка закончена, теперь смело переходите к экспериментам.
Выведем на семисегментный индикатор значения счётчика от 0 до 9.
# Библиотека для работы с cемисегментным модулем SegM8 import segm8 # Библиотека для работы с временем import time # Создаём объект для работы с модулем SegM8 # Передаём номер пина CS (CE0 или CE1) и кол-во подключенных индикаторов segm8_module = segm8.SegM8(0, 1) while True: # Перебираем показания счётчика от 0 до 9 for number in range(10): # Выводим текущее значение счётчика segm8_module.display_int(number, 0, 1) # Ждём 1 секунду time.sleep(1)
После прошивки устройства, счётчик на индикаторе не заставит себя долго ждать.
Если яркость свечения индикатора для вас слишком слабая, подключите к SegM8 дополнительное питание через силовой клеммник.
Семисегментные индикаторы поддерживают последовательное подключение между собой в цепочку (гирлянду). Каждый новый модуль добавляет к текущему дисплею ещё один разряд для отображения цифры или буквы. Кол-во подключаемых модулей ограничено только мощностью источника питания и памятью контроллера.
Добавим к предыдущему примеру ещё три светодиодных модуля SegM8. Для соединения индикаторов между собой используйте штыревые контакты PLH-40, а откусить нужное кол-во штырьков помогут бокорезы.
Выведем на сборку из четырёх семисегментных индикаторов строку «7Seg».
# Библиотека для работы с cемисегментным модулем SegM8 import segm8 # Библиотека для работы с временем import time # Создаём объект для работы с модулем SegM8 # Передаём номер пина CS (CE0 или CE1) и кол-во подключенных индикаторов segm8_module = segm8.SegM8(0, 4) # Выводим строку «7Seg» segm8_module.display_string("7Seg", 0, 4) while True: time.sleep(1)
После прошивки устройства вы увидите соответствующую надпись на индикаторах.
Если яркость свечения индикаторов для вас слишком слабая, подключите к SegM8 дополнительное питание через силовой клеммник.
Индикатор поддерживает два режима яркости: штатный и экономный.
Несколько модулей легко объединяются в табло, подключаясь между собой штыревыми контактами.
За отображения информации отвечает семисегментный индикатор SA40-19, который состоит из семи отдельных светодиодов плоской формы A
, B
, C
, D
, E
, F
, G
и точки DP
. Светодиоды расставлены на плате в виде арабской восьмёрки, такой способ даёт при включении определённых сегментов отображать цифры и некоторые буквы.
Светодиоды индикатора SA40-19 подключены к плате управления SegM8, которая получает команды от внешнего микроконтроллера и транслирует их на семисегментный экран.
На задней панели индикатора расположены два винтовых силовых клеммника для питания устройства в штатном режиме на полную яркость. Группа контактов Input служит для подключения к модулю источника питания, а контакты Output — для прабрасывания питания к следующему модулю в цепочке. Каждый модуль при всех зажженных сегментах потребляет ток в штатном режиме до 300 мА.
Контакт | Назначение | Подключение |
---|---|---|
+12V | Силовое питание | Силовое питания 5–12 В |
GND | Земля | Общая земля |
На задней панели индикатора расположены два винтовых сигнальных клеммника. Группа контактов Input служит для подключения к модулю внешнего контроллера, а контакты Output — для прабрасывания данных к следующему модулю в цепочке. Каждый модуль при всех зажженных сегментах потребляет ток в эконом режиме до 50 мА.
Контакт | Назначение | Подключение |
---|---|---|
VCC | Питание | Питание 3,3–5 В |
GND | Земля | GND |
CS / SS | Выбор модуля на шине SPI | CS / SS |
DI / MISO | Вход ведомого устройства на шине SPI | DO / MOSI |
CLK / SCK | Тактовый сигнал на шине SPI | CLK / SCK |
На плате модуля расположен универсальный преобразователь питания TPS63060, который при низком входном напряжении поднимет питание до 10,4 вольт, а при высоком — понизит до 10,4 вольт. В итоге вы можете использовать широкий выбор источников питания.
Понижающий регулятор напряжения L78L05AB с выходом 5 вольт, обеспечивает питание микросхем и другой логики модуля. Максимальный выходной ток составляет 100 мА.
За логику управления индикатором отвечает микросхема выходного сдвигового регистра 74HC595, которая является преобразователем последовательного интерфейса в параллельный. Чип получает команды по SPI от внешнего микроконтроллера и выдаёт разом отдельные сигналы на каждый сегмент.
Т.к. каждый сегмент в модуле достаточно прожорливый по току и напряжению, то выходные сигналы с микросхемы сдвигового регистра сначала поступают на усилительные каскады, а затем уже на светодиодный индикатор.
На модуле расположено восемь выходных каналов для питания индикаторных сегментов: семь каскадов предназначены для плоских сегментов и один — на точку. Каждый канал состоит из управляющего полевого транзистора с N-каналом и токоограничивающего резистора.
В свою очередь всеми каналами управляет один драйвер в виде выходного сдвигового регистра.