Содержание:
Схема соединения зависит от типа индикатора: с общим катодом или анодом. Если используется общий катод, подключите его к земле, а аноды сегментов – к выходам микроконтроллера через резисторы 220 Ом. Для общего анода подключение выполняется наоборот: анод к питанию, а катоды – к выходам с ограничивающими резисторами.
Работа с индикатором на базе семи сегментов
Определите, какие пины будут отвечать за каждый сегмент. Например, сегмент A – пин 2, B – пин 3, и так далее. Убедитесь, что в коде эти значения соответствуют реальному подключению. Для удобства создайте массив, где каждый элемент соответствует конкретному сегменту.
Программирование отображения символов
Создайте массив или таблицу, где каждый символ (0-9, A-F) представлен в виде комбинации сегментов. Например, цифра «8» включает все сегменты, а «1» – только B и C. Используйте функцию digitalWrite() для активации нужных сегментов в зависимости от отображаемого символа.
Для динамической индикации (если используется несколько индикаторов) применяйте метод мультиплексирования. Поочередно включайте каждый индикатор, задерживаясь на несколько миллисекунд, чтобы создать эффект постоянного свечения.
Как правильно подключить семисегментный дисплей к Arduino
Схема соединения
Подключите сегменты A-G к пинам 2-8 на плате. Если используется четырехразрядный индикатор, добавьте управление разрядами через транзисторы, например, 2N2222, подключенные к пинам 9-12. Это позволит динамически отображать цифры на каждом разряде.
Программная настройка
void setup() {
for (int i = 2; i <= 8; i++) {
pinMode(i, OUTPUT);
}
}
void loop() {
int segments[] = {1, 0, 1, 1, 0, 1, 1}; // A-G для цифры "5"
for (int i = 0; i < 7; i++) {
digitalWrite(i + 2, segments[i]);
}
delay(1000);
}
Программирование микроконтроллера для работы с индикатором
void setup() {
pinMode(2, OUTPUT); // Сегмент A
pinMode(3, OUTPUT); // Сегмент B
pinMode(4, OUTPUT); // Сегмент C
pinMode(5, OUTPUT); // Сегмент D
pinMode(6, OUTPUT); // Сегмент E
pinMode(7, OUTPUT); // Сегмент F
pinMode(8, OUTPUT); // Сегмент G
}
void loop() {
// Отображение цифры "3"
digitalWrite(2, HIGH); // A
digitalWrite(3, HIGH); // B
digitalWrite(4, HIGH); // C
digitalWrite(5, HIGH); // D
digitalWrite(6, LOW); // E
digitalWrite(7, LOW); // F
digitalWrite(8, HIGH); // G
}
Для упрощения работы создайте массив, где каждый элемент соответствует комбинации сегментов для конкретной цифры. Например:
byte digits[10][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 displayDigit(int number) {
for (int i = 0; i < 7; i++) {
digitalWrite(i + 2, digits[number][i]);
}
}
Для динамической индикации нескольких разрядов добавьте задержку с помощью delay и поочередно активируйте каждый разряд. Убедитесь, что частота обновления превышает 50 Гц, чтобы избежать мерцания.