- 7-сегментный и 4-значный 7-сегментный дисплейный модуль:
- Подключение 4-значного 7-сегментного модуля к Raspberry Pi:
- Программирование вашего Raspberry Pi:
- Отображение времени на 4-значном 7-сегменте с использованием Raspberry Pi:
Все мы знаем, что Raspberry Pi Замечательная платформа для разработки на базе микропроцессора ARM. Обладая высокой вычислительной мощностью, он может творить чудеса в руках любителей электроники или студентов. Все это возможно, только если мы знаем, как заставить его взаимодействовать с реальным миром и анализировать данные через какое-то устройство вывода. Существует множество датчиков, которые могут обнаруживать определенные параметры из мира реального времени и передавать их в цифровой мир, и мы анализируем их, просматривая их либо на ЖК-экране, либо на другом дисплее. Но всегда было бы неэкономично использовать ЖК-экран с PI для отображения небольшого количества данных. Здесь мы предпочитаем использовать буквенно-цифровой ЖК-дисплей 16x2 или 7-сегментный дисплей. Мы уже научились использовать буквенно-цифровой ЖК-дисплей и односегментный 7-сегментный дисплей с Raspberry pi. Сегодня мы будемИнтерфейс 4-значного семисегментного модуля дисплея с Raspberry Pi и отображение времени над ним.
Хотя буквенно-цифровой ЖК-дисплей 16x2 намного удобнее 7-сегментного дисплея, существует несколько сценариев, в которых 7-сегментный дисплей может оказаться более удобным, чем ЖК-дисплей. ЖК-дисплей имеет недостаток, заключающийся в том, что он имеет небольшой размер символов, и будет излишним для вашего проекта, если вы просто планируете отображать некоторые числовые значения. 7-сегментный экран также имеет преимущество перед плохим освещением и может просматриваться под большим углом, чем обычный ЖК-экран. Итак, давайте начнем это знать.
7-сегментный и 4-значный 7-сегментный дисплейный модуль:
7-сегментный дисплей состоит из семи сегментов, и в каждом сегменте есть по одному светодиодному индикатору внутри, который отображает числа, подсвечивая соответствующие сегменты. Например, если вы хотите, чтобы 7-сегментный сегмент отображал цифру «5», вам нужно осветить сегменты a, f, g, c и d, сделав их соответствующие выводы высокими. Есть два типа 7-сегментных дисплеев: с общим катодом и с общим анодом, здесь мы используем семисегментный дисплей с общим катодом. Узнайте больше о 7-сегментном дисплее здесь.
Теперь мы знаем, как отобразить желаемый числовой символ на одном 7-сегментном дисплее. Но совершенно очевидно, что нам потребуется более одного 7-сегментного дисплея для отображения любой информации, состоящей более чем из одной цифры. Итак, в этом руководстве мы будем использовать 4-значный 7-сегментный модуль дисплея, как показано ниже.
Как мы видим, четыре дисплея с семью сегментами соединены вместе. Мы знаем, что каждый 7-сегментный модуль будет иметь 10 контактов, а для 4 7-сегментных дисплеев всего будет 40 контактов, и кому-то будет сложно припаять их на точечной плате, поэтому я настоятельно рекомендую всем купить модуль. или сделайте свою собственную печатную плату для использования 4-значного 7-сегментного дисплея. Схема подключения для него показана ниже:
Чтобы понять, как работает 4-значный семисегментный модуль, мы должны взглянуть на приведенную выше схему, как показано, контакты A всех четырех дисплеев соединены для сбора как один A и то же самое для B, C…. до DP. Итак, в основном, если триггер A включен, тогда все четыре A должны стать высокими, верно?
Но этого не происходит. У нас есть дополнительные четыре контакта от D0 до D3 (D0, D1, D2 и D3), которые можно использовать для управления тем, какой дисплей из четырех должен быть высоким. Например: если мне нужно, чтобы мой вывод присутствовал только на втором дисплее, тогда только D1 должен быть высоким, а остальные контакты (D0, D2 и D3) должны быть низкими. Просто мы можем выбрать, какой дисплей должен стать активным, используя контакты от D0 до D3, и какой символ отображать, используя контакты от A до DP.
Подключение 4-значного 7-сегментного модуля к Raspberry Pi:
Давайте посмотрим, как мы можем подключить этот 4-значный 7-сегментный модуль с нашим Raspberry Pi. 7-сегментный модуль имеет 16 контактов, как показано ниже. У вашего модуля может быть меньше, но не волнуйтесь, он наверняка все равно будет иметь следующее
- 7- или 8-сегментные контакты (здесь контакты с 1 по 8)
- Контакт заземления (здесь контакт 11)
- 4-значные контакты (здесь контакты с 13 по 16)
Ниже приведена схема цифровых часов Raspberry Pi при подключении 4-значного семисегментного модуля дисплея к Raspberry Pi:
Следующая таблица также поможет вам выполнить подключения и проверить соответствие схемам, показанным выше.
S.No |
Номер RSP Pi GPIO |
ПИН-код RSP Pi |
7-сегментное имя |
7-сегментный контактный номер (здесь, в этом модуле) |
1 |
GPIO 26 |
ПИН 37 |
Сегмент а |
1 |
2 |
GPIO 19 |
ПИН 35 |
Сегмент б |
2 |
3 |
GPIO 13 |
ПИН 33 |
Сегмент c |
3 |
4 |
GPIO 6 |
ПИН 31 |
Сегмент d |
4 |
5 |
GPIO 5 |
ПИН 29 |
Сегмент е |
5 |
6 |
GPIO 11 |
ПИН 23 |
Сегмент f |
6 |
7 |
GPIO 9 |
PIN 21 |
Сегмент g |
7 |
8 |
GPIO 10 |
ПИН 19 |
Сегмент DP |
8 |
9 |
GPIO 7 |
ПИН 26 |
Цифра 1 |
13 |
10 |
GPIO 8 |
PIN 24 |
Цифра 2 |
14 |
11 |
GPIO 25 |
ПИН 22 |
Цифра 3 |
15 |
12 |
GPIO 24 |
ПИН 18 |
Цифра 4 |
16 |
13 |
Земля |
Земля |
Земля |
11 |
Определите контакты на вашем модуле, и вы можете приступить к подключению. Обнаружение контактов GPIO в Raspberry pi может быть немного сложной задачей, поэтому я предоставил вам это изображение для контактов GPIO.
Программирование вашего Raspberry Pi:
Здесь мы используем язык программирования Python для программирования RPi. Есть много способов запрограммировать Raspberry Pi. В этом руководстве мы используем Python 3 IDE, так как она является наиболее часто используемой. Полная программа Python приводится в конце данного руководства. Узнать больше о программе и запустить код в Raspberry Pi можно здесь.
Мы поговорим о нескольких командах, которые мы собираемся использовать в программе PYHTON для этого проекта, Сначала мы собираемся импортировать файл GPIO из библиотеки, функция ниже позволяет нам программировать контакты GPIO PI. Мы также переименовали «GPIO» в «IO», поэтому в программе всякий раз, когда мы хотим обратиться к контактам GPIO, мы будем использовать слово «IO». Мы также импортировали время и дату и время, чтобы прочитать значение времени из Rsp Pi.
импортировать RPi.GPIO как GPIO время импорта, дата и время
Иногда, когда контакты GPIO, которые мы пытаемся использовать, могут выполнять другие функции. В этом случае мы будем получать предупреждения при выполнении программы. Команда ниже указывает PI игнорировать предупреждения и продолжить выполнение программы.
IO.setwarnings (Ложь)
Мы можем ссылаться на контакты GPIO PI, либо по номеру контакта на плате, либо по номеру их функции. Как и «PIN 29» на плате, это «GPIO5». Итак, мы говорим здесь, что будем обозначать булавку цифрой 29 или 5. GPIO.BCM означает, что мы будем использовать 5 для контакта 29 GPIO5.
IO.setmode (GPIO.BCM)
Как всегда, мы должны начать с инициализации контактов, здесь и сегментные, и цифровые контакты являются выходными контактами. В целях программирования мы формируем массивы для выводов сегментов и инициализируем их значением «0» после объявления их как GPIO.OUT.
сегмент8 = (26,19,13,6,5,11,9,10) для сегмента в сегменте 8: GPIO.setup (сегмент, GPIO.OUT) GPIO.output (сегмент, 0)
Аналогично для цифровых выводов мы объявляем их как выходные выводы и делаем их по умолчанию равными 0.
# Цифра 1 GPIO.setup (7, GPIO.OUT) GPIO.output (7, 0) # Первоначально выключено # Цифра 2 GPIO.setup (8, GPIO.OUT) GPIO.output (8, 0) # Первоначально выключено # Цифра 3 GPIO.setup (25, GPIO.OUT) GPIO.output (25, 0) # Первоначально выключено # Цифра 4 GPIO.setup (24, GPIO.OUT) GPIO.output (24, 0) # Первоначально выключено
Мы должны сформировать массивы для отображения каждого числа на семисегментном дисплее. Чтобы отобразить одно число, мы должны контролировать все 7 сегментных контактов (исключая точечный контакт), то есть они должны быть либо выключены, либо включены. Например, чтобы отобразить число 5, мы должны сделать следующее:
S.No |
Номер RSP Pi GPIO |
7-сегментное имя |
Статус для отображения «5». (0-> ВЫКЛ, 1-> ВКЛ) |
1 |
GPIO 26 |
Сегмент а |
1 |
2 |
GPIO 19 |
Сегмент б |
1 |
3 |
GPIO 13 |
Сегмент c |
0 |
4 |
GPIO 6 |
Сегмент d |
1 |
5 |
GPIO 5 |
Сегмент е |
1 |
6 |
GPIO 11 |
Сегмент f |
0 |
7 |
GPIO 9 |
Сегмент g |
1 |
Точно так же у нас есть порядковые номера для всех чисел и алфавитов. Вы можете написать самостоятельно или воспользоваться таблицей ниже.
С помощью этих данных мы можем сформировать массивы для каждого числа в нашей программе на Python, как показано ниже.
ноль = ноль = один = два = три = четыре = пять = шесть = семь = восемь = девять =
Если вы будете следовать программе будет функция для отображения каждого символа на наш 7-сегментный дисплей, но позволяет пропустить это сейчас и получить в то время как бесконечный цикл. Где прочитать настоящее время из Raspberry Pi и разделить значение времени между четырьмя переменными. Например, если время равно 10,45, тогда переменная h1 будет иметь 1, h2 будет иметь 0, m1 будет иметь 4, а m2 будет иметь 5.
now = datetime.datetime.now () час = now.hour минута = now.minute h1 = час / 10 h2 = час% 10 m1 = минута / 10 m2 = минута% 10 print (h1, h2, m1, m2)
Мы должны отобразить эти четыре значения переменных на наших четырех цифрах соответственно. Чтобы записать значение переменной в цифру, мы можем использовать следующие строки. Здесь мы отображаем цифру 1, повышая ее, после чего будет вызвана функция print_segment (переменная) для отображения значения переменной на сегментном дисплее. Вам может быть интересно, почему у нас есть задержка после этого и почему мы отключаем эту цифру после этого.
GPIO.output (7, 1) # Включить Digit One print_segment (h1) # Печатать h1 в сегменте time.sleep (delay_time) GPIO.output (7, 0) # Отключить Digit One
Причина в том, что, как мы знаем, мы можем отображать только одну цифру за раз, но у нас есть четыре цифры, которые должны отображаться, и только если отображаются все четыре цифры, пользователю будет виден полный четырехзначный номер.
Итак, как отобразить все 4 цифры одновременно ?
К счастью для нас, наш MPU намного быстрее человеческого глаза, поэтому то, что мы на самом деле делаем: мы отображаем по одной цифре за раз, но делаем это очень быстро, как показано выше.
Мы выбираем одноразрядный дисплей, он ждет 2 мс (переменная delay_time), чтобы MPU и 7-сегментный могли его обработать, а затем выключаем эту цифру и переходим к следующей цифре и делаем то же самое, пока не дойдем до последней цифры. Эта задержка в 2 мс не может быть замечена человеческим глазом, и все четыре цифры кажутся включенными одновременно.
Последнее, что нужно изучить, это узнать, как работает функция print_segment (переменная) . Внутри этой функции мы используем массивы, которые мы объявили до сих пор. Таким образом, любая переменная, которую мы отправляем в эту функцию, должна иметь значение между (0-9), символ переменной получит это значение и сравнит его с реальным значением. Здесь переменная сравнивается с «1». Точно так же мы сравниваем со всеми числами от 0 до 9. Если это совпадение, мы используем массивы и присваиваем каждое значение соответствующим выводам сегмента, как показано ниже.
def print_segment (charector): если charector == 1: для i в диапазоне (7): GPIO.output (segment8, one)
Отображение времени на 4-значном 7-сегменте с использованием Raspberry Pi:
Используйте схему и код, приведенные здесь, чтобы выполнить подключения и соответствующим образом запрограммировать свой raspberry pi. После того, как все будет сделано, просто запустите программу, и вы увидите, что текущее время отображается на семисегментном дисплее. Но есть несколько вещей, которые вы должны проверить перед этим.
- Убедитесь, что вы установили на Raspberry Pi текущее время, на всякий случай, если он работает в автономном режиме.
- Подключайте Raspberry pi к адаптеру, а не к ноутбуку / компьютеру, потому что ток, потребляемый 7-сегментным дисплеем, высок, и ваш USB-порт не может его использовать.
Если все работает, как ожидалось, вы должны найти что-то вроде этого ниже.
Полную работу этих часов Raspberry Pi можно также проверить на видео, приведенном ниже. Надеюсь, вам понравился проект и понравилось его создавать. Сообщите мне, что вы думаете, или если вам понадобится помощь.