- 7-сегментен и 4-цифрен 7-сегментен дисплеен модул:
- Свързване на 4-цифрен 7-сегментен модул с Raspberry Pi:
- Програмиране на вашия Raspberry Pi:
- Показване на времето на 4-цифрен 7-сегментен с помощта на Raspberry Pi:
Всички знаем, че Raspberry Pi е прекрасна платформа за разработка, базирана на ARM микропроцесор. С високата си изчислителна мощност той може да направи чудеса в ръцете на любителите на електрониката или студентите. Всичко това може да бъде възможно само ако знаем как да го накараме да взаимодейства с реалния свят и да анализираме данните чрез някакво изходно устройство. Има много сензори, които могат да открият определени параметри от света в реално време и да го прехвърлят в цифров свят и ние ги анализираме, гледайки ги или на LCD екран, или на друг дисплей. Но винаги би било неикономично да се използва LCD екран с PI за показване на малко количество данни. Тук предпочитаме да използваме буквено-цифров LCD дисплей 16x2 или 7-сегментен дисплей. Вече научихме как да използваме буквено-цифров LCD и едносегментен 7-сегментен дисплей с Raspberry pi. Днес ще го направимИнтерфейс 4-цифрен седемсегментен дисплеен модул с Raspberry Pi и показване на времето над него.
Въпреки че буквено-цифровият LCD 16x2 е много по-удобен от 7-сегментния дисплей, има малко сценарии, при които 7-сегментният дисплей би бил по-удобен от LCD дисплея. LCD страда от недостатъка на ниския размер на символа и ще бъде прекалено голям за вашия проект, ако просто планирате да покажете някои цифрови стойности. 7-сегментите също имат предимството срещу лошото осветление и могат да се гледат от по-големи ъгли от нормалния LCD екран. И така, нека започнем да го знаем.
7-сегментен и 4-цифрен 7-сегментен дисплеен модул:
7-сегментният дисплей има седем сегмента и всеки сегмент има един светодиод вътре, за да покаже числата чрез осветяване на съответните сегменти. Подобно на това, ако искате 7-сегментът да показва числото "5", тогава трябва да светите сегменти a, f, g, c и d, като направите съответните им щифтове високи. Има два типа 7-сегментни дисплеи: Общ катод и Общ анод, тук използваме седемсегментен дисплей Общ катод. Научете повече за 7-сегментния дисплей тук.
Сега знаем как да покажем желания цифров символ на един 7-сегментен дисплей. Но е очевидно, че ще се нуждаем от повече от един 7-сегментен дисплей, за да предадем всякаква информация, която е повече от една цифра. И така, в този урок ще използваме 4-цифрен 7-сегментен дисплеен модул, както е показано по-долу.
Както виждаме, има четири седем сегментни дисплея, свързани заедно. Знаем, че всеки 7-сегментен модул ще има 10 щифта и за 4 седем сегментни дисплея ще има общо 40 щифта и би било забързано всеки да ги запоява на платка, така че горещо препоръчвам на всеки да закупи модул или направете своя собствена платка за използване на 4-цифрен 7-сегментен дисплей. Схемата на връзката за същото е показана по-долу:
За да разберем как работи 4-цифрения седемсегментен модул, трябва да разгледаме горните схеми, както е показано, щифтовете A на всичките четири дисплея са свързани, за да се съберат като едно A и същото за B, C…. до DP. Така че, ако тригер А е включен, тогава всичките четири А трябва да отидат високо, нали?
Но това не се случва. Имаме допълнителни четири щифта от 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 |
Сегмент a |
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 |
ПИН 21 |
Сегмент g |
7 |
8 |
GPIO 10 |
ПИН 19 |
Сегмент DP |
8 |
9 |
GPIO 7 |
ПИН 26 |
Цифра 1 |
13 |
10 |
GPIO 8 |
ПИН 24 |
Цифра 2 |
14. |
11. |
GPIO 25 |
ПИН 22 |
Цифра 3 |
15 |
12 |
GPIO 24 |
ПИН 18 |
Цифра 4 |
16. |
13 |
Земя |
Земя |
Земя |
11. |
Определете щифтовете на вашия модул и всички сте добре да продължите с връзките. Откриването на GPIO щифтовете в Raspberry pi може да е малко предизвикателна задача, затова ви предоставих тази снимка за GPIO Pins.
Програмиране на вашия 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 (False)
Можем да отнесем GPIO пиновете на PI, или чрез пинов номер на борда, или чрез номера на тяхната функция. Подобно на „ПИН 29“ на платката е „GPIO5“. Така че ние казваме тук, или ще представим щифта тук с '29' или '5'. GPIO.BCM означава, че ще представим използването на 5 за GPIO5 пин 29.
IO.setmode (GPIO.BCM)
Както винаги трябва да започнем с инициализиране на щифтовете, тук и сегментните щифтове, и цифровите щифтове са изходни щифтове. За целите на програмирането ние формираме масиви за сегментни щифтове и ги инициализираме на '0', след като ги декларираме като GPIO.
segment8 = (26,19,13,6,5,11,9,10) за сегмент в сегмент8: GPIO.setup (сегмент, GPIO.OUT) GPIO.output (сегмент, 0)
По същия начин за цифровите щифтове ги декларираме като изходни щифтове и ги правим „0“ по подразбиране
#Digit 1 GPIO.setup (7, GPIO.OUT) GPIO.output (7, 0) # Off първоначално #Digit 2 GPIO.setup (8, GPIO.OUT) GPIO.output (8, 0) # Off първоначално #Digit 3 GPIO.setup (25, GPIO.OUT) GPIO.output (25, 0) # Off първоначално # Цифрово 4 GPIO.setup (24, GPIO.OUT) GPIO.output (24, 0) # Off първоначално
Трябва да формираме масиви, за да показваме всяко число на седемсегментен дисплей. За да покажем едно число, трябва да контролираме всички 7 сегментни щифта (изключени точки), тоест те или трябва да бъдат изключени или включени. Например, за да покажем числото 5, направете следното подреждане
S.No |
Rsp Pi GPIO номер |
Име на 7-сегмента |
Състояние за показване на „5“. (0-> OFF, 1-> ON) |
1 |
GPIO 26 |
Сегмент a |
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.
сега = datetime.datetime.now () час = сега.час минута = сега.minute h1 = час / 10 h2 = час% 10 m1 = минута / 10 m2 = минута% 10 отпечатък (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 е много по-бърз от човешкото око, така че това, което всъщност правим: показваме по една цифра, но го правим много бързо, както е показано по-горе.
Избираме едноцифрено показване, което изчаква 2ms (променливо закъснение_ време), така че MPU и 7-сегментният да могат да го обработят и след това да изключат тази цифра и да преминат към следващата цифра и да направят същото, докато достигнем последната цифра. Това закъснение от 2 ms не може да се наблюдава от човешкото око и изглежда че всичките четири цифри са включени едновременно.
Последното нещо, което трябва да го научите, за да знаете как работи функцията 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 с адаптер, а не с вашия лаптоп / компютър, тъй като количеството ток, изтеглено от 7-сегментния дисплей, е голямо и вашият USB порт не може да го накара.
Ако всичко работи според очакванията, тогава трябва да намерите нещо подобно по-долу.
Пълната работа на този малинов пи часовник може да се провери и на видеото, дадено по-долу. Надявам се, че проектът ви е харесал и ви е харесало да го изградите. Кажете ми какво мислите или ако имате нужда от помощ.