Создаем многодисплейную систему на Arduino Nano

Принцип работы

Семисегментный индикатор – это просто набор обычных светодиодов в одном корпусе. Просто они выложены восьмёркой и имеют форму палочки-сегмента. Можно подключить его напрямую к Arduino, но тогда будет занято 7 контактов, а в программе будет необходимо реализовать алгоритм преобразования числа из двоичного представления в соответствующие «калькуляторному шрифту» сигналы.

Для упрощения этой задачи существует 7-сегментный драйвер. Это простая микросхема с внутренним счётчиком. У неё есть 7 выходов для подключения всех сегментов (a, b, c, d, e, f, g pins), контакт для сбрасывания счётчика в 0 (reset pin) и контакт для увеличения значения на единицу (clock pin). Значение внутреннего счётчика преобразуется в сигналы (включен / выключен) на контакты a-g так, что мы видим соответствующую арабскую цифру.

На микросхеме есть ещё один выход, обозначенный как «÷10». Его значение всё время LOW за исключением момента переполнения, когда значение счётчика равно 9, а его увеличивают на единицу. В этом случае значением счётчика снова становится 0, но выход «÷10» становится HIGH до момента следующего инкремента. Его можно соединить с clock pin другого драйвера и таким образом получить счётчик для двузначных чисел. Продолжая эту цепочку, можно выводить сколь угодно длинные числа.

Микросхема может работать на частоте до 16 МГц, т.е. она будет фиксировать изменения на clock pin даже если они будут происходить 16 миллионов раз в секунду. На той же частоте работает Arduino, и это удобно: для вывода определённого числа достаточно сбросить счётчик в 0 и быстро инкрементировать значение по единице до заданного. Глазу это не заметно.

Реализация

Хотя традиционные семисегментные дисплеи состоят из светодиодов , они часто изготавливаются на ЖК-дисплеях, как в случае с цифровыми калькуляторами и , с вакуумными люминесцентными дисплеями ( VFD ) или в прошлом с газоразрядными индикаторами ( Panaplex ) . и нити накаливания ( Нумитрон ) .

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

Светодиодный дисплей

Шестнадцатеричные цифры на семисегментном дисплее

В семисегментных дисплеях, состоящих из светодиодов , они расположены под сегментами из полупрозрачного пластика и образуют цифру, похожую на цифру 8. Подходящая электронная схема, образованная интегральным устройством с функцией декодирования BCD ( двоично-десятичное число ) для « 7 сегментов», позволяет пилотирование, то есть включение этих светодиодов, чтобы распознаваемые символы отображались в виде цифровых символов. В дополнение к цифрам могут четко отображаться некоторые буквы алфавита (A, C, E, F, H, J, L, P, U, b, c, d, e, g, h, i, o, r, t). , u ), в то время как другие символы, такие как I, O, S, имеющие форму, которую можно легко спутать с другими символами, никогда не видны. С помощью букв от A до F вы можете просмотреть все цифры шестнадцатеричной системы счисления . Кроме того, один или два светодиода с функцией десятичной точки могут быть расположены в
корпусе дисплея слева или справа от группы сегментов.

Этот тип дисплея выпускается в двух вариантах, отличающихся только направлением поляризации светодиодов: с общим катодом и общим анодом , в первом все катоды светодиодов подключаются к штырьку , который необходимо соединить с ссылка схемы, светодиоды включаются, если их анод подключен к логической 1 (напряжению); во втором все аноды присоединяются к общему выводу, а он должен быть подключен к логической 1 (напряжению), поэтому светодиоды загораются, если их катод подключен к логическому 0 (опорный).

Схемы декодирования самые разнообразные, однако одна из них широко использовалась на протяжении десятилетий в версиях TTL , LS (низкое потребление) и CMOS , это 16-контактное устройство, подписанное 7447 и 7448, первая подходит для дисплеев с общим анодом, вторая для тех, у кого общий катод, у обоих есть контакт, который, если он установлен на логический ноль, выключает все горящие сегменты, второй контакт, называемый «проверка лампы», если установлен на логический ноль, включает все сегменты независимо от других входов. Встречаются дисплеи со светодиодами разного цвета (красный, желтый, зеленый, синий, белый) и размером от менее сантиметра до почти десяти. Чтобы сделать большие дисплеи, несколько отдельных светодиодов обычно располагаются на печатной плате .

История

Семисегментное представление фигур можно найти в патенты еще в 1903 г. (в ), когда Карл Кинсли изобрел метод телеграфной передачи букв и цифр и распечатки их на ленте в сегментированном формате. В 1908 году Ф. В. Вуд изобрел 8-сегментный дисплей, на котором число 4 отображалось с помощью диагональной полосы (). В 1910 г. на сигнальном табло котельной электростанции был установлен семисегментный индикатор, освещенный лампами накаливания. Они также использовались, чтобы показывать набранный телефонный номер операторам при переходе с ручного набора номера на автоматический. Они не получили широкого распространения до появления светодиодов в 1970-х годах.

Семисегментный дисплей с нитью

Некоторые ранние семисегментные дисплеи использовали нити накаливания в откачанной лампочке; они также известны как нумитроны. Вариант (минитроны) использовал откачанный в горшке коробка. Минитроны – это сегментные дисплеи с нитью накала, которые размещены в корпусах DIP, как современные сегментные светодиодные дисплеи. У них может быть до 16 сегментов. Были также сегментные дисплеи, в которых вместо светодиодов или нитей накаливания использовались маленькие лампы накаливания. Они работали так же, как современные сегментные светодиодные дисплеи.

