Подключение 7 сегментного индикатора к arduino: Arduino: 7-сегментный индикатор

Содержание

Программирование Arduino урок 12 — семисегментный индикатор часть 1

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

Знакомство с 7-сегментным индикатором будет состоять из двух частей. В первой части мы поверхностно «пробежимся» по теоретической составляющей, поработаем с «железом» и напишем простенькие программки.

Прошлый раз мы работали с последовательностью из 8 светодиодов, сегодня их также будет 8 (7 – светодиодных полосок и 1 точка). В отличии от предыдущей последовательности, элементы этого набора не выстроенные в ряд (друг за дружкой), а расположены в определённом порядке. Благодаря чему используя лишь один компонент можно вывести 10 цифр (от 0 до 9).

Еще одно существенное отличие, что выделяет данный индикатор на фоне простых светодиодов. У него общий катод (вернее две равноценные ножки 3 и 8, на который заведен катод). Достаточно всего лишь соединить один из катодов с землей (

GND). Аноды у всех элементов индикатора индивидуальные.

Небольшое отступление. Все выше сказанное относится к 7-сегментным индикаторам с общим катодом. Однако существуют индикаторы с общим анодом. Подключение таких индикаторов имеет существенные отличия, поэтому прошу не путать «грешное с праведным». Необходимо четко понимать, какой именно тип семисегментника у вас в руках!

Кроме отличий между простыми светодиодами и 7-сегментными индикаторами, есть и общие черты. Например: индикаторы, как и светодиоды, можно смонтировать в ряд (последовательность) для отображения двух-, трёх-, четырехзначных чисел (разрядов). Однако не советую сильно заморачиваться по поводу самостоятельной сборки сегментных наборов. В продаже «рядом» с одноразрядными индикаторами, продаются и многоразрядные.

Надеюсь, вы не забыли об необходимости использования токоограничивающих резисторов при подключении светодиодов. Это же относится и к индикаторам: на каждый элемент индикатора должен быть подключен свой резистор. 8 элементов ( 7 + 1) – 8 резисторов.

У меня под рукой оказался семисегментник с маркировкой 5161AS (общий катод). Распиновка контактов:

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

Как говорил ранее, для того, чтобы включить сегмент «А» подключим к любому общему контакту (3 или 8) «землю», а на вывод 7 подадим 5В питания. Если индикатор с общим анодом, то на анод подаём 5В, а на вывод сегмента «землю»!

Соберём тестовый стенд. Соединяем провода по порядку, начиная с первой ножки, которая идёт на 2-й вывод платы Ардуино. Землю подключим к 8 выводу индикатора.

После того, как стенд собран можно приступать к написанию прошивки.

Для проверки индикатора запустим написанную программу. Выберем элемент «А» и помигаем им.


Теперь помигаем цифрой 2. Для этого включим еще несколько элементов.

Чтобы вывести одну цифру, нужно написать n-число строчек кода. Затруднительно, не находите.

Есть другой путь. Для того, чтобы вывести любую цифру на индикаторе, сначала её нужно представить в виде определенной последовательности бит.

Таблица соответствия.

 

Если у дисплея общий анод, то 1 нужно заменить на 0, а 0 – на 1!

Столбец hex – представление цифры в байтовом виде (более детально поговорим об этом во второй части).

Число в двоичной системе счисления записывается следующим образом: 0b00000000. 0b – двоичная система. Нули означают, что все светодиоды выключены.

При подключении мы задействовали выводы с 2 по 9. Чтобы включить 2 вывод записываем в него единицу = 0b00000001. За точку отвечает четвёртый бит справа. За чёрточку посередине индикатора отвечает самый последний бит.

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

Для уменьшения количества набранных строк воспользуемся циклом, который позволяет «перебрать» все 8 бит. Переменной Enable_segment присваивается значение считываемого бита. После этого текущий вывод устанавливается в соответствующий режим (наличия или отсутствия сигнала).

Примечание: функция bitRead() считывает состояние указанного бита и возвращает значение состояния (0 или 1). bitRead(x, n) где, x — число, бит которого необходимо считать; n — номер бита, состояние которого необходимо считать. Нумерация начинается с младшего значащего бита (крайнего правого) с номером 0.

И в завершении первой части напишем небольшой счетчик.

lesson_14_0

На этом всё! Продолжении следует!

Подключение 7-сегментного индикатора к Ардуино

Сегодня я расскажу о подключении светодиодного индикатора АЛС334Б к Ардуино.
Для своих часов-будильника я решил выбрать индикацию вполне привычными светодиодными семисегментными индикаторами.

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



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

Цифры, 6, 7 и 9 имеют по два разных представления на семисегментном индикаторе. В ранних калькуляторах Casio и Электроника цифра 0 отображалась в нижней половине индикатора.

Сегменты обозначаются буквами от A до G; восьмой сегмент — десятичная запятая, предназначенная для отображения дробных чисел.
Изредка на семисегментном индикаторе отображают буквы.

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


Выбор индикатора

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

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

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

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

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

Подключение

Перерыв интернет, и не найдя описания подключения конкретно этого индикатора, решил определить всё сам:

Сам процесс оказался интересным и совсем не сложным.

Так, из 14 ножек, мне понадобилось только 9 (7 на сегменты, 1 на запятую и 1 на общее питание +3.3v). Проверял, подключая сегменты на землю (в ардуине это будет отсутствие сигнала на ноге).

Чтобы выводить цифры, надо комбинировать включение-выключение сегментов. Так, например, для цифры семь, надо включить сегменты

A, B и C. Или, с Ардуины подать на их выводы LOW, а на остальные HIGH (для общего катода - наоборот, а сам катод нужно подключить на землю).

Вот, собственно табличка, соответствий для цифер от 0 до 9:
 

ЦифраСегменты
0ABCDEF
1BC
2ABDEG
3ABCDG
4BCFG
5ACDFG
6ACDEFG
7ABC
8ABCDEFG
9ABCDFG
Результат

Ну, и в завершении знакомства, я написал простенькую программку, которая циклично показывает цифры от 0 до 9, с интервалом в одну секунду. Вот что получилось:

Код скетча можно посмотреть тут: http://www.copypastecode.com/66132/

7 Сегментный индикатор подключение - Вэб-шпаргалка для интернет предпринимателей!

В этой статье описывается схема подключения пары светодиодных семисегментных индикаторов к Arduino Uno с помощью микросхем-драйверов CD4026. При таком подходе, для вывода числа с любым количеством разрядов используется всего 2 цифровых выхода Arduino.

Для примера будем выводить на индикаторы количество секунд, прошедших с момента старта работы.

Исходные компоненты

Для эксперимента нам понадобятся:

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

Семисегментный индикатор — это просто набор обычных светодиодов в одном корпусе. Просто они выложены восьмёркой и имеют форму палочки-сегмента. Можно подключить его напрямую к 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 и быстро инкрементировать значение по единице до заданного. Глазу это не заметно.

Подключение

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

Далее, подключим один из драйверов в соответствии с его распиновкой

