Универсальный внешний накопитель для всех iOS-устройств, совместим с PC/Mac, Android
Header Banner
8 800 100 5771 | +7 495 540 4266
c 9:00 до 24:00 пн-пт | c 10:00 до 18:00 сб
0 Comments

Содержание

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

В сегодняшней статье поговорим о 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 – Расположение пинов

Таблица 1

Пин Ардуино Уно

Пин индикатора

Примечание

1

5

Сегмент G

2

10

Сегмент F

3

1

Сегмент E

4

2

Сегмент D

5

4

Сегмент C

6

7

Сегмент B

7

11

Сегмент A

8

12

Общий анод сегмента № 1, подключать через резистор 100 Ом.

9

9

Общий анод сегмента № 2, подключать через резистор 100 Ом.

10

8

Общий анод сегмента № 3, подключать через резистор 100 Ом.

11

6

Общий анод сегмента № 6, подключать через резистор 100 Ом.

Заливаем простенький скетч, который представляет собой простенькую «считалочку» от 0 до 9:
sketch-6-1.txt 

А теперь немного пояснений. DDRD это регистр порта D (DDRB – соответственно порта В) за «страшным» словом «регистр» всего лишь «спряталась» функция, которая указывает, будет порт своим пином читать что-то (принимать информацию), либо наоборот туда можно будет что-то писать (отдавать информацию). В данном случае строчка DDRD=B11111111; указывает, что все пины порта D выходные, т.е. информация из них будет выходить. Буквочка «В» обозначает, что в регистр записано двоичное (бинарное) число. Нетерпеливый читатель тут же спросит: «А десятичное можно!?!». Спешу успокоить – можно, но об этом чуть позже. Если бы мы хотели половину порта задействовать на вход, а половину на выход можно было бы указать так: DDRD=B11110000; единицы показывают те пины, которые будут отдавать информацию, а нули – те, которые будут эту самую информацию принимать. Основное удобство регистра заключено еще и в том, что не надо прописывать 8 раз все пины, т.е. мы экономим в программе 7 строк. А теперь разберем следующую строку:

PORTB=B001000; // устанавливаем высокий уровень 11 пина порта В

PORTB это регистр данных порта В, т.е. записав в него какое-либо число мы указываем на каком пине порта будет единица, а на каком – ноль. В добавление к комментарию скажу, если взять Ардуино Уно таким образом, чтобы видеть контроллер и цифровые пины были сверху – будет понятна запись в регистр, т.

е. какой «ноль» (или «единица»)отвечает за какой пин, т.е. крайний правый ноль порта В отвечает за 8-й пин, а крайний левый – за 13-й (у которого встроенные светодиод). Для порта D соответственно правый за пин 0, левый за пин 7.
Надеюсь после таких развёрнутых пояснений все понятно, а раз понятно предлагаю вернуться к известной нам и горячо любимой с детства десятичной системе счисления. И еще – скетч в 25 строк вроде и небольшой, но для новичка все-таки несколько громоздок. Будем уменьшать.

Заливаем еще более простой скетч, та же самая «считалочка»: 
sketch-6-2.txt 

Работу скетча можно посмотреть на Видео 1.
Всего 11 строчек! Вот это по-нашему, «по-новичковски»! Прошу обратить внимание вместо двоичных чисел в регистры записаны десятичные. Естественно, для десятичных чисел никаких букв впереди не нужно. Думаю, не лишним будет свести все числа в таблицы.

Таблица 2. Соответствие отображаемого знака данным порта

Знак

Общий анод

Общий катод

Двоичная система

Десятичная система

Двоичная система

Десятичная система

«0»

00000011

3

11111100

252

«1»

10011111

159

01100000

96

«2»

00100101

37

11011010

218

«3»

00001101

13

11110010

242

«4»

10011001

153

01100110

102

«5»

01001001

73

10110110

182

«6»

01000001

65

10111110

190

«7»

00011111

31

11100000

224

«8»

00000001

1

11111110

254

«9»

00001001

9

11110110

246