Вакуумный флуоресцентный дисплей версии также использовались в 1970-х годах.

Многие ранние (примерно 1970-е годы) светодиодные семисегментные дисплеи имели каждую цифру умереть. Это сделало цифры очень маленькими. Некоторые добавили в дизайн увеличительные линзы, чтобы цифры были более разборчивыми.

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

Для многих приложений матричные ЖК-дисплеи в значительной степени вытеснили светодиодные дисплеи в целом, хотя даже в ЖК-дисплеях широко распространены семисегментные дисплеи. В отличие от светодиодов, формы элементов на ЖК-панели произвольны, поскольку на дисплее они формируются фотолитография. В отличие от этого, формы светодиодных сегментов имеют тенденцию быть простыми. прямоугольники, что отражает тот факт, что им необходимо физически придавать форму, что затрудняет формирование более сложных форм, чем сегменты 7-сегментных дисплеев. Однако высокий коэффициент распознавания семисегментных дисплеев и сравнительно высокая визуальная контраст получаемые такими дисплеями относительно точечно-матричных цифр, делает семисегментные многозначные ЖК-экраны очень распространенными на основных калькуляторы.

Семисегментный дисплей вдохновил шрифтовые дизайнеры для создания шрифтов, напоминающих этот дисплей (но более разборчивых), например Новый алфавит, «DB LCD Temp», «ION B» и т. Д.

Используя ограниченный диапазон букв, которые выглядят как (перевернутые) цифры, семисегментные дисплеи обычно используются школьниками для формирования слов и фраз с использованием техники, известной как “калькулятор орфографии “.

Двухразрядные модификации

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

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

При этом семисегментные индикаторы важно устанавливать на модулятор. Непосредственно регулятор должен располагаться в стороне

Соединяется он с блоком питания через тетрод. Также для лучшей проводимости многие специалисты рекомендуют использовать усилитель. В данном случае блок питания подойдет на 15 В. В конце работы останется лишь зафиксировать проводник.

Одноразрядный 7-сегментный индикатор

Мы имеем дело опять с набором светодиодов, только на этот раз их 8 (семь полосок и один кружочек) и они расположены не друг за другом, а в определённом порядке, которые позволяют вам выводить цифры от 0 до 9.

Важная отличительная черта – у индикатора имеются общие ножки для катода (ножки 3 и 8). Всего их две и они равноценны. Это удобно, вам не нужно будет от каждого катода вести отдельный провод на землю. Достаточно выбрать один из общих катодов и от неё соединиться с GND. Аноды у всех отдельные.

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

На 7-сегментный индикатор распространяются те же правила, что и на стандартные светодиоды – у каждого должен быть свой резистор. Поэтому для опытов приготовьте 8 резисторов.

Схематично можно изобразить следующим образом.

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

Собираем на макетной плате. Соединяем провода по порядку, начиная с первой ножки, которая идёт на второй порт. На землю идёт восьмая ножка индикатора.

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

Если мы хотим помигать цифрой 1, то нам надо использовать светодиоды 4 и 6, которые идут на порты 4 и 6 платы микроконтроллера.

Если мы захотим вывести цифру 5, то понадобится работать с пятью светодиодами, цифру 8 – уже семь светодиодов. При сложных проектах работать с таким количеством становится затруднительно. Придётся каждый раз смотреть на схему, что вспомнить, какие светодиоды нужно включить для отображения каждой цифры.

Но можно пойти другим путём. А поможет нам единица информации – байт. Байт в своём двоичном представлении состоит из 8 бит. Каждый бит может принимать значения 0 или 1. А наш светодиодный индикатор как раз и состоит из восьми светодиодов. Таким образом мы можем представить цифру на индикаторе в виде набора байт, где единица будет отвечать за включённый диод, а ноль – за выключенный диод.

Число в двоичном виде записывается следующим образом:

Первые два символа 0b дают понять, что речь идёт о двоичном счёте. Все нули означают, что все светодиоды будут выключены.

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

Можно самостоятельно включать по отдельности каждый диод, перемещая единицу в представленном байте. Поняв принцип, можно, например, заметить, что за точку отвечает четвёртый бит справа. Если мы его не будем использовать, то он всегда будет равен 0. За чёрточку посередине индикатора отвечает самый последний байт (или первый слева).

Комбинируя набор нулей и единиц, можно создать нужные нам цифры. Например, цифра 0 будет представлена как 0b01110111.

Давайте напишем пример вывода цифры 0.

Код немного избыточен, переменная mask здесь лишняя, но она нам пригодится в следующем примере

Здесь важно, что мы пробегаемся в цикле по числу светодиодов и устанавливаем у всех режим OUTPUT. Затем также в цикле проходим через все светодиоды и узнаём, комбинацию бит с помощью метода bitRead()

Полученная информация помогает нам подсветить нужные светодиоды и получить цифру 0 на выходе.

Для остальных цифр можно также подготовить нужные наборы бит.

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

Запустив пример, мы получим реальный секундомер. За точность не ручаюсь, но для простых задач подойдёт.

На видео некоторые цифры отображаются коряво, видимо из-за особенностей записи. В реальности все цифры работают как положено.

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

На Амперке есть упоминания о двух компонентах, которые можно использовать для светодиодного индикатора. Я пока ими не пользовался:

http://amperka.ru/product/74hc595-shift-out-register
http://amperka.ru/product/cd4026-segment-driver

Like this post? Please share to your friends: