Данный урок предназначен для изучения способа подключения и принципов работы семисегментного индикатора.
ТЕОРИЯ
В общем случае семисегментный индикатор представляет собой корпус, в который интегрированы 8 светодиодов, расположенные таким образом, что формируют контур, позволяющий отобразить цифру от 0 до 9.


Рисунок 1.
Рисунок 2.
Главным отличием индикаторов друг от друга является использование общего анода или катода для активации дисплея (см. рис.1). В случае использования общего анода его необходимо подключать к шине +5В, организованной на макетной плате. Вторым вариантом является подключение общего анода к управляемому порту платы Ардуино с подачей на порт уровня HIGH.
В обратном случае, при использовании общего катода его необходимо подключать к шине GND, организованной на макетной плате или к управляемому порту платы Ардуино с подачей на порт уровня LOW.
В нашей учебной практике встречались дисплеи и с общим анодом и общим катодом. Но не изменным всегда оставалось распределение сегментов индикатора по контактам (см.рис.2).
ПЕРЕЧЕНЬ КОМПОНЕНТОВ СХЕМЫ
- ARDUINO UNO R3 (оригинальная плата).
- LCD дисплей 16х2 с модулем I2C.
- Семисегментный индикатор.
- Макетная плата.
- Набор соединительных проводов.
КОД ПРОГРАММЫ
#include <LiquidCrystal_I2C.h> // Подключаем библиотеку для работы с LCD дисплеем // Создаем объект с именем lcd и привязываем имя к LCD дисплею LiquidCrystal_I2C lcd(0x27,16,2); // Создание массива англоязычных названий цифр от 0 до 9 String Number[]={"zero","one","two","three","four","five","six","seven","eight","nine"}; void setup() { lcd.init(); // Инициализация дисплея lcd.backlight(); // Включение задней подсветки дисплея DDRD = B11111111; // Инициализация портов с 0 по 7 в режиме OUTPUT } // Подпрограмма формирования контуров цифр от 0 до 9 void segment (int s1) { switch (s1) { case 0: PORTD=B00111111; break; case 1: PORTD=B00000110; break; case 2: PORTD=B01011011; break; case 3: PORTD=B01001111; break; case 4: PORTD=B01100110; break; case 5: PORTD=B01101101; break; case 6: PORTD=B01111101; break; case 7: PORTD=B00000111; break; case 8: PORTD=B01111111; break; case 9: PORTD=B01101111; break;} } void loop() { for (int i=0; i<=9; i++){ segment (i); lcd.setCursor(0,0); lcd.print(" "); lcd.setCursor(0,0); lcd.print(Number[i]); delay(1000); } }
Особенно стоит обратить внимание на строку программы
String Number[]={«zero»,»one»,»two»,»three»,»four»,»five»,»six»,»seven»,»eight»,»nine»};
Эта строка задает массив, т.е. набор данных, каждый элемент которого имеет свой номер, начиная с нуля. В этом случае команда Number[i] позволяет выводить на дисплей то название, которое соответствует номеру позиции этого названия в массиве.