Урок 17: Одноразрядный 7-сегментный индикатор
1. Задача эксперимента
освоить 7-сегментный индикатор общего катода;
выводить цифры 0 … 9, включая нужные сегменты;
понять разницу между схемами «общий катод» и «общий анод».
2. Необходимое оборудование
Кол-во |
Деталь |
---|---|
1 |
Плата Arduino UNO |
1 |
7-сегментный индикатор (общий катод) |
8 |
Резистор 220 Ω |
1 |
Макетная плата (breadboard) |
— |
Перемычки «папа-папа» |
1 |
USB-кабель A-B |
3. Внешний вид и принцип работы
Сегменты a … g образуют цифру; «dp» — десятичная точка.
Общий катод (CC): общий вывод → GND, HIGH → сегмент светится.
Общий анод (CA): общий вывод → +5 V, LOW → сегмент светится.
В уроке используется общий катод: COM → GND, каждый сегмент через резистор к отдельному пину Arduino.
4. Схема подключения

Все номера выводов подписаны на рисунке; следуйте схеме при сборке. Каждый сегмент обязательно подключайте через резистор 220 Ω.
5. Пример кода
/* 7-segment, common cathode. © Alash Electronics */
const byte segPins[8] = {7, 6, 5, 10, 11, 8, 9, 4}; // a b c d e f g dp
const byte digits[10] = {
0b00111111, 0b00000110, 0b01011011, 0b01001111, 0b01100110,
0b01101101, 0b01111101, 0b00000111, 0b01111111, 0b01101111
};
void setup() {
for (byte i = 0; i < 8; i++) pinMode(segPins[i], OUTPUT);
}
void loop() {
for (byte n = 0; n < 10; n++) { // выводим 0-9
showDigit(n);
delay(1000);
}
}
void showDigit(byte n) {
byte pat = digits[n];
for (byte i = 0; i < 7; i++)
digitalWrite(segPins[i], pat & (1 << i) ? HIGH : LOW);
digitalWrite(segPins[7], LOW); // точка всегда погашена
}
6. Что может пойти не так
Симптом |
Причина |
Решение |
---|---|---|
Индикатор тёмный |
COM не на GND |
Проверьте общий катод |
Цифра неверная |
Провода a…g подключены иначе |
Исправьте массив |
Очень тускло |
Резисторы слишком большие |
Используйте 220 Ω и питание 5 V |
7. Эксперименты
Включите точку «dp», выводя «7.» «8.» …
Поставьте два индикатора и мультиплексируйте разряды.
Управляйте сегментами через 74HC595 (экономия пинов).