- 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-сегментних дисплеїв: Common Cathode і Common Anode, тут ми використовуємо загальний катод з семи сегментів. Дізнайтеся більше про 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:
Наступна таблиця також допоможе вам у встановленні з'єднань та перевірці їх на відповідність схемам, показаним вище.
С.Ні |
Rsp Pi GPIO номер |
PIN-код Rsp Pi |
Назва 7-сегмента |
7-сегментний контактний номер (тут, у цьому модулі) |
1 |
GPIO 26 |
PIN-код 37 |
Сегмент a |
1 |
2 |
GPIO 19 |
PIN-код 35 |
Сегмент b |
2 |
3 |
GPIO 13 |
PIN-код 33 |
Сегмент c |
3 |
4 |
GPIO 6 |
PIN 31 |
Сегмент d |
4 |
5 |
GPIO 5 |
PIN 29 |
Сегмент e |
5 |
6 |
GPIO 11 |
PIN-код 23 |
Сегмент f |
6 |
7 |
GPIO 9 |
PIN-код 21 |
Сегмент g |
7 |
8 |
GPIO 10 |
PIN 19 |
Сегмент ДП |
8 |
9 |
GPIO 7 |
PIN-код 26 |
Цифра 1 |
13 |
10 |
GPIO 8 |
PIN-код 24 |
Розряд 2 |
14 |
11 |
GPIO 25 |
PIN-код 22 |
Цифра 3 |
15 |
12 |
GPIO 24 |
PIN 18 |
Цифра 4 |
16 |
13 |
Земля |
Земля |
Земля |
11 |
Визначте штифти вашого модуля, і ви всі можете продовжувати з’єднання. Виявлення шпильок GPIO у Raspberry pi може бути дещо складним завданням, тому я надав вам цю картинку для шпильок GPIO.
Програмування вашого Raspberry Pi:
Тут ми використовуємо мову програмування Python для програмування RPi. Існує багато способів програмування вашого Raspberry Pi. У цьому посібнику ми використовуємо IDE Python 3, оскільки він є найбільш часто використовуваним. Повна програма Python наводиться в кінці цього посібника. Дізнайтеся більше про програму та запуск коду в Raspberry Pi тут.
Ми поговоримо про декілька команд, які ми будемо використовувати в програмі PYHTON для цього проекту, Спочатку ми збираємося імпортувати файл GPIO з бібліотеки, нижче функція дозволяє програмувати GPIO штифти PI. Ми також перейменовуємо “GPIO” на “IO”, тому в програмі, коли ми хочемо посилатися на шпильки GPIO, ми будемо використовувати слово “IO”. Ми також імпортували час та дату, щоб зчитувати значення часу з Rsp Pi.
імпорт RPi.GPIO як час GPIO імпорту, дата і час
Іноді, коли шпильки GPIO, які ми намагаємось використовувати, можуть виконувати деякі інші функції. У такому випадку ми отримаємо попередження під час виконання програми. Команда нижче вказує PI ігнорувати попередження та продовжувати роботу з програмою.
IO.setwarnings (False)
Ми можемо вказати шпильки GPIO PI або за номером контакту на борту, або за номером їх функції. Як і "PIN 29" на платі, це "GPIO5". Отже, ми говоримо тут, або ми будемо представляти шпильку тут як «29» або «5». GPIO.BCM означає, що ми будемо представляти, використовуючи 5 для GPIO5 контакт 29.
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, ми маємо зробити наступну домовленість
С.Ні |
Rsp Pi GPIO номер |
Назва 7-сегмента |
Статус для відображення '5'. (0-> OFF, 1-> ON) |
1 |
GPIO 26 |
Сегмент a |
1 |
2 |
GPIO 19 |
Сегмент b |
1 |
3 |
GPIO 13 |
Сегмент c |
0 |
4 |
GPIO 6 |
Сегмент d |
1 |
5 |
GPIO 5 |
Сегмент e |
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 м2 = хвилина% 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 набагато швидший, ніж людське око, тому що ми насправді робимо: ми відображаємо по одній цифрі, але робимо це дуже швидко, як показано вище.
Ми вибираємо одноцифровий дисплей, який зачекає 2 мс (змінна затримка_час), щоб 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-порт не може його отримати.
Якщо все працює, як очікувалося, то вам слід знайти щось подібне нижче.
Повну роботу цього годинника малинового пі можна також перевірити на відео, поданому нижче. Сподіваюся, вам сподобався проект і сподобалося його будувати. Повідомте мене, що ви думаєте, або якщо вам потрібна допомога.