Таблица 3. Соответствие отображаемого разряда данным порта

Разряд

Общий анод

Общий катод

Двоичная система

Десятичная система

Двоичная система

Десятичная система

1

001000

8

110111

55

10

000100

4

111011

59

100

000010

2

111101

61

1000

000001

1

111110

62

Внимание! Данные таблиц 2 и 3 справедливы только при распайке согласно таблице 1.
А теперь зальем скетч со «считалочкой» от 0 до 9999: 
sketch-6-3.txt 

 
Рис. 4 – Считалочка

Работу скетча можно посмотреть на Видео 2

В этом скетче комментариев больше, чем самого кода. Вопросов возникнуть не должно…. Кроме одного, что это за «цикл мерцания» такой, что, собственно говоря, там мерцает и для чего? А еще переменная для этого какая-то…
А все дело в том, что одноименные сегменты всех четырех разрядов у нас соединены в одной точке. А1, А2, А3 и А4 имеют общий катод; А1, В1,…..G1 общий анод. Так, что подав одновременно на 4 разрядный индикатор «1234» мы получим «8888» и очень удивимся по этому поводу. Чтобы этого не произошло нужно сначала зажечь «1» в своем разряде, потом отключить её, зажечь «2» в своем и т.д. Если делать это очень быстро, то мерцание цифр сольётся, как кадры на киноплёнке и глаз его практически не будет замечать. А максимальное значение переменной мерцания в данном случае управляет скоростью смены цифр на индикаторе. Кстати, именно благодаря этому «мерцанию» и максимальное потребление тока всего 140 мА, вместо 560. А теперь предлагаю перейти к чему-то более полезному.

Часть вторая. Хоть немного полезная

В этой части мы выведем символы с персонального компьютера на 7-сегментный индикатор при помощи ARDUINO MEGA. Почему вдруг возникла идея «поменять лошадей на переправе»? Причин две: первая – до этого в своих статьях я ни разу не рассматривал ARDUINO MEGA; и вторая – в ARDUINO UNO я так и не разобрался, как мне динамически менять местами СОМ порт и порт D. Но я новичок – мне простительно. Приобрести данный контроллер, естественно можно здесь: arduino-kit.com.ua/arduino-mega-2560-adk-new.html . Для реализации задуманного пришлось взять паяльник и перепаять шлейф со стороны Ардуино, а также написать новый скетч. Как перепаян шлейф можно посмотреть на Рисунке 5. Все дело в том, что ARDUINO MEGA и ARDUINO UNO имеют разную распиновку портов, да и в Меге портов гораздо больше. Соответствие использованных пинов видно из Таблицы 4.

 
Рис. 5 – Новая распайка шлейфа

Таблица 4

Пин Уно

Порт Уно

Пин Мега

Порт Мега

1

D

23

A

2

D

24

A

3

D

25

A

4

D

26

A

5

D

27

A

6

D

28

A

7

D

29

A

8

B

37

C

9

B

36

C

10

B

35

C

11

B

34

C


Внимание! Данная таблица справедлива только для данного проекта!

Также следует обратить внимание, что порт С у Ардуино Мега «начинается» с 37 пина и далее по убывающей, а порт А – с 22 пина и далее по возрастающей.

 
Рис. 6 – Общий вид

Небольшие особенности реализации: выводить будем 4 символа. Символы должны быть цифрами. Если ввели «1234» и увидим «1234», если ввели «123456» все равно увидим «1234», если ввели «йцук», «фыва1234», «отиог485909оапоьм» – не увидим ничего. Если ввели «рр2345мм» увидим « 23» т.е. небольшая, встроенная «защита от дурака».

Собственно скетч:

sketch-6-4.txt 

А как работает данная программа можно посмотреть на Видео 3

 

Обзор подготовил Павел Сергеев

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

Опубликовано: На этот раз, в статье будет рассмотрен один из интереснейших модулей, а именно – многоразрядный семисегментный индикатор на базе микросхемы MAX Почему многоразрядный? Ответ прост – количество разрядов это и есть количество цифр, которое может отобразить модуль.


