Проект 6: Семисегментний індикатор однорозрядних. виводимо цифри

В цьому експерименті ми розглянемо роботу з семісегментним світлодіодним індикатором, яка дозволяє Arduino візуалізувати цифри.

Необхідні компоненти:

Світлодіодний семисегментний індикатор являє собою групу світлодіодів, розташованих в певному порядку і об'єднаних конструктивно. Світлодіодні контакти промарковані мітками від 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 для підключення до розрядів ag
// семисегментний індикатор
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. Спостерігаємо вивід цифр на екран семисегментний індикатор.