Проект 9: Матриця світлодіодна 8x8

В цьому експерименті ми розглянемо каскадне підключення декількох мікросхем 74HC595, що дозволить, використовуючи 3 вивода Arduino, управляти безліччю контактів, що буде продемонстровано в прикладі виведення фігур на екран світлодіодної матриці 8 × 8.

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

У світлодіодних матрицях світлодіоди розташовані в певному порядку, а виводи розташовані в зручному для монтажу порядку. Світлодіодні матриці бувають одноколірними, двоколірними і RGB. В експерименті будемо використовувати двобарвну світлодіодну матрицю FYM-23881BUG-11, яка представляє собою набір з 64 світлодіодів зеленого кольору, зібраних в матрицю 8 × 8. Розташування виводів матриці показано на рис. 9.1.


Для підключення світлодіодної матриці до Arduino будемо використовувати каскадне підключення 2 мікросхем 74HC595. При такому підключенні біти з першого регістра будуть прориватися в наступний в каскаді регістр. Потрібно під'єднати вивід QH першого регістра до піну DS (MOSI). Схема з'єднань показана на рис. 9.2.


Рис. 9.2. Схема підключення світлодіодної матриці

Для формування зображення матриці будемо використовувати динамічну індикацію для кожного стовпчика. Кожні 3 секунди будемо міняти фігуру для матриці. Дані фігур зберігаються в масиві figure []. Вміст скетчу показано в лістингу 9.1.

// підключення бібліотеки SPI
#include <SPI.h>
int ss_pin = 8; // пін SS
int pos = 0; //
int offfigure = 0; // поточна фігура для відображення
unsigned long millis1 = 0;
// масив з даними фігур для відображення
byte figure [2] [8] = {
{B10011001, B10011001, B10011001, B10000001, B10000001, B10011001, B10011001, B10011001},
{B10101010, B10101010, B10101010, B10101010, B10101010, B10101010, B10101010, B10101010}
};
void setup ()
{
SPI.begin ();
// Конфігурувати контакт SS як вихід
pinMode (ss_pin, OUTPUT);
}
void loop ()
{
digitalWrite (ss_pin, LOW);
// стовпці
SPI.transfer (B00000001 << pos);
// рядки
SPI.transfer (figure [offfigure] [pos]);
digitalWrite (ss_pin, HIGH); // вивести дані на виводи 74HC595
delay (1);
pos = (pos + 1)% 8;
if (millis () - millis1> 3000) // через 3 секунди - нова фігура
{
offfigure = (offfigure + 1)% 2;
millis1 = millis ();
}
}

Порядок підключення:

  1. Підключаємо матрицю за схемою на рис. 9.2.
  2. Завантажуємо в плату Arduino скетч з лістингу 9.1.
  3. Спостерігаємо процес поперемінного виведення фігур на екран матриці.