В этом эксперименте мы рассмотрим работу с семисегментным светодиодным индикатором, которая позволяет Arduino визуализировать цифры.
Необходимые компоненты:
• контроллер Arduino UNO R3;
• плата для прототипирования;
• одноразрядный семисегментный индикатор;
• резистор 510 Ом – 7 штук;
• провода папа-папа.
Светодиодный семисегментный индикатор представляет собой группу светодиодов, расположенных в определенном порядке и объединенных конструктивно. Светодиодные контакты промаркированы метками от a до g (и дополнительно dp – для отображения десятичной точки), и один общий вывод, который определяет тип подключения индикатора (схема с общим анодом ОА, или общим катодом ОК). Зажигая одновременно несколько светодиодов, можно формировать на индикаторе символы цифр. Схема одноразрядного семисегментного индикатора показана на рис. 6.1.
Необходимые компоненты:
• контроллер Arduino UNO R3;
• плата для прототипирования;
• одноразрядный семисегментный индикатор;
• резистор 510 Ом – 7 штук;
• провода папа-папа.
Светодиодный семисегментный индикатор представляет собой группу светодиодов, расположенных в определенном порядке и объединенных конструктивно. Светодиодные контакты промаркированы метками от a до g (и дополнительно dp – для отображения десятичной точки), и один общий вывод, который определяет тип подключения индикатора (схема с общим анодом ОА, или общим катодом ОК). Зажигая одновременно несколько светодиодов, можно формировать на индикаторе символы цифр. Схема одноразрядного семисегментного индикатора показана на рис. 6.1.
Рис. 6.1. Схема одноразрядного семисегментного индикатора
Для подключения одноразрядного светодиодного индикатора к Arduino будем задействовать 7 цифровых выводов, каждый из контактов a–g индикатора подключается к выводу Arduino через ограничительный резистор 470 Ом. В нашем эксперименте мы используем семисегментный индикатор с общим катодом ОК, общий провод подсоединяем к земле. На рис. 6.2 показана схема подключения одноразрядного семисегментного индикатора к плате Arduino.
Рис. 6.2. Схема подключения семисегментного индикатора к Arduino
Приступим к написанию скетча. Мы будем на семисегментный индикатор в цикле выводить цифры от 0 до 9 с паузой 1 секунда. Сформируем массив значений для цифр 0–9, где старший разряд байта соответствует метке сегмента a индикатора, а младший – сегменту g.
byte numbers[10] = { B11111100, B01100000, B11011010, B11110010, B01100110,
B10110110, B10111110, B11100000, B11111110, B11110110};
Для преобразования значения цифры в данные для вывода значения на выводы Arduino будем использовать битовые операции языка Arduino:
bitRead(x,n); // получение значения n разряда байта x
Скетч эксперимента представлен в листинге 6.1.
// список выводов Arduino для подключения к разрядам a-g
// семисегментного индикатора
int pins[7]={2,3,4,5,6,7,8};
// значения для вывода цифр 0-9
byte numbers[10] = { B11111100, B01100000, B11011010, B11110010, B01100110,
B10110110, B10111110, B11100000, B11111110, B11100110};
// переменная для хранения значения текущей цифры
int number=0;
void setup()
{
// Сконфигурировать контакты как выходы
for(int i=0;i<7;i++)
pinMode(pins[i],OUTPUT);
}
void loop()
{
showNumber(number);
delay(1000);
number=(number+1)%10;
}
// функция вывода цифры на семисегментный индикатор
void showNumber(int num)
{
for(int i=0;i<7;i++)
{
if(bitRead(numbers[num],7-i)==HIGH) // зажечь сегмент
digitalWrite(pins[i],HIGH);
else // потушить сегмент
digitalWrite(pins[i],LOW);
}
}
Порядок подключения:
1. Подключаем семисегментный индикатор по схеме на рис. 6.2.
2. Загружаем в плату Arduino скетч из листинга 6.1.
3. Наблюдаем вывод цифр на экран семисегментного индикатора.
Листинги программ скачать