Контакты 3 и 8 на индикаторе обозначены как «катод», они общие для всех сегментов, и должны быть напрямую соединены с общей землёй.

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

Соединять необходимо сопоставляя распиновку микросхемы (выходы a-g) и распиновку индикатора (входы a-g)

Повторяем процедуру для второго разряда

Теперь вспоминаем о контакте «reset»: нам необходимо соединить их вместе и притянуть к земле через стягивающий резистор. В последствии, мы подведём к ним сигнал с Arduino, чтобы он мог обнулять значение целиком в обоих драйверах.

Также подадим сигнал с «÷10» от правого драйвера на вход «clock» левого. Таким образом мы получим схему, способную отображать числа с двумя разрядами.

Стоит отметить, что «clock» левого драйвера не стоит стягивать резистором к земле, как это делалось для правого: его соединение с «÷10» само по себе сделает сигнал устойчивым, а притяжка к земле может только нарушить стабильность передачи сигнала.

Железо подготовленно, осталось реализовать несложную программу.

Программирование

Результат

Подключаем контакт 2 с Arduino к контакту clock младшего (правого) драйвера, контакт 3 — к общему reset’у драйверов; разводим питание; включаем — работает!

В этой статье описывается схема подключения пары светодиодных семисегментных индикаторов к Arduino Uno с помощью микросхем-драйверов CD4026. При таком подходе, для вывода числа с любым количеством разрядов используется всего 2 цифровых выхода Arduino.

Для примера будем выводить на индикаторы количество секунд, прошедших с момента старта работы.

Исходные компоненты

Для эксперимента нам понадобятся:

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

Семисегментный индикатор — это просто набор обычных светодиодов в одном корпусе. Просто они выложены восьмёркой и имеют форму палочки-сегмента. Можно подключить его напрямую к 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 и быстро инкрементировать значение по единице до заданного. Глазу это не заметно.

Подключение

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

Далее, подключим один из драйверов в соответствии с его распиновкой

Контакты 3 и 8 на индикаторе обозначены как «катод», они общие для всех сегментов, и должны быть напрямую соединены с общей землёй.

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

Соединять необходимо сопоставляя распиновку микросхемы (выходы a-g) и распиновку индикатора (входы a-g)

Повторяем процедуру для второго разряда

Теперь вспоминаем о контакте «reset»: нам необходимо соединить их вместе и притянуть к земле через стягивающий резистор. В последствии, мы подведём к ним сигнал с Arduino, чтобы он мог обнулять значение целиком в обоих драйверах.

Также подадим сигнал с «÷10» от правого драйвера на вход «clock» левого. Таким образом мы получим схему, способную отображать числа с двумя разрядами.

Стоит отметить, что «clock» левого драйвера не стоит стягивать резистором к земле, как это делалось для правого: его соединение с «÷10» само по себе сделает сигнал устойчивым, а притяжка к земле может только нарушить стабильность передачи сигнала.

Железо подготовленно, осталось реализовать несложную программу.

Программирование

Результат

Подключаем контакт 2 с Arduino к контакту clock младшего (правого) драйвера, контакт 3 — к общему reset’у драйверов; разводим питание; включаем — работает!

Популярное

  • Устройство и программирование микроконтроллеров AVR для начинающих — 143
  • Трехканальный термостат, терморегулятор, таймер на ATmega8 — 70
  • Двухканальный термостат, терморегулятор на ATmega8 — 67

Семисегментный светодиодный индикатор
Схема подключения одноразрядного семисегментного индикатора
Схема подключения многоразрядного семисегментного индикатора

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

Семисегментный светодиодный индикатор , как говорит его название, состоит из семи элементов индикации (сегментов), включающихся и выключающихся по отдельности. Включая их в разных комбинациях, из них можно составить упрощённые изображения арабских цифр.
Сегменты обозначаются буквами от A до G; восьмой сегмент — десятичная точка (decimal point, DP), предназначенная для отображения дробных чисел.
Изредка на семисегментном индикаторе отображают буквы.

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

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

Кроме десяти цифр, семисегментные индикаторы способны отображать буквы. Но лишь немногие из букв имеют интуитивно понятное семисегментное представление.
В латинице : заглавные A, B, C, E, F, G, H, I, J, L, N, O, P, S, U, Y, Z, строчные a, b, c, d, e, g, h, i, n, o, q, r, t, u.
В кириллице : А, Б, В, Г, г, Е, и, Н, О, о, П, п, Р, С, с, У, Ч, Ы (два разряда), Ь, Э/З.
Поэтому семисегментные индикаторы используют только для отображения простейших сообщений.

Всего семисегментный светодиодный индикатор может отобразить 128 символов:

В обычном светодиодном индикаторе девять выводов: один идёт к катодам всех сегментов, а остальные восемь — к аноду каждого из сегментов. Эта схема называется «схема с общим катодом», существуют также схемы с общим анодом (тогда все наоборот). Часто делают не один, а два общих вывода на разных концах цоколя — это упрощает разводку, не увеличивая габаритов. Есть еще, так называемые «универсальные», но я лично с такими не сталкивался. Кроме того существуют индикаторы со встроенным сдвиговым регистром, благодаря чему намного уменьшается количество задействованных выводов портов микроконтроллера, но они намного дороже и в практике применяются редко. А так как необъятное не объять, то такие индикаторы мы пока рассматривать не будем (а ведь есть еще индикаторы с гораздо большим количеством сегментов, матричные).

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

Подключение одноразрядного семисегментного индикатора к микроконтроллеру

На схеме ниже, показано как подключается одноразрядный семисегментный индикатор к микроконтроллеру.
При этом следует учитывать, что если индикатор с ОБЩИМ КАТОДОМ, то его общий вывод подключается к «земле», а зажигание сегментов происходит подачей логической единицы на вывод порта.
Если индикатор с ОБЩИМ АНОДОМ, то на его общий провод подают «плюс» напряжения, а зажигание сегментов происходит переводом вывода порта в состояние логического нуля .

Осуществление индикации в одноразрядном светодиодном индикаторе осуществляется подачей на выводы порта микроконтроллера двоичного кода соответствующей цифры соответствующего логического уровня (для индикаторов с ОК — логические единицы, для индикаторов с ОА — логические нули).

Токоограничительные резисторы могут присутствовать в схеме, а могут и не присутствовать. Все зависит от напряжения питания, которое подается на индикатор и технических характеристик индикаторов. Если, к примеру, напряжение подаваемое на сегменты равно 5 вольтам, а они рассчитаны на рабочее напряжение 2 вольта, то токоограничительные резисторы ставить необходимо (чтобы ограничить ток через них для повышенного напряжении питания и не сжечь не только индикатор, но и порт микроконтроллера).
Рассчитать номинал токоограничительных резисторов очень легко, по формуле дедушки Ома.
К примеру, характеристики индикатора следующие (берем из даташита):
— рабочее напряжение — 2 вольта
— рабочий ток — 10 мА (=0,01 А)
— напряжение питания 5 вольт
Формула для расчета:
R= U/I (все значения в этой формуле должны быть в Омах, Вольтах и Амперах)
R= (напряжение питания — рабочее напряжение)/рабочий ток
R= (5-2)/0.01 = 300 Ом