Поиск данных по Вашему запросу:

Схемы, справочники, даташиты:

Прайс-листы, цены:

Обсуждения, статьи, мануалы:

Дождитесь окончания поиска во всех базах.

По завершению появится ссылка для доступа к найденным материалам.

Содержание:

  • Схема подключения 7-сегментных индикаторов к Arduino
  • 4-разрядный 7-сегментный индикатор hs420561k-32 в связке с 74HC595 и arduino
  • Arduino/ Матрица 4-разрядная из 7-сегментных индикаторов.
  • 4-разрядный 7-сегментный индикатор и Arduino
  • 7 ми сегментный индикатор на 4 знакоместа
  • Цифровые 7-сегментные индикаторы
  • Arduino: 7-сегментный индикатор
  • Динамический вывод информации на 7-ми сегментный индикатор
  • 7-сегментный индикатор
  • Семисегментный индикатор, четыре разряда

ПОСМОТРИТЕ ВИДЕО ПО ТЕМЕ: Управление семисегментным индикатором

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

Новые статьи.

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

Забыли пароль? KCDC, светодиодный индикатор зеленый 5. KCSA, индикатор зеленый SAGWA, светодиодный индикатор зеленый 9. Интернет-магазин Платан предлагает Индикаторы и дисплеи и цифровые сегментные индикаторы различных производителей по конкурентной цене.

Семисегментный индикатор, четыре разряда

Освой Arduino играючи. Сайт Александра Климова. Стоит мне объяснить проблему ей – и все становится ясно. Если статья вам понравилась, то можете поддержать проект.


