Семисегментный индикатор, четыре разряда

Подключение и программирование семисегментного индикатора.

На самом деле,  это восьмисегментный индикатор (имеется восемь сегментов, включая “точку”) ,
но в данной инструкции используются только семь основных сегментов индикатора.

 
Рассмотрим вывод данных на семисегментый индикатор Arduino.
 

 

7 segment 4 digit led display

7 segment 4 digit led display

7 Segment 4 Digit LED DISPLAY Common cathode, Red.

 

 

Индикатор имеет четыре разряда (может отображать 4 цифры или символа) .
Семь сегментов (из которых состоит изображение) и точка в каждом разряде.
Каждый сегмент представляет из себя светодиод. Цвет индикации – красный.
Имеется 12 пинов для подключения. Этот индикатор с общим катодом (общая “земля” у каждого разряда).

 

Схема сборки, семисегментный индикатор, четыре разряда

Схема сборки, семисегментный индикатор, четыре разряда

 

 

Для сборки этой схемы необходимы:

  1. 7 Segment 4 Digit LED DISPLAY Common cathode, Red (12 pin)
  2. 8 резисторов 220 Ом.
  3. 4 резистора 2,2 кОм
  4. 4 транзистора NPN ( например, 2N4401 Transistor NPN TO-92)
  5. Плата Arduino ( Arduino UNO, Arduino MEGA 2560)
  6. Соединительные элементы (жесткие или гибкие провода с разъемами).
  7. Платы для создания прототипов и коммутации, чем больше плат использовать, тем проще размещать на них все элементы.
    ( например , такие, как Mini Prototype Breadboard и MB-102 Solderless Breadboard)

 

 

Схема подключения семисегментного индикатора с 4 разрядами (изображение кликабельно) :

Схема сборки, семисегментный индикатор, четыре разряда

Схема сборки, семисегментный индикатор, четыре разряда

 

Программирование семисегментного цифрового индикатора.

 

Если выполнить подключение семисегментного индикатора к плате Ардуино по этой схеме, управление свечением сегментов (светодиодами)
можно осуществлять на основе следующего программного кода.

Начнем с инициализации цифровых выходов Arduino, которые управляют разрядами и сегментами светодиодного индикатора.
Светодиодный индикатор имеет четыре разряда, поэтому пины 9, 10, 11, 12 микроконтроллера мы будем использовать для выбора разряда.
(цифровой индикатор использует первую, вторую, третью или четвертую цифру, необходимо указать разряд от 1 до 4)

void setup() {
 
  pinMode(12, OUTPUT);
  pinMode(11, OUTPUT);
  pinMode(10, OUTPUT);
  pinMode(9, OUTPUT);
  
  pinMode(2, OUTPUT);
  pinMode(3, OUTPUT);
  pinMode(4, OUTPUT);
  pinMode(5, OUTPUT);
  pinMode(6, OUTPUT);
  pinMode(7, OUTPUT);
  pinMode(8, OUTPUT);
}

Схема индикатора имеет 12 разъемов, из них 4 пина отвечают за разряды, а 8 пинов за сегменты.
Используем семь пинов для отрисовки цифр. Для этого инициализируем для выхода семь цифровых пинов со 2 по 8.

Чтобы вывести в первый разряд индикатора “0” достаточно использовать в главном цикле следующий код.

void loop() {
      
      digitalWrite(12, HIGH);

      digitalWrite(7, HIGH);
      digitalWrite(2, HIGH);
      digitalWrite(3, HIGH);
      digitalWrite(4, HIGH);
      digitalWrite(5, HIGH);
      digitalWrite(6, HIGH);
             
}

 

Теперь немного усложним код и добавим анимацию на семисегментый дисплей.
Будем отрисовывать каждый элемент цифры с задержкой, по кругу.
В результате мы получим простейшую анимацию.

// Анимация на семисегментном индикаторе     www.robotday.ru

void setup() {
 
  pinMode(12, OUTPUT);
  pinMode(11, OUTPUT);
  pinMode(10, OUTPUT);
  pinMode(9, OUTPUT);
  
  pinMode(2, OUTPUT);
  pinMode(3, OUTPUT);
  pinMode(4, OUTPUT);
  pinMode(5, OUTPUT);
  pinMode(6, OUTPUT);
  pinMode(7, OUTPUT);
  pinMode(8, OUTPUT);
}


void loop() {
  
      int d=100;   // задержка между отрисовкой каждого сегмента, в миллисекундах 
  
      digitalWrite(12, HIGH); // используем первый разряд
      
      // включаем сегменты
      digitalWrite(7, HIGH);
      delay(d);
      digitalWrite(2, HIGH);
      delay(d);
      digitalWrite(3, HIGH);
      delay(d);
      digitalWrite(4, HIGH);
      delay(d);
      digitalWrite(5, HIGH);
      delay(d);
      digitalWrite(6, HIGH);
      delay(d);
      
      // выключаем сегменты
      digitalWrite(7, LOW);
      delay(d);
      digitalWrite(2, LOW);
      delay(d);
      digitalWrite(3, LOW);
      delay(d);
      digitalWrite(4, LOW);
      delay(d);
      digitalWrite(5, LOW);
      delay(d);
      digitalWrite(6, LOW);
             
}

На основании этих простых примеров можно создать функции для вывода любых цифр и некоторых символов на семисегментный индикатор.
Можно выводить данные с датчиков и сенсоров, сделать секундомер или таймер на Ардуино, использовать визуализацию для работы с данными.

Существуют специальные библиотеки для работы с семисегментными индикаторами,
но их использование зависит от количества разъемов индикатора, поэтому использовать их нужно только с конкретными моделями.

Один из экспериментов с индикатором, который имитирует движение насекомого.