Подключение многоразрядного семисегментного индикатора к микроконтроллеру

Схема подключения многоразрядного семисегментного светодиодного индикатора в основном та-же, что и при подключении одноразрядного индикатора. Единственное, добавляются управляющие транзисторы в катодах (анодах) индикаторов:

На схеме не показано, но между базами транзисторов и выводами порта микроконтроллера необходимо включать резисторы, сопротивление которых зависит от типа транзистора (номиналы резисторов рассчитываются, но можно и попробовать применить резисторы номиналом 5-10 кОм).

Осуществление индикации разрядами осуществляется динамическим путем:
— выставляется двоичный код соответствующей цифры на выходах порта РВ для 1 разряда, затем подается логический уровень на управляющий транзистор первого разряда
— выставляется двоичный код соответствующей цифры на выходах порта РВ для 2 разряда, затем подается логический уровень на управляющий транзистор второго разряда
— выставляется двоичный код соответствующей цифры на выходах порта РВ для 3 разряда, затем подается логический уровень на управляющий транзистор третьего разряда
— итак по кругу
При этом надо учитывать:
— для индикаторов с ОК применяется управляющий транзистор структуры NPN (управляется логической единицей)
— для индикатора с ОА — транзистор структуры PNP (управляется логическим нулем)

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

(24 голосов, оценка: 4,92 из 5)

Рекомендуем к прочтению

Ардуино и микросхемы | "Индикатор 4 bit 0.56"" SH5461AS 7-сегментный"

7-сегментный 4-bit светодиодный индикатор представляет собой набор простых светодиодов, расположенных в одном корпусе. Такие индикаторы могут быть 1-, 2-, 3-, 4-х разрядные и более. Семисегментные светодиодные индикаторы предназначены для динамической индикации, т.е. быстрого последовательного отображения отдельных выбранных значений. Индикаторы бывают бвух типов: с общим Катодом (в нашем случае) и с общим Анодом. Обозначение сегментов для построения схем смотрите на рисунке ниже:

                                                                 

Недостаток такого дисплея может то, что управления каждым сегментом (читаем: светодиодом) требуется отдельный вывод. Решением данного недоастатка может быть очень рампространенный драйвер "MAX7219CNG". Работа и подключение драйвера рассмотрено нами на примере подключения светодиодной матрицы (в нашем магещине продается под кодом 25942). Ниже мы рассмотрим подключение с помощью другого драйвера.

Для работы 7-сегментного инидкатора можно использовать драйвер. Например: "CD4026BE" от производителя "Texas Instrument". Данный чип является десятичным счетчиком с 7-сегментным дешифратором. Есть наши аналоги ("ИЕ4"). У этой микросхемы есть 7 выводов для подключения 7 сегментов, вывод для сброса счетчика (reset), вывод для увеличения значения на единицу (clock). Значения счетчика преобразуются в сигналы (low/high; вкл/выкл), подаваемые на выводы 7-ми сегментов и мы видим цифры. Т.е. счетчик увеличивается на единицу, когда контакт "clock" становится "HIGH". Вывод "disable clock" посажен на землю и в случае "HIGH" - сигналы на вывод "clock" игнорируются. Для вывода сигналов на сегменты надо подать напряжение питания также и на вывод "enable display". Напряжение питания для данного драйвера 3-18VDC.  Для того, чтобы увеличить количество цифр (двухзначные, трехзначные числа и т.д.) можно соединить вывод "÷10 output" с выводом "clock" на другой микросхеме. Распиновка данного драйвера (код товара в нашем магазине:25149) смотрите ниже:

Более подробно смотрите в PDF-файле на эту микросхему от производителя "Texas Instrument". Очень хорошо и подробно описано подключение 7-ми сегментного индикатора (дисплея) на этой ссылке.

Для оптовых покупателей в нашем магазине существует гибкая система скидок. За консультацией обращайтесь по телефону (см.раздел "Контакты" или по E-mail). Информацию по наличию, пожалуйста, уточняйте по телефону.

Подключение блока сегментных индикаторов с драйвером MAX7219

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

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

Драйвер MAX7219 решает эту проблему. К 1 чипу MAX7219 можно подключить до 8 семисегментных светодиодных индикаторов, управлять которыми можно по интерфейсу SPI.

