Эксперимент 25. 7и сегментный LED индикатор

В современных электронных устройствах часто используются светодиодные или жидко- кристаллические 7-сегментные индикаторы для отображения цифр. В этом эксперименте мы изучим устройство такого индикатора. Индикатор состоит из 7 сегментов, выстроенных по контуру цифры 8. Каждый из сегментов можно зажигать независимо от других. Зажигая определенные сегменты, можно получить любую цифру от 0 до 9. Кроме того, индикатор имеет точку. Каждый сегмент имеет свое название, они именуются латинскими буквами от a до h.

В каждом сегменте установлен свой светодиод, и, когда на него подается напряжение, он светится. Получается, что LED-индикатор («LED» — это сокращенное названия светодиода по-английски «light emitting diode») — это сборка из 8-ми светодиодов в одном корпусе (7 сегментов и точка).

Мы знаем, что у светодиода два вывода. Получается, что у 8-ми светодиодов 16 выводов, но у индикатора их всего 10. Просто для уменьшения количества выводов светодиоды внутри соединены специальным способом. У всех светодиодов соединены между собой катоды. Про такой индикатор говорят, что он «с общим катодом».

Схема эксперимента

Рисунок 1. Электрическая принципиальная схема эксперимента

Токоограничительные резисторы обязательны!

В схеме мы использовали токоограничительные резисторы на каждом светодиоде. Казалось бы проще поставить один резистор на катод, чем по резистору на каждый анод, но нет, такой вариант не является правильным. Дело в том, что ток через резистор будет зависеть от количества включенных сегментов, что будет влиять на их яркость. Иными словами — при переключении цифр на дисплее их яркость будет меняться в зависимости от количества включенных сегментов. Выглядит это очень некрасиво.

Рисунок 2. Монтажная схема эксперимента

Программный код эксперимента

Exp25.ino
  1. #define LED_PIN_A 14
  2. #define LED_PIN_B 13
  3. #define LED_PIN_C 4
  4. #define LED_PIN_D 5
  5. #define LED_PIN_E 12
  6. #define LED_PIN_F 16
  7. #define LED_PIN_G 15
  8.  
  9. void setup() {
  10. pinMode(LED_PIN_A, OUTPUT);
  11. pinMode(LED_PIN_B, OUTPUT);
  12. pinMode(LED_PIN_C, OUTPUT);
  13. pinMode(LED_PIN_D, OUTPUT);
  14. pinMode(LED_PIN_E, OUTPUT);
  15. pinMode(LED_PIN_F, OUTPUT);
  16. pinMode(LED_PIN_G, OUTPUT);
  17.  
  18. digitalWrite(LED_PIN_A, HIGH);
  19. digitalWrite(LED_PIN_B, LOW);
  20. digitalWrite(LED_PIN_C, HIGH);
  21. digitalWrite(LED_PIN_D, HIGH);
  22. digitalWrite(LED_PIN_E, LOW);
  23. digitalWrite(LED_PIN_F, HIGH);
  24. digitalWrite(LED_PIN_G, HIGH);
  25. }
  26.  
  27. void loop() {
  28. }

Дополнительное задание

  • Измени код программы, чтобы получить другие цифры на дисплее.