Вопрос по 6-проводному 3-разрядному 7-сегментному дисплею и Arduino

Вот вам головоломка:

У меня есть следующий 3-разрядный 7-сегментный дисплей, у которого всего 6 проводов

Экспериментальным путем я выяснил, как это работает, хотя я этого и не понимаю, но в любом случае каждый сегмент зажигается комбинацией HIGH и LOW определенных двух контактов, комбинации приведены ниже:

Итак, я попытался заставить это работать, но столкнулся со следующей проблемой (как вы можете видеть на первом рисунке): если, например, я хочу активировать сегмент, которому требуется высокий уровень на выводе 5 и низкий уровень на выводе 6, он также активирует другие сегменты, которым требуется высокий уровень на выводе 5, потому что, по-видимому, если цифровой выход не имеет высокого уровня, он автоматически подтягивается к земле, и это проблема. Я попробовал установить другие контакты, которые я не использую в сегменте, на высокий уровень, но тогда активируются сегменты, которым требуется 6 низких уровней, так что это не сработало.

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

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

Заранее спасибо!

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

LE: Мне удалось заставить это работать, оставив в цикле только функцию отображения и вызывая каждые 5 секунд функцию датчика температуры. Дисплей всё равно обновляется при вызове, но меня это не беспокоит.

Вот код: http://www.mediafire.com/file/2bs5r8u5rkzpu8g/6w_3D_7S_display.rar

, 👍2

Обсуждение

Вы можете эмулировать три состояния, установив вывод в состояние ВХОД. Это даст вам три необходимых состояния: ВЫХОД и ВЫСОКИЙ уровень, ВЫХОД и НИЗКИЙ уровень и ВХОД., @Majenko

Иногда самое простое решение — самое лучшее решение, спасибо, Majenko!, @sundaysfantasy

Ссылка на ваш код не работает., @VE7JRO

Я сменил сайт загрузки, попробуйте сейчас., @sundaysfantasy

Всё ещё не работает. Я могу скачать файл, но он повреждён. Попробуйте загрузить файл .ino или .txt., @VE7JRO

Это немного хлопотно, потому что я разбил код на вкладки и пришлось бы загружать всё по отдельности. В общем, я решил проблему., @sundaysfantasy


1 ответ


-2

Спасибо за предоставленную информацию, она мне очень помогла с аналогичным 7-сегментным дисплеем. ;)

Новая ссылка на оригинальный файл OP:
https://drive.google.com/file/d/1G9Fknrpn4E85xdxtZdb-2jlWqemdT6xo/view?usp=drive_link

И мой, использующий его как вольтметр для батареи 3,7 В: https://drive.google.com/drive/folders/1HA1fTVTCFzFU_idXX0rM5-RFQmmX1vFO?usp=drive_link

Библиотека Arduino «everytime» доступна из списка библиотек или здесь: https://github.com/kfessel/everytime

Джо

,

Хотя эта ссылка может быть ответом на вопрос, лучше включить сюда основную часть ответа и предоставить ссылку для справки. Ответы, содержащие только ссылки, могут стать недействительными, если страница, на которую они ссылаются, изменится. - [Из обзора](/review/late-answers/77185), @Greenonline

Бесплатный доступ к файлам заблокирован, требуется разрешение владельца. @Jdev99 пожалуйста измените это на бесплатный доступ для всех., @MatsK