Подключение MAX7219 к Arduino
Нуждаетесь в выводе текста на полноценный экран ∕ табло ∕ собственно спроектированные часы? Хотите сэкономить средства, но не знаете как? Задаетесь вопросом, где отыскать аж 64 вывода для управления? Ответ один - приобретите светодиодную LED матрицу MAX7219 8х8!
Матричный модуль имеет следующие базовые технические характеристики:
- индивидуальное управление сегментами;
- режимы анализа данных "с декодированием" или "без декодирования";
- потребление тока 150 мкА (в "спящем" режиме);
- цифровая и аналоговая регулировка яркости;
- SPI, QSPI, MICROWIRE последовательные интерфейсы;
- напряжение питания: от 4 до 5 В;
- подача тока для всех светодиодов с помощью только одного резистора.
Подключение MAX7219 к Arduino
Рассмотрим принципиальную схему сборки:В ней мы использовали такие компоненты: плату расширения Arduino Uno, матрицу, соединительные провода, USB-кабель для соединения с ПК.
К слову, одновременно можно подключить до восьми матриц. Круто, не так ли?
Для управления микросхемой понадобятся специализированные библиотеки. Тут есть 2 варианта:
- первый - это Max72xxPanel (можно скачать тут: https://github.com/markruys/arduino-Max72xxPanel) и Adafruit_GFX (https://github.com/adafruit/Adafruit-GFX-Library);
- второй - LedControl (ищем в интегрированном менеджере библиотек в среде Arduino IDE).
#include <SPI.h>
#include <Adafruit_GFX.h>
#include <Max72xxPanel.h>
int pinCS = 9;
int numberOfHorizontalDisplays = 1; // количество матриц по-горизонтали
int numberOfVerticalDisplays = 1; // количество матриц по-вертикали
Max72xxPanel matrix = Max72xxPanel(pinCS, numberOfHorizontalDisplays, numberOfVerticalDisplays);
void setup() {
matrix.setIntensity(4); // яркость от 0 до 15
}
void loop() {
matrix.drawPixel(3, 4, HIGH); // зажигаем пиксель с координатами {3,4}
matrix.write(); // вывод всех пикселей на матрицу
delay(300);
matrix.drawPixel(3, 4, LOW); // гасим пиксель
matrix.write();
delay(300);
}
Можно пойти еще дальше. Существует небольшая программка - бегущая строка на MAX7219 (название говорит само за себя). Правда, для ее осуществления придется создать цепочку матриц, см. скриншот:Прошивка с кодами в этом случае будет выглядеть так:
#include <SPI.h>
#include <Adafruit_GFX.h>
#include <Max72xxPanel.h>
int pinCS = 9;
int numberOfHorizontalDisplays = 6; // теперь у нас по-горизонтали 6 матриц
int numberOfVerticalDisplays = 1; // а по-вертикали, по-прежнему, одна
Max72xxPanel matrix = Max72xxPanel(pinCS, numberOfHorizontalDisplays, numberOfVerticalDisplays);
String tape = "RobotClass.ru"; // текст, который будет плыть
int wait = 20; // время между крайними перемещениями букв
int spacer = 1; // расстояние между буквами
int width = 5 + spacer; // размер шрифта
void setup() {
matrix.setIntensity(7); // яркость
}
void loop() {
for ( int i = 0 ; i < width * tape.length() + matrix.width() - 1 - spacer; i++ ) {
matrix.fillScreen(LOW);
int letter = i / width;
int x = (matrix.width() - 1) - i % width;
int y = (matrix.height() - 8) / 2; // center the text vertically
while ( x + width - spacer >= 0 && letter >= 0 ) {
if ( letter < tape.length() ) {
matrix.drawChar(x, y, tape[letter], HIGH, LOW, 1);
}
letter--;
x -= width;
}
matrix.write();
delay(wait);
}
}
Если нужен русский шрифт, придется немного постараться. Следует русифицировать библиотеку AdafruitGFX. Для этого следует извлечь из архива русский фонт (glcdfont.c ) и «закинуть» его в папку библиотеки AdafruitGFX-master. Остальные файлы необходимо перекодировать в кодировку фонта 1251 (функция utf8rus). Светодиоды и светодиодные индикаторы - вполне достойные устройства отображения информации с неплохими преимуществами. Не превышайте максимально допустимые температурные показатели кристалла, max протекающий ток и обратное напряжение, используйте специализированные светодиодные драйверы типа MAX7219 - тогда все у вас получится!
Сегодня поговорим о том, как воплотить в жизнь подключение FPM10A к Arduino, что это за модуль, где используется, каковы параметры его работы и т.д. Речь идет...
В новом информационном обзоре рассматриваем GSM модуль SIM800L к Arduino. Почему выбрано именно это устройство? Во-первых, оно достаточно известно и популярно...
В этой статье мы рассмотрим подключение ADS1115 к Ардуино. Речь идет о 16-битном аналого-цифровом преобразователе, оснащенном 4 входами непосредственно для...
На повестке дня - подключение AM2320 к Ардуино. Тема очень занятная по той простой причине, что подобные датчики являются просто «мастхевом» для современных...
Модуль энкодер KY-040 является электромеханическим устройством, а точнее - датчиком угла поворота и вращения оси различных девайсов. Непосредственно сам прибор...