Семисегментный индикатор Ардуино

СОДЕРЖАНИЕ ►
Одноразрядный семисегментный индикатор подключить к Ардуино можно через макетную плату, самое главное знать распиновку (цоколевку индикатора), чтобы управлять сегментами от Arduino Uno. Рассмотрим, как подключить семисегментный индикатор к Ардуино и сделать простую программу с таймером. Будем управлять индикатором напрямую от микроконтроллера, используя тактовую кнопку.
Семисегментный индикатор распиновка

На картинке выше представлена распиновка одноразрядного семисегментного индикатора с общим катодом (минусом). Модуль представляет из себя небольшую led индикатор в котором находится семь светодиодов (благодаря этому индикатор и получил свое название) и восьмой светодиод в виде точки. Включая светодиоды в разной последовательности от Ардуино Уно, можно выводить различные цифры.
Обратите внимание, что панель не имеет резисторов, поэтому при подключении светодиодов используйте внешние резисторы. Если цоколевка семисегментного индикатора с общим анодом, вам непонятна, то можно опытным путем установить распиновку, подключая питание к разным выводам. При неправильном включении ничего страшного не произойдет, а вот без резистора светодиоды могут сгореть.
Как подключить семисегментный индикатор
Для этого занятия нам потребуется:
- плата Arduino Uno / Arduino Nano / Arduino Mega;
- одноразрядный семисегментный индикатор 5161as / hdsp 7503;
- тактовая кнопка;
- резисторы 220 Ом;
- макетная плата (breadboard);
- провода «папа-папа».

Для использования модуля 5161as / hdsp 7503 без сдвигового регистра потребуется использовать большое количество пинов Arduino Uno для включения светодиодов на индикаторе. В первом примере мы будем просто поочередно включать / мигать светодиодами для индикации на панели различных чисел. Соберите схему, как на представленной выше картинке и загрузите следующий скетч в микроконтроллер.
Скетч. Вывод чисел на 7-сегментный индикатор Ардуино
#define A 8 #define B 7 #define C 6 #define D 5 #define E 4 #define F 3 #define G 2 void setup() { pinMode(A, OUTPUT); pinMode(B, OUTPUT); pinMode(C, OUTPUT); pinMode(D, OUTPUT); pinMode(E, OUTPUT); pinMode(F, OUTPUT); pinMode(G, OUTPUT); } void loop() { digitalWrite(A, LOW); //цифра один digitalWrite(B, HIGH); digitalWrite(C, HIGH); digitalWrite(D, LOW); digitalWrite(E, LOW); digitalWrite(F, LOW); digitalWrite(G, LOW); delay(1000); digitalWrite(A, HIGH); //цифра два digitalWrite(B, HIGH); digitalWrite(C, LOW); digitalWrite(D, HIGH); digitalWrite(E, HIGH); digitalWrite(F, LOW); digitalWrite(G, HIGH); delay(1000); digitalWrite(A, HIGH); //цифра три digitalWrite(B, HIGH); digitalWrite(C, HIGH); digitalWrite(D, HIGH); digitalWrite(E, LOW); digitalWrite(F, LOW); digitalWrite(G, HIGH); delay(1000); }
Пояснения к коду:
- скетч получается большим, поэтому мы ограничились тремя числами. Вывод других чисел на семисегментный индикатор Arduino не составит труда.
Управление семисегментными индикаторами

В следующем примере переключение чисел на индикаторе будет происходить только при нажатии тактовой кнопки. Дойдя до числа 3, таймер вновь обнулится и будет ожидать повторного нажатия на кнопку. Это довольно простые программы для Ардуино и семисегментного индикатора, для более сложных и интересных программ необходимо уже использовать сдвиговый регистр 74hc595 для Ардуино.
Скетч. Одноразрядный семисегментный индикатор и кнопка
#define A 8 #define B 7 #define C 6 #define D 5 #define E 4 #define F 3 #define G 2 #define BUTTON 12 byte v = 0; void setup() { pinMode(A, OUTPUT); pinMode(B, OUTPUT); pinMode(C, OUTPUT); pinMode(D, OUTPUT); pinMode(E, OUTPUT); pinMode(F, OUTPUT); pinMode(G, OUTPUT); pinMode(BUTTON, INPUT); } void loop() { digitalWrite(A, HIGH); //цифра нуль digitalWrite(B, HIGH); digitalWrite(C, HIGH); digitalWrite(D, HIGH); digitalWrite(E, HIGH); digitalWrite(F, HIGH); digitalWrite(G, LOW); if (digitalRead(BUTTON) == HIGH) { delay(500); v = 1; } while (v == 1) { digitalWrite(A, LOW); //цифра один digitalWrite(B, HIGH); digitalWrite(C, HIGH); digitalWrite(D, LOW); digitalWrite(E, LOW); digitalWrite(F, LOW); digitalWrite(G, LOW); if (digitalRead(BUTTON) == HIGH) { delay(500); v = 2; } } while (v == 2) { digitalWrite(A, HIGH); //цифра два digitalWrite(B, HIGH); digitalWrite(C, LOW); digitalWrite(D, HIGH); digitalWrite(E, HIGH); digitalWrite(F, LOW); digitalWrite(G, HIGH); if (digitalRead(BUTTON) == HIGH) { delay(500); v = 3; } } while (v == 3) { digitalWrite(A, HIGH); //цифра три digitalWrite(B, HIGH); digitalWrite(C, HIGH); digitalWrite(D, HIGH); digitalWrite(E, LOW); digitalWrite(F, LOW); digitalWrite(G, HIGH); if (digitalRead(BUTTON) == HIGH) { delay(500); v = 0; } } }
Пояснения к коду:
- переменная
byte v = 0;
используется в программе для перехода одного цикла while к другому. При нажатии на кнопку значение переменной v меняется; - в программе поставлена небольшая задержка в каждом условии для защиты от быстрого перехода от одного цикла while в другой.
Заключение. Мы ограничились лишь знакомством с данным модулем и его применением с платой Ардуино. Используя несколько панелек или четырехразрядный семисегментный индикатор можно уже сделать полноценный таймер на Ардуино или часы реального времени. Эти схемы мы разместили в разделе Проекты на Ардуино для начинающих, где любой может найти по своему вкусу проект на микроконтроллере.
Подборка на тему: Семисегментный индикатор Ардуино
3 комментариев для “Семисегментный индикатор Ардуино”
Добавить комментарий
Записи похожие на: Arduino. Подключение семисегментного индикатора
- Подключение ультразвукового датчика к Ардуино
- Итоги участия в финале Балтийского научно-инженерного конкурса
- Диплом по программированию Ардуино
- Локальные и глобальные переменные Ардуино
Проекты похожие на: Arduino. Подключение семисегментного индикатора
Я думаю, что Вы не правы. Могу отстоять свою позицию.
В чём они не правы?
Не слушай этого бота