===== Эксперимент 13. 7и сегментный LED индикатор =====
В современных электронных устройствах часто используются
светодиодные или жидко- кристаллические 7-сегментные индикаторы для отображения цифр.
В этом эксперименте мы изучим устройство такого индикатора.
Индикатор состоит из 7 сегментов, выстроенных по контуру
цифры 8. Каждый из сегментов можно зажигать независимо от
других. Зажигая определенные сегменты, можно получить любую
цифру от 0 до 9. Кроме того, индикатор имеет точку. Каждый
сегмент имеет свое название, они именуются латинскими буквами
от a до h.
{{ :products:esp-iot:7s.2.png?nolink |}}
В каждом сегменте установлен свой светодиод, и, когда на него
подается напряжение, он светится. Получается, что LED-индикатор
(«LED» — это сокращенное названия светодиода по-английски
«light emitting diode») — это сборка из 8-ми светодиодов в одном
корпусе (7 сегментов и точка).
Мы знаем, что у светодиода два вывода. Получается, что у 8-ми
светодиодов 16 выводов, но у индикатора их всего 10. Просто для
уменьшения количества выводов светодиоды внутри соединены
специальным способом. У всех светодиодов соединены между
собой катоды. Про такой индикатор говорят, что он «с общим
катодом».
{{ :products:esp-iot:7s.1.png?nolink |}}
==== Схема эксперимента ====
{{ :products:ardu:exp13_sch.png?nolink |}}
//Рисунок 1. Электрическая принципиальная схема эксперимента//
Токоограничительные резисторы обязательны!
В схеме мы использовали токоограничительные резисторы на каждом светодиоде. Казалось бы проще поставить один резистор на катод, чем по резистору на каждый анод, но нет, такой вариант не является правильным. Дело в том, что ток через резистор будет зависеть от количества включенных сегментов, что будет влиять на их яркость. Иными словами — при переключении цифр на дисплее их яркость будет меняться в зависимости от количества включенных сегментов. Выглядит это очень некрасиво.
{{ :products:ardu:exp13.png?direct&600 |}}
//Рисунок 2. Монтажная схема эксперимента//
==== Программный код эксперимента ====
int a = 8;
int b = 9;
int c = 11;
int d = 5;
int e = 4;
int f = 7;
int g = 6;
int h = 10;
void setup() {
int i;
for(i=4; i<=11; i++) pinMode(i,OUTPUT);
}
void loop() {
digitalWrite(a,HIGH);
digitalWrite(f,HIGH);
digitalWrite(g,HIGH);
digitalWrite(c,HIGH);
digitalWrite(d,HIGH);
}
Программа эксперимента довольно простая, назначаем переменным пины контроллера, устанавливаем их в режим вывода и подаем сигнал на нужные.
==== Дополнительное задание ====
* Измени код программы, чтобы получить другие цифры на дисплее.