Универсальный внешний накопитель для всех 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-сегментного индикатора / Хабр

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

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

Так как чаще всего в подобных индикаторах используются светодиоды, а как известно у них есть катод и анод, следовательно, и сами дисплеи делятся на 2 подтипа: с общим катодом и с общим анодом. Отличия минимальные, но иногда есть случаи, когда есть один более приоритетный вариант.

Индикатор представляет собой набор светодиодов с объединенным либо анодом, либо катодом, в зависимости от типа. Как мы можем заметить, можно управлять каждым сегментом в отдельности.

Допустим, для примера мы возьмем дисплей с общим катодом. Давайте попробуем вывести несколько цифр на дисплей. Для начала возьмем 0; для того, чтобы вывести нам надо подключить пины 7, 6, 4, 2, 1, 9 (a, b, c, d, e, f – соответственно) к “+” питания, и не забываем про резисторы, чтобы светодиоды не перегорели; если вы используете питание 5V, то будет достаточно подключить резистор на 330Ohm от пина 3, 8 к GND. И вот, на индикаторе можно наблюдать 0. Также можно вывести 1; подключаем пины 6, 4 (b, c) к положительному контакту питания и можно видим единичку на дисплее. Остальные цифры выводятся аналогично.

Возникающие проблемы

Мы разобрались, как можно выводить различные символы на индикатор, но представим, что у нас есть какое-то электронное устройство, которое должно считать числа, и для удобства мы хотим использовать индикатор, но вот незадача, у нас осталось всего 4 свободных I/0 линии, или мы намеренно хотим это оптимизировать, чтобы не писать код на микроконтроллере для представления цифр на экране или более удобным для нас способом. Напомню, при простом подключении необходимо 8 таких линий.

Кодирование

Так как самая привычная для нас система счисления это десятичная, то будем использовать ее и цифры от 0 до 9. При желании также можно продолжить и для 16-ричной системы. Поскольку у нас все строится пока что на 5V логике, то было бы странно не использовать двоичную систему счисления. У нас есть 10 цифр, следовательно, нам нужно минимум 4 бита для представления всех возможных вариантов. Для удобства предлагаю сделать таблицу.

Decimal

0

1

2

3

4

5

6

7

8

9

Binary

0000

0001

0010

0011

0100

0101

0110

0111

1000

1001

Представим, что у нас есть 4-bit шина, по которой наше устройство передает сигнал в двоичном представлении. Теперь надо декодировать и передать его на дисплей.

Декодирование

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

Пока что мы будем использовать простую шину из 4 проводов, по каждому из которых будет передаваться сигнал. В нашем случае 5V – логическая единица, а GND – логический нуль. В таблице первый столбец только для ясности, какую цифру мы хотим отобразить. Исходя из этой таблицы нам надо создать устройство, которое при входных значениях в шине, на выходе выдавало бы 7 значений для индикатора. Для этого, мы будем использовать операции над булевыми значениями: конъюнкция (и, &), дизъюнкция (или, |), отрицание (не, ¬). Итак, приступим к созданию цепи логических вентилей.

Цепь для сегмента ‘а’

Из таблицы истинности видно, что сегмент а должен быть включен всегда, кроме цифры 1 и 4. Для упрощения можно сделать так, чтобы логическая единица была только в этих 2 состояниях, и на выход добавить логическое НЕ. Тогда у нас всегда будет 1, кроме 2-ух состояний. Вот схема:

Я добавил дополнительную инвертированную шину для удобства и наглядности.

На выходе должен быть логический 0 при входных значениях 0 0 0 1 и 0 1 0 0 (на линиях 3, 2, 1, 0 соответственно). Поэтому я взял не инвертированную первую линию, а все остальные инвертированные, и получилось, что 0 0 0 1 трансформируется в 1′ 1′ 1′ 1 ( ‘ – инвертированный сигнал), после все эти сигналы группируются в один общий, который идет в вентиль ИЛИ-НЕ, который на конце и инвертирует логическую 1 в 0, чтобы при этих входных параметрах сегмент а не был включен. То же самое проделывается для другого случая: 0 1 0 0 преобразуется в 1′ 1 1′ 1′ и также идет в тот же вентиль ИЛИ-НЕ, как и при первом случае.

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

