Вопрос по 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
@sundaysfantasy, 👍2
Обсуждение1 ответ
Спасибо за предоставленную информацию, она мне очень помогла с аналогичным 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
- Arduino nano + 4x 7-сегментный дисплей + 74HC595 — включены только точки
- 7 сегмент 4 цифры не показывающие числа 2,3 и 0
- Использование 4-значного 7-сегментного дисплея на Arduino Nano
- Дрейф таймера Arduino Nano
- Выход TPIC6B595 не может обеспечить подачу питания на 7-сегментный дисплей
- avrdude ser_open() can't set com-state
- Загрузка Arduino Nano дает ошибку: avrdude: stk500_recv(): programmer is not responding
- Какое максимальное энергопотребление Arduino Nano 3.0?
Вы можете эмулировать три состояния, установив вывод в состояние ВХОД. Это даст вам три необходимых состояния: ВЫХОД и ВЫСОКИЙ уровень, ВЫХОД и НИЗКИЙ уровень и ВХОД., @Majenko
Иногда самое простое решение — самое лучшее решение, спасибо, Majenko!, @sundaysfantasy
Ссылка на ваш код не работает., @VE7JRO
Я сменил сайт загрузки, попробуйте сейчас., @sundaysfantasy
Всё ещё не работает. Я могу скачать файл, но он повреждён. Попробуйте загрузить файл .ino или .txt., @VE7JRO
Это немного хлопотно, потому что я разбил код на вкладки и пришлось бы загружать всё по отдельности. В общем, я решил проблему., @sundaysfantasy