Загрузка данных
МЫ ПЕРЕЕХАЛИ НА НОВЫЙ АДРЕС !!!
Подключение 4-х разрядного 7-ми сегментного индикатора к Arduino UNO
16.10.2023Вольтик.руПодключение модулей Arduino, Программирование в Arduino IDE3комментария
В мире микроконтроллеров Arduino UNO является одним из самых популярных и доступных устройств для создания различных электронных проектов. Однако, чтобы максимально раскрыть его потенциал, иногда требуется подключение различных дополнительных модулей. В этой статье мы рассмотрим, как подключить 4-х разрядный 7-ми сегментный индикатор к Arduino UNO и создать простой отображатель чисел.
4-х разрядный 7-ми сегментный индикатор – это электронное устройство, представляющее из себя дисплей с четырьмя отдельными 7-ми сегментными индикаторами. Каждый индикатор может отображать цифры от 0 до 9, а также некоторые буквы. Индикатор предназначен для простого вывода небольшого количества информации без использования сложных библиотек. Дисплей разведён так, что его подключение потребует минимальное количество портов ввода-вывода. Это достигается мультиплексированием сегментов дисплея, но немного усложняет управление, добавляя необходимость использования динамической индикации. Мультиплексирование образовано соединением анодов и объединением катодов одинаковых сегментов, то есть данный дисплей имеет тип «общий анод».
Распиновка 7-сегментного 4-разрядного индикатора
Arduino UNO – это популярная плата разработки, основанная на микроконтроллере ATMega328P. Она обладает множеством цифровых и аналоговых пинов, что делает ее идеальным выбором для подключения различных датчиков и модулей. Arduino UNO проста в использовании и подходит как для начинающих, так и для опытных разработчиков.
Схема подключения
Подключение 4-х разрядного 7-ми сегментного индикатора к Arduino UNO
Для подключения 4-х разрядного 7-ми сегментного индикатора к Arduino UNO, выполните следующую схему:
Пин 7-сегментного индикатора Пин Arduino UNO
A 12
B 11
C 10
D 9
E 8
F 7
G 6
DP (точка) 5
COM1 A3
COM2 A4
COM3 A5
COM4 A2
Библиотеки
Для работы с 4-х разрядным 7-ми сегментным индикатором на Arduino не требуются специальные библиотеки. Достаточно использовать стандартные функции Arduino для управления индикатором.
Пример кода
Ниже приведен пример кода, который демонстрирует, как можно управлять индикатором без использования дополнительных библиотек:
Arduino
// Определение пинов для подключения к 7-ми сегментному индикатору
const int segmentPins[] = {12, 11, 10, 9, 8, 7, 6};
const int digitPins[] = {A3, A4, A5, A2};
// Определение символов для каждой цифры (a, b, c, d, e, f, g)
const byte digits[][7] = {
{1, 1, 1, 1, 1, 1, 0}, // 0
{0, 1, 1, 0, 0, 0, 0}, // 1
{1, 1, 0, 1, 1, 0, 1}, // 2
{1, 1, 1, 1, 0, 0, 1}, // 3
{0, 1, 1, 0, 0, 1, 1}, // 4
{1, 0, 1, 1, 0, 1, 1}, // 5
{1, 0, 1, 1, 1, 1, 1}, // 6
{1, 1, 1, 0, 0, 0, 0}, // 7
{1, 1, 1, 1, 1, 1, 1}, // 8
{1, 1, 1, 1, 0, 1, 1} // 9
};
void setup() {
// Настройка пинов сегментов и разрядов как выходов
for (int i = 0; i < 7; i++) {
pinMode(segmentPins[i], OUTPUT);
}
for (int i = 0; i < 4; i++) {
pinMode(digitPins[i], OUTPUT);
}
}
void loop() {
// Отображение числа "1234" на индикаторе
displayNumber(1234);
delay(1000);
}
void displayNumber(int number) {
for (int digit = 3; digit >= 0; digit--) {
// Включение нужного разряда
for (int i = 0; i < 4; i++) {
if (i == digit) {
digitalWrite(digitPins[i], LOW); // Включаем разряд
} else {
digitalWrite(digitPins[i], HIGH); // Выключаем остальные разряды
}
}
// Отображение соответствующей цифры на сегментах
for (int segment = 0; segment < 7; segment++) {
if (digits[number % 10][segment]) {
digitalWrite(segmentPins[segment], HIGH); // Включаем сегмент
} else {
digitalWrite(segmentPins[segment], LOW); // Выключаем сегмент
}
}
// Сдвигаем число вправо для следующей цифры
number /= 10;
// Задержка для отображения цифры
delay(5); // Можно увеличить или уменьшить для настройки яркости
}
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
// Определение пинов для подключения к 7-ми сегментному индикатору
const int segmentPins[] = {12, 11, 10, 9, 8, 7, 6};
const int digitPins[] = {A3, A4, A5, A2};
// Определение символов для каждой цифры (a, b, c, d, e, f, g)
const byte digits[][7] = {
{1, 1, 1, 1, 1, 1, 0}, // 0
{0, 1, 1, 0, 0, 0, 0}, // 1
{1, 1, 0, 1, 1, 0, 1}, // 2
{1, 1, 1, 1, 0, 0, 1}, // 3
{0, 1, 1, 0, 0, 1, 1}, // 4
{1, 0, 1, 1, 0, 1, 1}, // 5
{1, 0, 1, 1, 1, 1, 1}, // 6
{1, 1, 1, 0, 0, 0, 0}, // 7
{1, 1, 1, 1, 1, 1, 1}, // 8
{1, 1, 1, 1, 0, 1, 1} // 9
};
void setup() {
// Настройка пинов сегментов и разрядов как выходов
for (int i = 0; i < 7; i++) {
pinMode(segmentPins[i], OUTPUT);
}
for (int i = 0; i < 4; i++) {
pinMode(digitPins[i], OUTPUT);
}
}
void loop() {
// Отображение числа "1234" на индикаторе
displayNumber(1234);
delay(1000);
}
void displayNumber(int number) {
for (int digit = 3; digit >= 0; digit--) {
// Включение нужного разряда
for (int i = 0; i < 4; i++) {
if (i == digit) {
digitalWrite(digitPins[i], LOW); // Включаем разряд
} else {
digitalWrite(digitPins[i], HIGH); // Выключаем остальные разряды
}
}
// Отображение соответствующей цифры на сегментах
for (int segment = 0; segment < 7; segment++) {
if (digits[number % 10][segment]) {
digitalWrite(segmentPins[segment], HIGH); // Включаем сегмент
} else {
digitalWrite(segmentPins[segment], LOW); // Выключаем сегмент
}
}
// Сдвигаем число вправо для следующей цифры
number /= 10;
// Задержка для отображения цифры
delay(5); // Можно увеличить или уменьшить для настройки яркости
}
}