7-сегментный дисплей – 4-значный (красный) – COM-09483

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

    • Дом
    • Категории товаров
    • 7-сегментный
    • 7-сегментный дисплей — 4-разрядный (красный)

    Избранное Любимый 5

    Список желаний

    В наличии COM-09483 RoHS

    В наличии 141 шт. в наличии.

    2,45

    2,33

    2,21

    1+ шт.

    25+ шт.

    100+ штук

    • Описание
    • Функции
    • Документы

    Это базовый 4-разрядный 7-сегментный дисплей красного цвета. Имеет общий анод. На дисплее имеется одна десятичная точка на цифру, а также индивидуально управляемые точки апострофа и двоеточия.

    Светодиоды имеют прямое напряжение 2,1 В постоянного тока и максимальный прямой ток 20 мА. Аппаратный интерфейс представляет собой шестнадцать (два ряда по восемь) сквозных контактов.

    У нас такой же дисплей в желтом, зеленом и синем цветах.

    • Общий дисплей: 40,18 x 12,8 мм (1,58 x 0,50 дюйма)
    • Высота цифр: 10 мм (0,39 дюйма)

    7-сегментный дисплей — 4-разрядный (красный) Справка и ресурсы по продукту

    • Необходимые навыки

    Основной навык:

    Электрическое прототипирование

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

    3 Электрическое прототипирование

    Уровень навыков: Компетентный – Вам потребуется обратиться к таблице данных или схеме, чтобы знать, как использовать компонент. Ваше знание таблицы данных потребует только основных функций, таких как требования к питанию, распиновка или тип связи. Кроме того, вам может понадобиться блок питания с напряжением более 12 В или силой тока более 1 А.
    Просмотреть все уровни навыков


    • Комментарии 24
    • Отзывы 0

    Пока нет отзывов.

    4-значный 7-сегментный дисплей

    сортировать по наилучшему соответствиюрекомендуемыеновейшиелучшие продажицена 163264 на страницу только в наличии

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

    Показать больше продуктов…

    ${ stockHtml }

    ${ hit.product_title }${ hit.variant_title ? (“-” + hit.variant_title): “” }:

    ${ hit.description_first_paragraph}

    ` вернуть $(resultHtml) } const searchResultCallback = (попадания, аспекты, количество) => { debug(“> обратный вызов результатов поиска”, совпадения, фасеты, количество) $(“#search .load-more-results”).toggle(hits.page 0) { $(“#search.no-results”).hide() пусть html = “” for(let hit of hits.hits) { $(“#search .results”).append(createSearchResultFull(попадание)) } }еще{ if(searchSearcher.inStockOnly) {$(“#search .no-results .message”).html(“Возможно, у нас есть что-то подходящее, чего нет в наличии. Включить товары, которых нет в наличии.”)} для (пусть я = 0; я `)) } $(“#поиск .без результатов”).show() } // обновляем списки фильтров $(“#search .filters”). find(“раздел”).each((i, e) => { buildFilters($(“#search”), searchSearcher, $(e).data(“type”), аспекты, количество) }) обновитьрейтинги() обновитьЦены() обновитьЗначки() } var searchSearcher = новый искатель([], searchResultCallback) searchSearcher.permanentFilters = true var searchLanding = window.location.pathname == “/search” вар предыдущий URL = ноль вар последний запрос = “” const queryInput = (запрос) => { если(!searchLanding) { if(!lastQuery && запрос) { debug(“> начать поиск, сохранить текущее состояние URL”, document.location.href) предыдущий URL = document.location.href $(“#поиск”).show() $(“#контент”).скрыть() } если (последний запрос && !запрос) { debug(“> завершить поиск, вернуться к предыдущему URL-адресу”, previousUrl) history.replaceState(null, window.title, предыдущийUrl) $(“#поиск”).скрыть() $(“#контент”).показать() } если (запрос) { searchSearcher. queryText = запрос обновитьПоиск() } последний запрос = запрос }еще{ searchSearcher.queryText = запрос обновитьПоиск() } } $(функция() { если (window.location.pathname == “/search”) { $(“#поиск”).show() $(“#контент”).скрыть() searchSearcher.queryText = urlGet(“q”, “”) $(“#search_input_desktop”).val(searchSearcher.queryText) $(“#search_input_mobile”).val(searchSearcher.queryText) $(“#search .filters”).find(“раздел”).each((i, e) => { searchSearcher.filters[$(e).data(“тип”)] = urlGet($(e).data(“тип”)) }) если(urlGet(“акции”)) { $(“#поиск .только на складе”).prop(“проверено”, правда) searchSearcher.inStockOnly = истина } если (urlGet (“сортировать”)) { $(“#search .sort-by”).val(urlGet(“sort”)) searchSearcher.sort = urlGet(“сортировка”) } если(urlGet(“страница”)) { searchSearcher.preloadPageCount = parseInt(urlGet(“страница”)) } searchSearcher. pageSize = получить(“searchPageSize”, 32) $(“#search .per-page”).val(get(“searchPageSize”, 32)) searchSearcher.doSearch() } }) // запустить новый поиск и обновить URL const updateSearch = (страница = 1) => { searchSearcher.page = страница searchSearcher.doSearch() пусть параметры = [] if(searchSearcher.queryText) {parameters.push(`q=${searchSearcher.queryText}`)} for(let filter of Object.keys(searchSearcher.filters)) { если (searchSearcher.filters[фильтр]) { параметры.push(`${фильтр}=${searchSearcher.filters[фильтр]}`) } } if(searchSearcher.page != 1) {parameters.push(`page=${searchSearcher.page}`)} if(searchSearcher.sort) {parameters.push(`sort=${searchSearcher.sort}`)} if(searchSearcher.inStockOnly) {parameters.push(`stock=true`)} пусть queryString = параметры.длина > 0? “?” + параметры.соединение(“&”) : “” отладка(“> обновить URL”, queryString) history.replaceState(null, window.title, “/search” + queryString) } const showOutOfStock = () => { $(“#поиск . только на складе”).prop(“проверено”, ложь) searchSearcher.inStockOnly = ложь обновитьПоиск() } $(“#search_input_desktop”).on(“input”, (e) => { // ввод поиска на рабочем столе searchSearcher.queryText = $(“#search_input_desktop”).val().trim() $(“#search_input_mobile”).val(searchSearcher.queryText) queryInput (searchSearcher.queryText) }) $(“#search_input_mobile”).on(“input”, (e) => { // ввод мобильного поиска searchSearcher.queryText = $(“#search_input_mobile”).val().trim() $(“#search_input_desktop”).val(searchSearcher.queryText) queryInput (searchSearcher.queryText) }) $(“#search .filters >section ul”).click((e) => { // фильтр кликов searchSearcher.filters[$(e.target).closest(“раздел”).data(“тип”)] = $(e.target).hasClass(“активный”) ? ноль: $(e.target).data(“значение”) обновитьПоиск() }) $(“#search .per-page”).change((e) => { // элементов на странице set(“searchPageSize”, parseInt($(e.target).val())) обновитьПоиск() }) $(“#search . sort-by”).change((e) => { // сортировка searchSearcher.sort = $(e.target).val() обновитьПоиск() }) $(“#search .только на складе”).change((e) => { // только на складе searchSearcher.inStockOnly = $(e.target).prop(“проверено”) обновитьПоиск() }) $(“#search .load-more-results”).click(() => { // загрузить больше результатов updateSearch(searchSearcher.page + 1) })

    Идеально подходит для часов и таймеров. Эти дисплеи действительно осветят ваш проект.

    Доступный в четырех цветах, этот общий анодный дисплей имеет 16 сквозных контактов для управления 4 7-сегментными дисплеями с одним десятичным знаком на цифру, апострофом и точками двоеточия.

    Цвет Синий Желтый Красный Зеленый Белый
    Длина волны 460-465 нм 588-295 нм 620-630 нм 570–573 нм
    И В 150-250 мкр 50-60 мкр 400-450 мкр 50-60 мкр 150-180 мкр
    В Ф 3,2 В – 3,5 В 2,0 В – 2,2 В 1,9 В – 2,1 В 1,9–2,3 В 3,29 В – 3,4 В
    Технический паспорт Лист данных Лист данных Спецификация Лист данных Лист данных

    Примечание. В описании белого дисплея указано «синий», но это потому, что белый дисплей — это просто синий дисплей с цветной пленкой поверх него.

    ` let whenHTML = `

    ${момент(hit.date, “X”).fromNow()}

    ` пусть sourceHTML = “” пусть ReviewerImageHTML = “” если (hit. source == “gcr”) { sourceHTML = `о покупках у нас через Google Customer Reviews` } еще { если (hit.reviewer.first_name) { sourceHTML += `от ${hit.reviewer.first_name} ` рецензентImageHTML = “ } если (хит.продукт) { sourceHTML += `о ${hit.product.title} ` sourceHTML += `через REVIEWS.io` пусть изображение = hit.product.image если (изображение) { пусть dotIndex = image.lastIndexOf(“.”) image = image.substring(0, dotIndex) + “_75x75” + image.substring(dotIndex) } productImageHTML = “ } } пусть HTML = ` ${когдаHTML} ${комментарийHTML} ${reviewerImageHTML} ${источникHTML} ` пусть обзорЭлемент = $ (html) $(“#review_container”).append(reviewElement) обзорElement.click((e) => { $(“#review_popup >div:first-child”). html(html) $(“#review_popup”).parent().show() обновитьрейтинги() }) } обновитьрейтинги() }) } константа loadNextReviewPage = () => { отзывыТекущая страница++ loadReviewPage (обзорыCurrentPage) } $(функция() { loadReviewPage (0) })

    ` $(“#user_photos .grid”).Добавить($(html)) } } $(“#user_photo_count”).text(userPhotoCount + “фотография пользователя” + (userPhotoCount > 1 ? “s”: “”)) }) } const loadNextUserPhotoPage = () => { текущая страница++ loadUserPhotosPage (текущая страница) } $(функция() { loadUserPhotosPage (0) })

    Эти дисплеи идеально подходят для часов и таймеров и действительно осветят ваш проект. читать далее…

    Проверка запасов…

    COM0501

    • Желтый

       

    • Красный

       

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

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