Улучшение

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

Для начала, взглянем на таблицу истинности. Можно заметить, что для сегмента е больше логических 0, так что для него, можно не инвертировать выход (!! – двойное отрицание, то есть ничего не меняем). Также использование одного и того же модуля для цифры 1 происходит 4 раза! А для цифры 9 можно не делать модуль вообще (количество повторений одного модуля для цифры вынесено в последнюю колонку). Это существенная трата пространства и логических вентилей. После реинжинеринга, на выходе будет примерно такая схема:

Реализация

Есть три способа воплотить данный декодер в жизнь.

  1. Из готовых микросхем логических вентилей, например серия микросхем 74HCxx. Данный способ самый простой, не самый практичный, но вполне допустимый. Также его будет просто модернизировать для n-разярдных индикаторов. И отлично подходит для тестов.

  2. Более сложный, но более “крутой” способ, создание всех логических вентилей на ТТЛ, отлично подойдут транзисторы BC546 и его комплементарная пара BC556. Этот способ потребует дополнительного создания схемы на транзисторах, для их корректной работы. Будет занимать больше пространства, но можно сделать прозрачный корпус и поставить на полочку. Ведь применение ТТЛ в наше время, дело совсем незаурядное.

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

Эпилог

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

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

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

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

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

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

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

    В наличии 250+ шт. в наличии.

    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

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

    Adafruit 0,56-дюймовый 4-значный 7-сегментный дисплей с рюкзаком I2C — STEMMA QT / qwiic

    сортировать по наилучшему соответствиюрекомендуемыеновейшиелучшие продажицена 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? “?” + параметры.соединение(“&”) : “” 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) })

    от Adafruit

    Что может быть лучше одного светодиода? Много светодиодов! Интересный способ сделать небольшой дисплей — использовать 4-разрядный 7-сегментный дисплей.

    Такие матрицы «мультиплексированы», поэтому для управления всеми семисегментными светодиодами вам потребуется 14 контактов. Это много контактов, и есть микросхемы драйверов, такие как MAX7219, которые могут управлять матрицей для вас, но нужно настроить много проводки, и они занимают массу места.

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

    В матрицах используется микросхема драйвера, которая делает всю тяжелую работу за вас: они имеют встроенные часы, поэтому они мультиплексируют дисплей. Они используют драйверы постоянного тока для сверхярких, однородных цветов ( изображения выше сфотографированы с минимальной настройкой, чтобы избежать перегрузки камеры! ), затемнения дисплея с шагом 1/16, все через простой интерфейс I2C. Рюкзаки поставляются с перемычками для выбора адреса, поэтому вы можете подключить до восьми 7-сегментов к одной шине I2C.

    В комплект входит: 9 шт.0003

    • Полностью протестированный и собранный светодиодный рюкзак
    • Сверхъяркий 4-разрядный семисегментный дисплей высотой 0,56 дюйма
    • 4-контактный разъем

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

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

    Эта плата/чип использует 7-битный адрес I2C от 0x70 до 0x77, выбирается с помощью перемычек

    • Размеры рюкзака: 27 мм x 50 мм x 4 мм / 1,1 дюйма x 2 дюйма x 0,16 дюйма
    • Вес рюкзака: 5,3 г
    • 7-сегментный дисплей Размеры: 19 мм x 50 мм x 14 мм / 0,75 дюйма x 2 дюйма x 0,56 дюйма
    • 7-сегментный дисплей Вес: 8,4 г

    Технические описания, схемы, файлы плат EagleCAD и Fritzing доступны в руководстве по продукту

    ` 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) })

    Что может быть лучше одного светодиода? Много светодиодов! Интересный способ сделать небольшой дисплей — использовать 4-разрядный 7-сегментный дисплей. читать далее…

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

    ADA878

    • shopify.com/s/files/1/0174/1800/products/878-05_768x768.jpg?v=1650625817″>

      Красный

       

    • Желтый

       

    • Белый

       

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

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