В этой статье мы рассмотрим модуль из 8-ми индикаторов, которыми управляет MAX7219 (http://smartelectronika.com/viewproduct/82/)

У модуля имеются 5 выходов (VCC, GND, DIN, CS, CLK). Подключаем их к Raspberry Pi следующим образом

VCC - 5V
GND - GND
DIN - GPIO10 (MOSI)
CS - GPIO8 (CE0)
CLK - GPIO11 (SCLK)

После подключения модуля приступаем к написанию управляющей программы. Для работы с SPI я использовал библиотеку wiringPi

Сначала модуль должен пройти инициализацию. Инициализация происходит посредством записи значений в управляющие регистры:

1. Для включения модуля записываем 0x01 в регистр Shutdown (адрес 0x07). Соответственно для выключения в этот регистр следует записать 0x00

2. В регистр Scan Limit (адрес 0x0B) записывается значение, соответствующее количеству 7-сегментных индикаторов, подключенных к MAX7219. Для восьми индикаторов это значение будет 0x07

3.Регистр Decode Mode (адрес 0x09) определяет режим работы индикаторов. Для каждого индикатора (а в нашем модуле их восемь) доступно 2 режима работы.

Первый режим - декодер включён. В этом случае на индикаторе загорается цифра или символ, соответствующая записанному в регистр индикатора значению - например, записали в регистр 9, на индикаторе загорается 9.

Второй режим - декодер выключен. Он нужен если требуется управлять каждым из семи сегментов индикатора по отдельности.

Регистр Decode Mode 1-байтный. Каждый бит в регистре соответствует режиму работы соответствующего индикатора. Если в бите стоит 1, то индикатор работает в первом режиме, если 0, то во втором. Соответственно, если нужно чтобы все индикаторы работали в первом режиме то записываем в регистр 11111111 (это 0xFF в шестнадцатиричной системе)

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

Адрес регистров идут по порядку (0x00,0x01,0x02...0x08). Информация о том, какое значение нужно записать, чтобы получить на индикаторе тот или иной символ представлена в этой таблице:

Например, если третий индикатор работает в первом режиме, то для вывода на индикатор цифры "2” необходимо в регистр 0x03 записать 0010 (0x02 в шестнадцатиричной системе). Для того, чтобы после цифры загорелась точка, нужно записать 1 в регистр D7 (для 2. - 10000010). В первом режиме можно выводить на индикатор цифры 0-9, точку, знак минуса, буквы E,H,L,P

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

Если индикатор работает во втором режиме, то для того, чтобы зажечь сегмент "A" в управляющий регистр записываем 10000000

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


#include 
#include 
#include 
#include 
#include 
#include 
#include 

int main (int argc, char *argv[])
{

	uint8_t valueToDisplay[2];
	uint8_t wCommand_1[2];
	uint8_t wCommand_2[2];
	uint8_t wCommand_3[2];
	
	wCommand_1[0] = 0x0C; //shutdown register
	wCommand_1[1] = 0x01; 

	wCommand_2[0]= 0x09; //decode mode
	wCommand_2[1]= 0xFF;

	wCommand_3[0]= 0x0B; //scan limit
	wCommand_3[1]= 0x07;

	wiringPiSetup () ;
	if (wiringPiSPISetup (0, 10000000) 

Сохраняем исходник в файл indicator.c и компилируем:

gcc -Wall -o indicator indicator.c -lwiringPi -std=c99

Запускаем программу - ./indicator 1.2.3.4.5678

На индикаторе должно высветиться 1.2.3.4.5678, как на фото:

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

#!/bin/bash
/home/pi/indicator $(vcgencmd measure_temp | egrep  '([0-9]{1,3}\.[0-9]{1,3})' -o)

В следующей статье рассмотрим матричный индикатор на MAX7219

arduino семисегментный индикатор 4 разрядный

На чтение 6 мин. Просмотров 90 Опубликовано

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

Необходимые компоненты:

Матрица 4-разрядная из семисегментных индикаторов состоит из четырех семисегментных индикаторов и предназначена для одновременного вывода на матрицу 4 цифр, также есть возможность вывода десятичной точки. Схема 4-разрядной матрицы на 7-сегментных индикаторах показана на рис. 7.1.

Для вывода цифры необходимо зажечь нужные светодиоды на контактах A–G и DP и выбрать нужную матрицу подачей LOW на вывод 6, 8, 9 или 12.
Подключим контакты матрицы к плате Arduino и будем выводить цифры на различные разряды матрицы. Для подключения нам понадобятся 12 выводов Arduino. Схема соединений для подключения 4-разрядной матрицы к плате Arduino показана на рис. 7.2. При подключении контактов используются ограничительные резисторы 510 Ом.

Напишем скетч последовательного вывода цифр (0–9) на произвольный регистр матрицы. Для выбора случайного значения из диапазона будем использовать функцию random(). В массиве numbers[] хранятся значения, соответствующие данным для отображения цифр 0–9 (старший разряд байта соответствует метке сегмента A индикатора, а младший – сегменту G), в массиве pins[] – значения контактов для сегментов A–G и DP, в массиве pindigits[] – значения контактов для выбора разряда матрицы. Содержимое скетча показано в листинге 7.1.

Порядок подключения:

1. Подключаем семисегментный индикатор по схеме на рис. 7.3.
2. Загружаем в плату Arduino скетч из листинга 7.2.

3. Нажатием кнопки запускаем или останавливаем секундомер.

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

Необходимые компоненты:

Матрица 4-разрядная из семисегментных индикаторов состоит из четырех семисегментных индикаторов и предназначена для одновременного вывода на матрицу 4 цифр, также есть возможность вывода десятичной точки. Схема 4-разрядной матрицы на 7-сегментных индикаторах показана на рис. 7.1.

Для вывода цифры необходимо зажечь нужные светодиоды на контактах A–G и DP и выбрать нужную матрицу подачей LOW на вывод 6, 8, 9 или 12.
Подключим контакты матрицы к плате Arduino и будем выводить цифры на различные разряды матрицы. Для подключения нам понадобятся 12 выводов Arduino. Схема соединений для подключения 4-разрядной матрицы к плате Arduino показана на рис. 7.2. При подключении контактов используются ограничительные резисторы 510 Ом.

Напишем скетч последовательного вывода цифр (0–9) на произвольный регистр матрицы. Для выбора случайного значения из диапазона будем использовать функцию random(). В массиве numbers[] хранятся значения, соответствующие данным для отображения цифр 0–9 (старший разряд байта соответствует метке сегмента A индикатора, а младший – сегменту G), в массиве pins[] – значения контактов для сегментов A–G и DP, в массиве pindigits[] – значения контактов для выбора разряда матрицы. Содержимое скетча показано в листинге 7.1.

Порядок подключения:

1. Подключаем семисегментный индикатор по схеме на рис. 7.3.
2. Загружаем в плату Arduino скетч из листинга 7.2.

3. Нажатием кнопки запускаем или останавливаем секундомер.

В сегодняшней статье поговорим о 7-сегментных индикаторах и о том, как их «подружить» с Ардуино. Есть несколько вариантов. Самый простой, безусловно, это зайти на arduino-kit.com.ua/seriynyy-displey-opensegment-20-mm-zelenyy.html и купить готовый индикатор с интегрированным шилдом (это платка согласования так называется), но мы не ищем лёгких путей, поэтому пойдем путем чуть более сложным. Новички – не пугайтесь, эта статья, как и предыдущие мои статьи ( arduino-kit.com.ua/arduino-i-labview-ili-vizualizacija-dannyh.html и arduino-kit.com.ua/chasy-ds1302-dlya-rduino-uno.html ) именно для вас. Пусть гуру пишут для таких же умудренных опытом гуру, а я новичок – пишу для новичков.

Почему именно 7-сегментный индикатор? Ведь существует столько всяких экранов, с большим количеством символов, строк, разнообразных диагоналей и разрешений, черно-белых и цветных, самые доступные из которых стоят пару долларов… А тут: «старенький», до безобразия простой, но требующий огромного количества пинов 7-сегментный индикатор, но все-таки преимущество есть и у этого «старичка». Дело в том, что пользуясь приведенными здесь скетчами можно оживить не только индикатор с высотой цифр 14 мм, но и более серьезные (правда уже самодельные) проекты, и метровые цифры в данном случае далеко не предел. Жителям столиц это может быть не так интересно, а вот население Новокацапетовки или Нижней Кедровки очень порадуется, если на клубе или сельсовете появятся часы, которые еще могут и дату отображать, и температуру, а о создателе этих часов будут говорить очень долго. Но, подобные часы тема отдельной статьи: будет желание у посетителей arduino-kit.com.ua/ – напишу. Всё выше написанное можно считать вступлением. Как и прошлая моя статья эта будет состоять из частей, на этот раз из двух. В первой части мы просто «по управляем» индикатором, а во второй – попробуем приспособить его для чего-то хоть немного полезного. Итак, продолжим:

Часть первая. Экспериментально – познавательная

За основу данного проекта взят нам уже хорошо знакомый по предыдущим статьям ARDUINO UNO. Напомню, что приобрести его легче всего можно здесь: arduino-kit.com.ua/uno-r3-new.html или здесь: arduino-kit.com.ua/arduino-leonardo-original-italiya-new-rev3.html , кроме этого понадобится 4-разрядный, 7-сегментный индикатор. У меня, в частности GNQ-5641BG-11. Почему именно этот? Да просто потому, что лет 5 назад купил его по ошибке, идти менять было лень, вот он и валялся все это время, ожидая своего часа. Думаю, что подойдет любой с общим анодом (и с общим катодом можно, но придется данные массива и остальные значения портов инвертировать – т.е. менять на обратные), лишь бы не был слишком мощным, чтобы не сжечь Ардуинку. Кроме этого – 4 токоограничивающих резистора, примерно 100 Ом каждый и кусок шлейфа (мне хватило 10 см) на 12 пин (жил) можно «оторвать» от более широкого, что я и сделал. А можно вообще отдельными проводочками подпаяться, проблем не будет. Еще понадобятся штыри на плату (11 шт.) хотя, если аккуратно можно и без них. Эскиз индикатора можно увидеть на рисунке 1, а его схему на рисунке 2. Также отмечу, что на каждый сегментик этого индикатора лучше подавать не более 2.1В (ограничивается 100-Омными резисторами), и в этом случае он будет потреблять не более 20 мА. В случае, если загорится цифра «8» потребление не превысит 7х20=140 мА, что вполне допустимо для выходов Ардуино. Любознательный читатель задаст вопрос: «Но ведь 4 разряда по 140 мА это уже 4х140=560 мА, а это уже многовато!» Отвечу – останется 140. Каким образом? Читайте дальше! Расположение пинов на индикаторе видно на рисунке 3. А подключение делаем согласно таблице 1.


Рис. 1 — Эскиз индикатора


Рис. 2 — Схема индикатора


Рис. 3 — Расположение пинов

Радио для всех - Регистры сдвига и Arduino

 

 

 

В этой второй части статьи мы увидим практическое применение последовательной цепи сдвиговых регистров.

Будем использовать четыре светодиодных индикатора состоящих из 7 сегментов, управляемых от Arduino. Нужно составить ряд из регистров сдвига, содержащих 32 выходных контакта. В этом случае нам не нужно специальное программное обеспечение или библиотека: достаточно того, что мы уже знаем о регистрах сдвига.

Единственное, что мы должны знать, как 7-сегментный индикатор работает.

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

 

 

Это важно знать, что существуют два различных типа 7-сегментных дисплеев: с общим катодом и общим анодом. Как показано на схеме ниже, общий катод отображает сигнал GND,  в то время как общий анод сигнал VCC.

 

В принципе  не существует никаких особых различий в подключении. Мы взяли подключение с общим анодом из-за некоторых преимуществ по сравнению с противоположным типом.

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

Каждый сегмент соответствует одному из 8 сигналов.

Плата имеет множество разъемов, использующих 33 вывода: четыре набора из восьми выходов. Плюс (общий) соединен с анодами четырех индикаторов.

Подключим к одному из свободных цифровых выходов Arduino. При появлении сигнала  LOW табло не будет работать, при HIGH засветится.  Если мы используем контакт PWM (ШИМ) Arduino в качестве общего анода, мы можем изменить яркость светодиодов.

Программа управления индикаторами

При установке четыре 7-сегментных индикаторов с общим катодом, 33 контакт (общий) соединяем с Arduino GND. Все работать будет отлично, только разница в том, что каждый сегмент будет включен. Когда соответствующий сигнал регистра сдвига включен и отключен, и когда основной сигнал выключен.

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

Мы можем установить любую из этих конфигураций, но наиболее распространенными являются символы 0-9 AF.

 

В начало обзора

7-сегментный дисплей с MobiFlight, Arduino и FSUIPC Offset

Поехали

В этом руководстве вы подключите 7-сегментный дисплейный модуль к плате Arduino Mega.

Модуль дисплея должен быть основан на микросхеме Max7219 - только им можно управлять с помощью программного обеспечения MobiFlight Connector.

7-сегментные дисплеи сконфигурированы таким образом, чтобы отображать текущую установленную частоту COM1 вашего имитатора полета. Поэтому вы используете соответствующее смещение FSUIPC.Значения необходимо немного преобразовать, но вы увидите это позже в руководстве.

Сначала объясняется электронное соединение модуля 7-сегментного дисплея. Затем шаг за шагом показана конфигурация программного обеспечения коннектора MobiFlight.

Это то, что вам нужно для учебника

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

Die folgende Dinge benötigst Du für dieses Учебник:

  • Самая последняя версия MobiFlight Connector
  • A Arduino Mega 2560 с последней версией прошивки MobiFlight
  • Модуль дисплея с микросхемой MAX7219, e.грамм. Посмотрите на eBay "модуль трубки max7219" - вы найдете модули по очень низкой цене.

Мой модуль выглядит так:

Подключение модуля к контактам вашей платы Arduino Mega может быть следующим:

На картинке видно, что для модуля требуется:

  • Источник питания через вывод 5 В на вашем Arduino (например, поверх вывода 22)
  • Подключение к GND
  • Три линии управления
    • DATA IN (DIN) - оранжевый, произвольный цифровой контакт на вашем Arduino
    • CHIP SELECT (CS) - зеленый, произвольный цифровой вывод на Arduino
    • ЧАСЫ (CLK) - серый, произвольный цифровой контакт на вашем Arduino

Метки DIN , CS и CLK появятся позже в диалоговом окне конфигурации MobiFlight Connector.Правильное назначение каждого из них имеет основополагающее значение для того, чтобы все работало должным образом.

Когда вы откроете MobiFlight Connector, вы увидите обзор вашей текущей конфигурации. В этом примере мы предполагаем, что он пуст, потому что еще ничего не было настроено.

Сначала вы должны открыть диалог настроек, потому что мы хотим настроить доску MobiFlight. Он должен знать, что к некоторым из его контактов подключен дисплейный модуль.

Пойдем туда Extras> Einstellungen> MobiFlight Modules-Tab.

Вы выбираете свой модуль из дерева в левой части вкладки.

На панели инструментов под древовидной структурой доступны различные действия. Чтобы добавить 7-сегментный дисплейный модуль, щелкните «Новое устройство»> «7-сегментный светодиодный индикатор».

В конфигурацию модуля Arduino добавлен 7-сегментный дисплейный модуль.

Справа вы определяете дополнительные настройки в зависимости от типа добавляемого устройства.

Для 7-сегментного дисплейного модуля их довольно много:

  • DIN - Вывод линии управления DATA IN - в учебнике мы используем контакт 22
  • CS - Контакт для линии управления CHIP SELECT - в учебнике мы используем контакт 24
  • CLK - Пин для линии управления ЧАСЫ - в учебнике мы используем пин 26
  • Num - количество модулей, подключенных гирляндой (возможно до 8 модулей)
  • Globale Brightness - вы можете установить интенсивность яркости вашего светодиодного модуля от низкой до высокой
  • Имя - здесь вы можете указать имя, которое позже будет использоваться в диалогах конфигурации.Используйте здесь осмысленное имя, и вам будет легче позже (см. Далее в этом руководстве). В руководстве мы используем "COM1Display"

Остался один шаг - нам нужно загрузить новую конфигурацию на вашу плату. Поэтому нажмите кнопку загрузки в самом левом углу панели инструментов.

Появится сообщение, указывающее, была ли загрузка успешной или нет. В положительном случае ваш MobiFlight запомнит, что у нас подключен 7-сегментный дисплейный модуль, даже если вы перезапустите его или выключите.

Закройте диалоговое окно «Настройки», нажав кнопку «ОК». Вы вернетесь к обзору конфигурации, который все еще пуст.

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

Сначала вы назначаете имя новой записи конфигурации, дважды щелкнув пустую строку и набрав ее имя с клавиатуры. В учебном курсе вы назначаете «COM1 Active».

Часы на ...- Кнопка в конце ряда.

Появится диалоговое окно мастера настройки.

Из списка доступных предустановок выберите соответствующий "Radio - COM1 Active Freq"

Нажмите кнопку «использовать» рядом с полем DropDown.

«Автоматически» все настройки, касающиеся смещения FSUIPC, заполняются правильно. В качестве альтернативы вы можете посмотреть настройки в документации FSUIPC Offset

.

Перейдите на вкладку «Отображение», щелкнув по ней.

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

Выберите тип "Display Module".

Конкретные настройки дисплея автоматически отображаются ниже.

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

Проверим, пока все работает - нажимаем кнопку "тест".

Ваш 7-сегментный дисплейный модуль должен отображать числа «123,45»

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

Если ваши дисплеи работают правильно, нажмите кнопку «Стоп».

Закройте диалоговое окно ConfigWizard, нажав кнопку OK.

Запустите предпочитаемый имитатор полета, например FSX или x-plane.

Загрузите и начните предпочитаемый рейс.

Подождите, пока не установится соединение между MobiFlight Connector и FSUIPC. На это указывает зеленый символ в строке состояния MobiFlight Connector.

Теперь запустите MobiFlight Connector, нажав кнопку запуска на верхней панели инструментов.

Теперь ваш 7-сегментный дисплейный модуль должен отображать текущее установленное значение COM1.

Измените значение с помощью симулятора. Смотрите на дисплеи - ВАУ! невероятно быстро, как значения остаются синхронизированными, не так ли?

Поздравляем!

Сделав несколько шагов и за пару минут, вы создадите собственный радиочастотный дисплей для вашего авиасимулятора. Это было действительно просто! Попробуйте сделать то же самое для частоты в режиме ожидания и настройте переключатель для переключения между активным и резервным режимами.

Расскажите нам на форуме о своем прогрессе в проекте и просмотрите другие руководства из раздела руководств.

Роботы для развлечения

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

Необходимые детали: Программное обеспечение, которое вы узнаете:
7-сегментный светодиодный дисплей - это дисплей с семью отдельными светодиодами, встроенными в один корпус.Семь светодиодов образуют цифру 8 и имеют алфавитные названия от a до g . Для десятичной точки есть восьмой светодиод. В этой конфигурации десятичные цифры могут быть сформированы путем включения отдельных светодиодов.

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

Однако, чтобы уменьшить количество необходимых подключений, положительный или отрицательный концы восьми светодиодов соединены вместе.

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

При использовании общего катода или общего анода требуется только 9 подключений (как показано на рисунках справа) вместо исходных 16 для управления 7-сегментным дисплеем.

Общий катод

Общий анод

1 Выполнение подключений

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

  • Щелкните здесь, чтобы увидеть черный цветной дисплей Common Cathode F5101AH с контактами сверху и снизу.
  • Щелкните здесь, чтобы увидеть черный цветной дисплей Common Anode F5161BH, 5161BS, 5611BS или 5611BH с контактами сверху и снизу.
  • Щелкните здесь, чтобы увидеть серый цветной дисплей Common Cathode с выводами по бокам.

Взаимодействие с общим анодом 7, семисегментный дисплей с arduino uno и печатными числами / алфавитами на нем

Это простой проект / руководство по взаимодействию семисегментного дисплея с Arduino uno. В учебном пособии представлен простой пример печати числовых чисел на 7-сегментном дисплее. Учебная задача - напечатать числа от 0 до 9 на одном семисегментном дисплее.Это два типа семи сегментных дисплеев с общим анодом и общим катодом. Прежде чем продолжить, я хотел бы, чтобы вы прочитали небольшой учебник о разнице между ними, а также о плюсах и минусах обоих.

После прохождения вышеуказанного руководства. Вы сможете легко узнать свой семисегментный дисплей, будь то общий анод или общий катод. Вы также ознакомитесь с расположением выводов 7-сегментного дисплея.

Семисегментный дисплей с общим анодом, подключенный к Arduino Uno

Два метода отображения чисел на 7-сегментном дисплее с использованием arduino uno

Это два метода отображения чисел на 7-сегментном дисплее с помощью любого микроконтроллера.
  • Путем манипулирования отдельными контактами Arduino
  • Путем манипулирования всем портом GPIO Arduino

Метод 1 - Управление всем портом GPIO Arduino для 7-сегментного дисплея

Опрос высоких и низких выводов Arduino по отдельности для отображения чисел на 7-сегментном уровне не является хорошим методом. Код становится слишком длинным и беспорядочным (см. Второй код метода в конце сообщения). Самый простой способ сократить количество инструкций - использовать порты Arduino для записи чисел и символов в семисегментный сегмент.Arduino uno имеет три порта B, C и D. Port-D - это 8-битный порт, состоящий из контактов Arduino 0-7. Открытых контактов порта B всего 6 из 8-13. Все контакты Port-C являются аналоговыми. Для нашего приложения лучше всего подходит порт-D. Поскольку нам нужно 7 цифровых контактов для записи на 7-сегментный дисплей, а порт-d предлагает 8 контактов.

7-сегментный дисплей с Arduino uno - Принципиальная схема

Соедините семисегментный вывод ‘a’ с выводом Arduino № 0, ‘b’ с выводом Arduino № 1 и так далее с ‘g’ к выводу № 6.Теперь мы подключили наши выводы из семи сегментов к портам Arduino, и мы можем напрямую управлять всеми выводами один раз, написав одну инструкцию для порта. Принципиальная схема проекта 7-сегментного дисплея Arduino приведена ниже.

7-сегментный дисплей с управлением портами Arduino

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

Переходя к коду, сначала в функции настройки Port-D arduino объявлен как выходной порт. Запись 0xFF в регистр DDRD arduino объявляет все выводы arduino port-d как выходные выводы.Далее для каждого числа (которое будет отображаться на 7-сегментном светодиодном дисплее) вычисляется его шестнадцатеричное значение. Шестнадцатеричное значение каждого числа затем передается на порт d arduino uno для отображения числа на 7-сегментном светодиодном дисплее.

Например, чтобы отобразить 0 на семи сегментах, мы пишем 0x3F в PORTD. Если мы переведем 0x3F в двоичный, он станет 00111111 . Согласно 00111111 только светодиодный номер « г » выключен, а остальные включены, что составляет 0 на семисегментном дисплее.Вы можете перевести другие команды и проверить их логику, они отлично составляют число.

Общий анод 7-сегментный шестнадцатеричный код Arduino для чисел

Метод 2 - Манипулирование отдельными выводами Arduino uno для отображения чисел на 7-сегментном дисплее

В этом проекте / руководстве я использую обычный 7-сегментный дисплей с анодом. Вы можете использовать обычный катод, но для этого вам нужно инвертировать инструкции по отображению данных в коде. Плата микроконтроллера Arduino используется для отображения чисел на общем анодном 7-сегментном дисплее.Поскольку я использую общий анод, вывод питания 7-го сегмента должен быть подключен к +3-5 вольт. Arduino выдает 5 вольт через вывод питания. Поэтому я использовал регулятор мощности Arduino на 5 В для питания 7-сегментного дисплея. Резистор 510 Ом используется последовательно с vcc для ограничения тока до 7-сегментного дисплея.

Схема проекта 7 сегментов Arduino

Теперь перейдем к принципиальной схеме 7-сегментного интерфейса, подключенного к Arduino. Контакты 13, 12, 11, 10, 9, 8, 7 Arduino подключены к семи контактам сегментного дисплея.Ниже приведено соединение выводов семисегментного дисплея с Arduino.
  • Контакт 13 Arduino подключен к контакту «a» 7-сегментного дисплея.
  • Контакт 12 Arduino подключен к контакту «b» 7-сегментного дисплея.
  • Контакт 11 Arduino подключен к контакту «c» 7-сегментного дисплея.
  • Контакт 10 Arduino подключен к контакту «d» 7-сегментного дисплея.
  • Контакт 9 Arduino подключен к контакту «e» 7-сегментного дисплея.
  • Контакт 8 Arduino подключен к контакту «f» 7-сегментного дисплея.
  • Контакт 7 Arduino подключен к контакту «g» 7-сегментного дисплея.

Diy 7-сегментный дисплей, соединенный с принципиальной схемой проекта Arduino, приведен ниже.

7-сегментный светодиодный дисплей с Arduino uno

семисегментный дисплей с интерфейсом arduino uno

Как работает 7-сегментный с arduino uno?

В этом методе каждый отдельный вывод Arduino сделан высоким и низким для отображения числового числа на 7-сегментном дисплее.Приведенный ниже код написан с учетом этого метода. Все выводы Arduino, используемые с семисегментным дисплеем, объявлены выходными. В функции цикла я генерирую числа, делая выводы Arduino высокими и низкими. В первой группе заявлений я поставил « e » и « f » низкими. Это создает 1 на семисегментном дисплее. Так как я использую общий анодный семисегментный дисплей, в котором светодиоды загораются, когда когда-либо на каком-либо штырьке устанавливается низкий уровень. Если вы этого не понимаете, просто прочтите руководство.

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

Я проверил оба кода, они работают отлично. Логика обоих кодов одинакова, отличается только способ отображения числа на 7-ми семисегментном дисплее. В обоих кодах после отображения числа на семи сегментах у меня задержка в 1 секунду.Эта задержка очень важна для того, чтобы числа были видны невооруженным глазом.

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

Ознакомьтесь с еще несколькими проектами по взаимодействию 7-сегментного дисплея с другими микроконтроллерами.Все проекты имеют открытый исходный код и содержат бесплатную принципиальную схему и исходный код самодельных проектов. Вы можете изменить исходный код по своему усмотрению.

Загрузите файлы проекта, код 7-сегментного дисплея (C и HEX) и файл программы .ino. Код написан на arduino ide. В проекте используется Arduino uno. Вы можете использовать другие платы Arduino с таким же кодом. Вам может потребоваться сначала проверить контакты порта d на других платах Arduino для правильного подключения схемы. Пожалуйста, поделитесь с нами своим мнением о проекте.Смотрите вывод программы на видео.

Посмотреть видео о проекте можно здесь

7-сегментный дисплей

Me - платформа для сборки роботов Arduino с открытым исходным кодом | Учебный ресурс Makeblock

Обзор

Модуль

Me 7-сегментный дисплей-красный использует 4-значную цифровую трубку с общим анодом для отображения чисел и нескольких специальных символов. Модуль можно использовать в проекте робота для отображения таких данных, как скорость, время, счет, температура, расстояние и т. Д.В нем используется специальный чип со светодиодным приводом и управлением, что упрощает управление цифровой трубкой. Makeblock также предоставляет библиотеку Arduino для простого программирования, позволяющую пользователям легко управлять цифровой трубкой. Его синий идентификатор означает, что он имеет порт двойного цифрового сигнала и должен быть подключен к порту с синим идентификатором на Makeblock Orion.

Технические характеристики

● Рабочее напряжение: 5 В постоянного тока
● Количество цифр: 4
● Режим управления: Двойное цифровое управление
● Микросхема драйвера: TM1637
● Цвет цифровой трубки: Красный
● Размер модуля: 51 x 24 x 23.4 мм (Д x Ш x В)

Функциональные характеристики

● Белая область модуля - это эталонная область для контакта с металлическими лучами
● Выделите 7-сегментный дисплей Me - красный, чтобы пользователи могли видеть контент даже днем ​​
● Защита от обратного хода - подключение источника питания в обратном направлении не повредит IC
● Обеспечивает восемь уровней регулируемой яркости для цифровой трубки
● Поддерживает программирование графического интерфейса пользователя mBlock и применимо для пользователей любого возраста
● Использование порта RJ25 для простого подключения
● Порт двойной последовательной шины (DIO, CLK)
● Обеспечивает контакт порт типа для поддержки большинства плат для разработки, включая Arduino серии

Определение штифта

Порт Me 7-Segment Display-Red имеет четыре контакта, их функции следующие:

Режим подключения

● Подключение с помощью RJ25
Поскольку порт Me 7-сегментный дисплей-красный имеет синий идентификатор, вам необходимо подключить порт с синим идентификатором на Makeblock Orion при использовании порта RJ25.Взяв в качестве примера Makeblock Orion, вы можете подключиться к портам № 3, 4, 5 и 6 следующим образом:

● Подключение с помощью провода Dupont
Когда провод Dupont используется для подключения модуля к основной плате Arduino UNO, его выводы DIO и CLK должны быть подключены к цифровым портам следующим образом:

Руководство по программированию

● Программирование Arduino
Если вы используете Arduino для написания программы, необходимо вызвать библиотеку Makeblock-Library-master для управления модулем Me 7-Segment Display-Red.Эта программа может заставить Me 7-сегментный дисплей-красный отображать 15 цифр номера и перемещать символы 1, 2, 3, 4, 5, 6, 7, 8, 9, A, b, C, d, E и F справа налево через программирование Arduino.

Схема

7-сегментный дисплей с интерфейсом Arduino Uno | by Ansari Aquib

В этом уроке мы собираемся связать 7-сегментный светодиодный дисплей с Arduino Uno.

Необходимые компоненты:

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

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

Семисегментные дисплеи бывают двух типов: с общим анодом и с общим катодом. Внутренняя структура обоих типов почти одинакова. Разница в полярности светодиодов и общей клеммы.

В обычном катодном семисегментном дисплее (тот, который мы использовали в экспериментах) все семь светодиодов плюс точечный светодиод имеют катоды, подключенные к контактам 3 и 8.Чтобы использовать этот дисплей, нам нужно подключить ЗАЗЕМЛЕНИЕ к контактам 3 и 8 и, а также подключить + 5V к другим контактам, чтобы отдельные сегменты загорелись. На следующей схеме показана внутренняя структура семисегментного дисплея с общим катодом:

Дисплей с общим анодом - полная противоположность. В дисплее с общим анодом положительный вывод всех восьми светодиодов соединяется вместе, а затем подключается к контактам 3 и 8. Чтобы включить отдельный сегмент, вы заземляете один из контактов. На следующей схеме показана внутренняя структура семисегментного дисплея с общим анодом.

Семь сегментов помечены ag с точкой «dp», как показано на рисунке ниже:

Чтобы отобразить конкретное число, вы включаете отдельные сегменты, как показано в таблице ниже:

Digit gfedcba

abcdefg

a

b

c

d

e

f

f

0 × 7E

на

на

на

на

на

на

на

1 0 × 06

на

1 0 × 06

на 930

вкл.

вкл.

выкл.

выкл.

выкл.

выкл.

2 0 × 5B

0 × 6D

вкл.

o n

откл.

на

на

откл.

на

3 0 × 4F

0 × 79

на

04 на

на

вкл.

выкл.

выкл.

вкл.

4 0 × 66

0 × 33

выкл.

вкл.

вкл.

выкл.

выкл.

выкл.

выкл.

вкл.

5 0 × 6D

0 × 5B

вкл.

выкл.

вкл. 0 × 7D

0 × 5F

на

на

на

на

на

на

90 004 на

7 0 × 07

0 × 70

на

на

на

на

на

на

на

8 0 ×

на

8 0 ×

на 0 × 7F

для

для

для

для

для

для

для

9 0 × 6F

по

по

по

по

по

по

по

A 0 × 77

0 × 77

9004 9004 на

на

на

на

на

на

B 0 × 7C

0 × 1F

на

900 04 выкл.

вкл.

вкл.

вкл.

вкл.

вкл.

C 0 × 39

0 × 4E

вкл.

выкл.

выкл.

на

на

на

на

на D 0 × 5E

0 × 3D

на

на

к

к

на

4

выкл.

вкл.

E 0 × 79

0 × 4F

вкл.

выкл.

выкл.

вкл.

вкл.

F 0 × 71

0 × 47

вкл.

выкл.

выкл.

выкл.

вкл.

вкл.

9000 4 на

мы будем связывать 7-сегментный дисплей с Arduino Uno и научимся отображать обратный отсчет от девяти с задержкой в ​​секунду на семисегментном дисплее.

Проекты Arduino: 7-сегментный дисплей Arduino

Один из самых популярных способов отображения цифр для Arduino - использование буквенно-цифрового ЖК-дисплея. Некоторые из распространенных способов также включают в себя такие типы дисплеев, как графический (очень популярный дисплей для телефонов Nokia), электронную бумагу, ЖК-дисплеи и светодиодные дисплеи.

Светодиодные дисплеи самые простые. Он состоит из светодиодов, которые соединены в сегменты, в основном называемые 7-сегментным дисплеем (потому что он имеет 7 сегментов).

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

Самым большим преимуществом этих дисплеев является цена. Они очень дешевы и просты в использовании.

Проект 7-сегментного дисплея Arduino

Что нам нужно

Лучший способ подключить этот дисплей к плате Arduino - это подключить его к макетной плате, а затем, используя кабели типа «папа-папа», просто подключите его, как показано ниже. Подключить штекер-гнездо к дисплею, а затем к Arduino довольно сложно и не так прочно. Нам нужны резисторы, поскольку вы, возможно, знаете, что при подключении светодиода к Arduino вам нужно использовать резистор для защиты вашего Arduino от сгорания, и, как я уже сказал, этот дисплей состоит из светодиодов, поэтому здесь мы также должны подключить резисторы к дисплею.Вот распиновка дисплея.

1, 2 и 3 - контакты для управления каждой цифрой. a-g используются для управления сегментами. N / C означает, что не подключен, dp - десятичная точка. Как мне его подключить? Ну вот.

Дисплей 1 -> Arduino 10 - резистор 300 Ом
Дисплей 2 -> Arduino 11 - резистор 300 Ом
Дисплей 3 -> Arduino 12 - резистор 300 Ом
Дисплей a -> Arduino 2
Дисплей b -> Arduino 3
Дисплей c -> Arduino 4
Дисплей d -> Arduino 5
Дисплей e -> Arduino 6
Дисплей f -> Arduino 7
Дисплей g -> Arduino 8
Дисплей dp -> Arduino 9

Вы также можете использовать разные контакты, из которых Я использовал, но вы должны не забыть указать это в своем коде.

Когда вы закончите подключение, пора работать над кодом.

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

Этот код просто увеличивает значение и отображает его на дисплее. Просто для того, чтобы показать вам, как работать с 7-сегментным дисплеем.Также хочу отметить, что дисплей не синхронизируется со временем на ваших часах.

Мы надеемся, что вы получили представление о возможностях 7-сегментного дисплея в проекте Arduino. Не стесняйтесь поделиться тем, что вы смогли построить, используя эту концепцию, в разделе комментариев ниже.

Вам также может понравиться:

Как использовать семисегментный дисплей с Arduino

Хотите узнать, как связать семисегментный дисплей с Arduino ?.В этом руководстве мы собираемся подключить 7-сегментный дисплей к Arduino UNO. Дисплей отсчитывает от 0 до 9 и сбрасывается на ноль. Семисегментный дисплей получил свое название от того факта, что он имеет семь светящихся сегментов. Каждый из этих сегментов имеет светодиод (светоизлучающий диод), отсюда и освещение. Посмотрите это видео для получения пошаговых инструкций

Компоненты оборудования

Распиновка общего катода

[inaritcle_1]

Полезные шаги

Внимательно следуйте всем шагам из видеоурока над этим сообщением (настоятельно рекомендуется).

  • ШАГ № 1 (подключение общего контакта 7-го сегмента)
  • Подключите контакт CC 7-сегментного к GND Arduino
  • ШАГ № 2 (Подключите контакт a, b, c 7-го сегмента)
  • Подключите контакт 7-го сегмента к D7 Arduino
    Теперь подключите контакт b 7-го сегмента к D8 Arduino
    Подключите контакт c 7-го сегмента к D9 Arduino
  • ШАГ № 3 (Подключите d, e, f, g-контакт 7-го сегмента)
  • Подключите Вывод 7-го сегмента d на D10 Arduino
    Теперь подключите вывод 7-го сегмента к D11 на Arduino
    . Подключите вывод 7-го сегмента к D12 на Arduino
    . Подключите вывод 7-го сегмента g к D13 на Arduino
  • ШАГ № 4 ( Загрузить код)
  • Загрузите код и загрузите его на плату Arduino с помощью программного обеспечения Arduino IDE
  • https: // www.arduino.cc/en/Main/Software
  • ШАГ № 5 (Давайте проверим)

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

Рабочее объяснение

Семисегментные дисплеи состоят из 7 светодиодов, называемых сегментами, расположенных в форме «восьмерки».

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

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