Подключение светодиодной матрицы к ардуино: Arduino: LED-матрица 8×8

Содержание

Светодиодная панель с Arduino [Амперка / Вики]

Светодиодные матрицы не содержат на борту микроконтроллеров, памяти и контроллеров ШИМ. По принципу своей работы панели рассчитаны на использования технологии «CPLD» или «FPGA». Arduino Mega 2560 удалось адаптировать для управления матрицей, но для полной раскачки панели вам необходимо найти более высокоскоростной контроллер.

Видеообзор

Что понадобится

Подключение и настройка

Шаг 1

Подключите 16-проводной шлейф к входному сигнальному разъёму матрицы DATA IN.

Шаг 2

С помощью проводов «папа-папа» подключите второй конец шлейфа к платформе Arduino Mega 2560.

Номера пинов изменять нельзя

Вывод шлейфа Вывод Arduino Mega
R1 24
G1 25
B1 26
GND GND
R2 27
G2 28
B2 29
GND GND
A A0
B A1
C A2
D A3
CLK 11
LAT 10
OE 9
GND GND

Шаг 3

Подключите питание на светодиодную матрицу через силовой шнур. Один конец провода к блоку питания, а второй — в разъём POWER на матрице. Каждая LED панель питается строго от 5 вольт. Потребление тока зависит от вида матрицы.

При подключении нескольких светодиодных панелей, соответственно увеличивайте запас по току в N-раз, где N — количество матриц в цепочке.

На схеме матрицы нет встроенного регулятора напряжения. При подаче напряжения более 5 вольт — вы убьёте LED панель.

Железо собрано. Теперь можно переходить к примерам работы.

Примеры работы

Для работы примеров скачайте и установите библиотеки RGBmatrixPanel,Adafruit_BusIO и Adafruit GFX через менеджер библиотек Arduino.

Тест матрицы

Для начала сделаем простой тест светодиодов «битых пикселей» на матрице.

fillColorTest.ino
// библиотека для работы с матрицей
#include <RGBmatrixPanel.h>
// установите и скачайте также библиотеку «Adafruit GFX Library»
// «RGBmatrixPanel» наследуется от «Adafruit GFX Library»
 
// управляющие пины матрицы
#define CLK   11
#define OE    9
#define LAT   10
#define A     A0
#define B     A1
#define C     A2
#define D     A3
 
// объявляем объект для работы с матрицей 64х32
// включаем двойную буферизацию
RGBmatrixPanel matrix(A, B, C, D, CLK, LAT, OE, true, 64);
 
int color;
 
void setup() {
  // инициируем работу с матрицей
  matrix.begin();
}
 
void loop() {
  // закрашиваем матрицу в красный цвет
  matrix.fillScreen(matrix.Color888(255, 0, 0));
  // выводим цвет из буфера на экран
  matrix.swapBuffers(false);
  delay(1000);
  // закрашиваем матрицу в зелёный цвет
  matrix.fillScreen(matrix.Color888(0, 255, 0));
  // выводим цвет из буфера на экран
  matrix.swapBuffers(false);
  delay(1000);
  // закрашиваем матрицу в синий цвет
  matrix.fillScreen(matrix.Color888(0, 0, 255));
  // выводим цвет из буфера на экран
  matrix.swapBuffers(false);
  delay(1000);
  // закрашиваем матрицу в белый цвет
  matrix.fillScreen(matrix.Color888(255, 255, 255));
  // выводим цвет из буфера на экран
  matrix.swapBuffers(false);
  delay(1000);
}

Вывод геометрических фигур

Методы библиотеки легко позволяют выводить геометрические фигуры.

geometricFigures.ino
// библиотека для работы с матрицей
#include <RGBmatrixPanel.h>
// установите и скачайте также библиотеку «Adafruit GFX Library»
// «RGBmatrixPanel» наследуется от «Adafruit GFX Library»
 
// управляющие пины матрицы
#define CLK   11
#define OE    9
#define LAT   10
#define A     A0
#define B     A1
#define C     A2
#define D     A3
 
// объявляем объект для работы с матрицей 64х32
// включаем двойную буферизацию
RGBmatrixPanel matrix(A, B, C, D, CLK, LAT, OE, true, 64);
 
// выводимая строка на матрицу
const char textStr[] = "Hello, World!";
// переменная с X-координатой текста
int textX = matrix.width();
 
// минимальное значение координаты текста
// количество символов в строке умноженное на ширину одного символа,
// после которой текст начнёт повторно выводиться
int textMin = sizeof(textStr) * -6;                  
 
void setup() {
  // инициируем работу с матрицей
  matrix.begin();
  int width = matrix.width();
  int height = matrix.height();
  // рисуем две диагонали
  matrix.drawLine(0, 0, width - 1, height - 1, matrix.Color333(7, 0, 0));
  matrix.drawLine(0, height - 1, width - 1, 0, matrix.Color333(7, 0, 0));
  // рисуем окружность в центре дисплея и радиусом 12
  matrix.drawCircle(width / 2, height / 2, 12 , matrix.Color333(7, 7, 0));
  // рисуем диск (закрашенную окружность) в центре дисплея и радиусом 8
  matrix.fillCircle(width / 2, height / 2, 8, matrix.Color333(0, 7, 7));
  // выводим текст из буфера на матрицу
  matrix.swapBuffers(false);
}
 
void loop() {
 
}

Анимация шариков

Заставим фигуры двигаться и отталкиваться от стен.

movingCircles.ino
// библиотека для работы с матрицей
#include <RGBmatrixPanel.h>
// установите и скачайте также библиотеку «Adafruit GFX Library»
// «RGBmatrixPanel» наследуется от «Adafruit GFX Library»
 
// управляющие пины матрицы
#define CLK   11
#define OE    9
#define LAT   10
#define A     A0
#define B     A1
#define C     A2
#define D     A3
 
// объявляем объект для работы с матрицей 64х32
// включаем двойную буферизацию
RGBmatrixPanel matrix(A, B, C, D, CLK, LAT, OE, true, 64);
 
// массив с начальными координатами кругов и значениями смещения
// первые две координаты в каждой строке — координаты трёх кругов
// вторые две — координаты смещения кругов
int ball[3][4] = {                                                   
  {  6,  6,  1,  1 },                                                  
  { 17, 15,  1, -1 },                                                   
  { 27,  6, -1,  1 }                                                    
};
 
// цвет кругов
static const int ballColor[3] = {
  matrix.Color333(3, 0, 0),
  matrix.Color333(0, 3, 0),
  matrix.Color333(0, 0, 3)
};
 
// радиус кругов
static int const ballRadius = 3;
 
void setup() {
  // инициируем работу с матрицей
  matrix.begin();
}
 
void loop() {
  // очищаем экран
  matrix.fillScreen(0);
  // запускаем счётчик для смены координат кругов
  for (int i = 0; i < 3; i++) {
    // рисуем три круга с одинаковыми радиусами
    // разными начальными координатами и цветами
    matrix.fillCircle(ball[i][0], ball[i][1], ballRadius, ballColor[i]);
    // обновляем Х-координату кругов
    ball[i][0] += ball[i][2];
    // Обновляем Y-координату кругов
    ball[i][1] += ball[i][3];
    // если круг по Х дошёл до границы экрана
    if ((ball[i][0] == ballRadius) || (ball[i][0] == (matrix.width() - ballRadius))) {    
      // инициируем движение в обратную сторону
      ball[i][2] *= -1;
    }
    // если круг по Y дошёл до границы экрана
    if ((ball[i][1] == ballRadius) || (ball[i][1] == (matrix.height() - ballRadius))) {
      // инициируем движение в обратную сторону
      ball[i][3] *= -1;
    }
  }
  // выводим объекты из буфера на экран
  matrix.swapBuffers(false);
}

Вывод текста

Матрицы идеально подходят для объявлений и рекламных вывесок. Выведем цветной и яркий текст.

printString.ino
// библиотека для работы с матрицей
#include <RGBmatrixPanel.h>
// установите и скачайте также библиотеку «Adafruit GFX Library»
// «RGBmatrixPanel» наследуется от «Adafruit GFX Library»
 
// управляющие пины матрицы
#define CLK   11
#define OE    9
#define LAT   10
#define A     A0
#define B     A1
#define C     A2
#define D     A3
 
// объявляем объект для работы с матрицей 64х32
// включаем двойную буферизацию
RGBmatrixPanel matrix(A, B, C, D, CLK, LAT, OE, true, 64);
 
// выводимая строка на матрицу
const char textStr[] = "Hello, World!";
// переменная с X-координатой текста
int textX = matrix.width();
 
// минимальное значение координаты текста
// количество символов в строке умноженное на ширину одного символа,
// после которой текст начнёт повторно выводиться
int textMin = sizeof(textStr) * -6;                  
 
void setup() {
  randomSeed(analogRead(A5));
  // инициируем работу с матрицей
  matrix.begin();
  // отключаем перенос текста на следующую строку
  matrix.setTextWrap(false);
  // устанавливаем размер текста
  matrix.setTextSize(1);
  // очищаем экран
  matrix.fillScreen(0);
  // выставляем курсор
  matrix.setCursor(10, 0);
  // печатаем первую строку
  matrix.println("Amperka");
  // выставляем курсор
  matrix.setCursor(0, 15);
  // выводимая вторая строка
  char strText[] = "LED MATRIX!";
  // перебираем по очереди каждый символ
  for (int i = 0; i < strlen(strText); i++) {
    // генерируем случайное число от 0 до 1536
    int hue = random(0, 1536);
    // устанавливаем случайный цвет по шкале «HSV»
    matrix.setTextColor(matrix.ColorHSV(hue, 255, 255, false));
    // печатаем символ текущего цикла
    matrix.print(strText[i]);
  }
  // выводим текст из буфера на матрицу
  matrix.swapBuffers(false);
}
 
void loop() {
}

Бегущая строка

Добавим тексту движения — сделаем бегущую строку.

runningString.ino
// библиотека для работы с матрицей
#include <RGBmatrixPanel.h>
// установите и скачайте также библиотеку «Adafruit GFX Library»
// «RGBmatrixPanel» наследуется от «Adafruit GFX Library»
 
// управляющие пины матрицы
#define CLK   11
#define OE    9
#define LAT   10
#define A     A0
#define B     A1
#define C     A2
#define D     A3
 
// объявляем объект для работы с матрицей 64х32
// включаем двойную буферизацию
RGBmatrixPanel matrix(A, B, C, D, CLK, LAT, OE, true, 64);
 
// выводимая строка на матрицу
const char textStr[] = "Hello, World!";
// переменная с X-координатой текста
int textX = matrix.width();
 
// минимальное значение координаты текста
// количество символов в строке умноженное на ширину одного символа,
// после которой текст начнёт повторно выводиться
int textMin = sizeof(textStr) * -6;                  
 
void setup() {
  // инициируем работу с матрицей
  matrix.begin();
  // отключаем перенос текста на следующую строку
  matrix.setTextWrap(false);
  // устанавливаем размер текста
  matrix.setTextSize(1);
}
 
void loop() {
  // очищаем экран
  matrix.fillScreen(0);
  // устанавливаем цвет текста
  matrix.setTextColor(matrix.Color888(255, 0, 255));
  // указываем начальную координату вывода текста {textX; 12}
  matrix.setCursor(textX, 12);
  // выводим текст
  matrix.print(textStr);
  // сдвигаем текст на один пиксель при каждом выполнении цикла
  textX--;
  // если был отображён весь текст
  if (textX < textMin) {
    // начинаем выводить текст заново
    textX = matrix.width();
  }
  // выводим текст из буфера на матрицу
  matrix.swapBuffers(false);
}

Ресурсы

LED матрица 16×16 адресных светодиодов ws2812b. Обзор, установка библиотеки, подключение к Ардуино. | Электроника и жизнь

Всем привет! Сегодня хочу сделать обзор LED матрицы размером 16 на 16 адресных светодиодов. Мы рассмотрим ее особенности, скачаем необходимую для работы с ней библиотеку, подключим к Ардуино и напишем небольшой пример работы с матрицей.

Светодиодная матрица 16×16 с адресными светодиодами ws2812

Светодиодная матрица 16×16 с адресными светодиодами ws2812

У этой матрицы 256 адресных светодиодов ws2812 и управлять цветом каждого светодиода можно по отдельности или всеми вместе. С обратной стороны матрицы три группы проводов. Ту группу, где написано 5V GND и DIN мы и будем подключать к Ардуино и источнику питания. Средние 2 провода, служат для подключения дополнительного источника питания, а крайние 3 провода, для подключения к еще одной LED-матрице. Например, можно подключить еще одну такую матрицу 16х16 светодиодов и получить LED-панель 16х32, т.е. получить панель из 512 светодиодов, управляемых как единое целое. Ко второй матрице можно подключить третью и так далее.

Светодиодная матрица 16×16 с обратной стороны

Светодиодная матрица 16×16 с обратной стороны

Собирать схему будем на макетной плате. Красный провод LED матрицы соединяем с плюсом, белый с минусом, зеленый через резистор 220 ом соединяем с цифровым портом номер 5 Arduino UNO.

Так как потребляемый ток у матрицы достаточно большой, то питать ее нужно от отдельного источника питания. В данном случае буду использовать вот такой регулируемый блок питания, у которого установлено напряжение на выход 5 В и ограничение по току в 3А. Для наших целей этого хватит.

Регулируемый блок питания

Регулируемый блок питания

Подключаем к схеме блок питания. Ардуино, мы будем питать от него же. Так что соединяем пины Vin и GND c плюсом и минусом соответственно. В схему можно добавить конденсатор для стабилизации напряжения, но так как мы питаем ее от блока питания со стабильным напряжением, в нем нет смысла.

Общая схема подключения светодиодной матрицы, потенциометра и Ардуино

Общая схема подключения светодиодной матрицы, потенциометра и Ардуино

По ссылке https://github.com/FastLED/FastLED скачиваем с GitHub библиотеку Fast LED.

Далее запускаем программу ARDUINO IDE и в верхнем меню выбираем пункт Скетч -> Подключить библиотеку -> Добавить ZIP библиотеку.

Добавление библиотеки Fast LED

Добавление библиотеки Fast LED

Теперь нажимаем Файл -> Примеры -> FastLED -> выбираем скетч Blink.

Выбор скетча Blink

Выбор скетча Blink

Меняем некоторые значения: NUM_LEDS – число светодиодов у нас 256, и сигнальный провод мы подключили к 5 порту Ардуино. Далее всё оставляем по-умолчанию.

Часть скетча Blink

Часть скетча Blink

Временно отсоединяем плюсовой провод от Ардуино, чтобы не пытаться запитать всю схему от USB. Подсоединяем Ардуино к компьютеру и загружаем скетч. После загрузки скетча, подаем питание на схему от внешнего источника. Начинает мигать красный светодиод.

Пример работы скетча Blink

Пример работы скетча Blink

Теперь добавим на схему потенциометр, подключим к аналоговому порту А0 и модернизируем наш скетч. Установим верхнюю границу значений переменной, изменяемой с помощью потенциометра, равной 255. Светодиоду из текущей позиции присваиваем черный цвет, выключая его, а новому светодиоду назначаем красный цвет. Присваиваем новою позицию текущ, ей и устанавливаем задержку 50 мс.

Часть скетча Blink, модернизированного на чтение данных с потенциометра

Часть скетча Blink, модернизированного на чтение данных с потенциометра

Загружаем скетч в Ардуино, включаем источник питания и, плавно вращая регулятор потенциометра, начинаем гонять светодиод по всему полю. Простой эффект, демонстрирующий возможности управления LED матрицей!

В следующей статье мы еще поиграемся с этой матрицей. А так же познакомимся с дополнительными инструментами для работы с ней.

Ниже размещено видео по материалам данной статьи.

_________________________________________________________

Спасибо, что дочитали до конца! Если статья понравилась, нажмите, пожалуйста, соответствующую кнопку. Если интересна тематика электроники и различных электронных самоделок, подписывайтесь на канал. До встречи в новых статьях!

Другие публикации по теме:

Светодиодная матрица MAX7219 – подключение к Arduino

Рано или поздно возникает необходимость вывода данных из Arduino и отображения их на относительно большом табло. Дисплеи больших размеров стоят очень много для хоббийных проектов, поэтому один из лучших вариантов – световое табло на светодиодах. Но у редкой Arduino найдётся 64 вывода для управления хотя бы знакоместом 8×8, не говоря про большие размеры.

Можно применить мультиплексирование и получить 16 используемых выводов и кучу мороки по организации динамической индикации. А можно взять проверенную и удобную микросхему-драйвер светодиодных матриц MAX7219, сократить число используемых пинов до 3 и получить возможность собирать большие бегущие строки текста!

Для реализации проекта из этой статьи нам потребуются следующие компоненты:

Микросхеме требуется всего 1 резистор, чтобы задать ток всех светодиодов схемы, но на модулях он уже установлен и не будет вашей головной болью!

Микросхема работает от напряжения 5 В с логическими уровнями 0 В-5 В. Максимальный ток на сегмент – 40 мА, общий ток – 330 мА.

Для работы с микросхемой написано большое количество библиотек, в том числе она поддерживается универсальной U8g2, попробуем поискать что-нибудь специфическое в Менеджере библиотек:

Мы будем использовать LedControl, ставим её:

И идём разбирать примеры, в нашем случае – LCDemoMatrix:

Выполните подключение, как описано в строках 5-10, и загрузите скетч в Arduino (не забудьте также подключить линии питания!). Далее по коду прослеживается отображение различных эффектов, но методы их отображения в различных библиотеках различны, поэтому мы возложим их подробное изучение на плечи пользователя.

Основная работа приходится на функции setRow и setColumn, также есть функция setLed, которая принимает параметры в виде координат и значения пикселя и выставляет его. Описания функций есть в файле LedControl.h по адресу

Документы/Arduino/LedControl/src.

Удачного изучения работы с матрицами!

Как подключить MAX7219 к Arduino

Разбираемся, как подключить к Arduino драйвер 8-и разрядного светодиодного индикатора с последовательным интерфейсом MAX7219 и как им управлять. Сделаем часы реального времени с помощью нескольких объединённых LED-матриц.

Для проекта нам понадобятся:

1

Описание драйвера MAX7219

Микросхема MAX7219 – это компактный драйвер дисплея, который позволяет управлять 7-сегментными индикаторами разрядностью до 8 цифр или 64 отдельными светодиодами. Сам драйвер управляется по последовательному интерфейсу (чаще всего SPI) с помощью микроконтроллера, например, Arduino. MAX7219 позволяет изменять состояние каждого сегмента или светодиода без обновления состояния всех остальных выводов. А также он позволяет создавать цепочку из аналогичных драйверов, чтобы управлять большим количеством подключённых светодиодов.

Микросхема MAX7219 выполнена в 24-выводном корпусе. Назначение и расположение выводов показаны ниже:

Конфигурация выводов и типичная схема подключения драйвера MAX7219

На рисунке справа представлена типичная схема подключения MAX7219. Как видно, драйвер управляется микроконтроллером по последовательному интерфейсу. К выходу сегментов и выходу разрядов подключён дисплей либо светодиодная матрица.

Назначение выводов драйвера MAX7219
Название выводаНазначение
DINВход последовательных данных для управления драйвером.
DOUTВыход последовательных данных для соединения в цепочку со следующим драйвером.
DIG 0…DIG 7Выходы управления разрядами 8-символьного сегментного дисплея.
SEG A…SEG G, DPВыходы управления отдельными сегментами и десятичной точкой.
CLKВход тактовой частоты последовательного интерфейса, до 10 МГц.
LOADВход загрузки данных. Данные «защёлкиваются» по фронту отрицательного импульса.
ISETРегулировка максимального потребляемого тока на один сегмент (следовательно, яркости).
V+Питание, 5±0.5 В.
GNDЗемля.

Драйвер MAX7219 позволяет регулировать яркость подключённых светодиодов. Причём можно сделать это аппаратно, подключив к ножке ISET микросхемы резистор, или программно, записав нужное значение в соответствующий регистр. Последний вариант мне кажется намного удобнее, т.к. позволяет управлять яркостью в процессе работы устройства.

Из существенных плюсов данного драйвера то, что не нужно постоянно обновлять состояние подключённых светодиодов: он сохраняет последнее заданное состояние, пока оно не будет произвольно изменено. Это также хорошо тем, что светодиоды не мерцают из-за постоянного обновления.

2

Принципы управления драйвером MAX7219

Драйвер MAX7219 управляется по последовательному интерфейсу SPI. Никаких неожиданностей здесь нет, всё стандартно, как мы уже не раз разбирали. Выбор ведомого (CS) низким уровнем, скорость обмена до 10 МГц.

Данные передаются посылками по 16 бит. В первых 8-ми битах содержится адрес регистра, в который необходимо передать данные (или команду). А вторые 8 бит, собственно, данные. Для каждого регистра будут свои данные, т.к. регистры отличаются по назначению.

Формат командной посылки драйвера MAX7219

Регистров всего 14, чуть позднее мы познакомимся с большинством из них подробнее. В таблице адреса регистров обозначены как, например, 0xX3. Что это значит? Сигнатура «0x» говорит о том, что дальнейшее число записано в шестнадцатеричном виде. Далее идёт «X», что означает, что первая половина байта не влияет и может быть любой. Я буду здесь всегда ставить ноль. И последнее число, собственно, адрес регистра. В рассматриваемом примере «0xX3» адрес регистра – «3», и будем записывать его как «0x03».

Карта регистров драйвера MAX7219

MSB означает most significant bit, т.е. наиболее значимый бит. Это старший бит в байте. Напротив, LSB означает least significant bit, т.е. наименее значимый бит. Это младший бит байта.

3

Подключение и работа с драйвером MAX7219

У меня в наличии есть готовый модуль с драйвером MAX7219 и светодиодной матрицей 1088AS (8 на 8 точек). У модуля есть 2 ряда выводов: VCC, GND, DIN, CS, CLK – это вход модуля, а с противоположной стороны VCC, GND, DOUT, CS, CLK – это выходы модуля.

Модуль с драйвером MAX7219ENG и LED матрицей 1088AS, вид сверху

Понятно, что VCC – это вход питания (5 В), а GND – земля. DIN – вход последовательных данных от микроконтроллера или от предыдущего в цепочке модуля; DOUT – это выход последовательных данных на следующий модуль. CS (он же LOAD) – загрузка данных в драйвер. CLK – вход тактовой частоты.

Модуль с драйвером MAX7219ENG и LED матрицей 1088AS, вид сбоку

Точнее, под рукой нашлись восемь таких модулей Поэтому предлагаю сразу усложнить задачу: соединить в цепочку несколько драйверов MAX7219. Можно для примера сделать часы в формате ЧЧ:ММ:СС, по одному модулю на цифру или символ «:». Соединение будет предельно простым, каскадным. Это значит, что управляющий сигнал мы подадим только на вход первого модуля в цепочке, а далее соединим по цепочке выходы со входами всех модулей друг за другом. Для надёжности закрепим всю конструкцию на жёсткой основе из обрезка пластикового кабель-канала.

Кстати, 8 полностью включённых панелей при максимальной яркости светодиодов потребляют более 1 А. Необходимо их запитывать от блока питания.

Цепочка из LED матриц и драйверов MAX7219ENG

Кроме того, раз делаем часы, то нужно откуда-то брать время. Значит, ещё нужен модуль с часами реального времени (RTC). Например, DS1302. Он будет хранить время. Мы с помощью Arduino будем считывать его и выводить на LED матрицы.

Модуль с часами реального времени DS1302

4

Изучение драйвера MAX7219с помощью FT2232H

Но прежде чем подключать модули с MAX7219 к Arduino, попробуем поизучать их с помощью отладочной платы с микросхемой FT2232H. Она позволяет обмениваться по SPI с устройствами и не требует программирования. Все настройки делаются в программе SPI via FTDI, и для быстрого знакомства с новым устройством это очень удобно.

Для начала переведём все драйверы MAX7219 в цепочке в режим теста. Для этого необходимо в каждое из устройств в нашей цепочке передать команду 0F 01. В драйвере MAX7219 имеется сдвиговый регистр, и нам нужно «протолкнуть» команду по всем регистрам в цепочке. Чтобы команда прошла по всей цепочке, необходимо повторить её выдачу 8 раз (по числу драйверов в цепочке).

Настройки программы для перевода в режим теста 8-ми драйверов MAX7219

Почему команда именно такая? Смторим в документацию и видим, что адрес регистра Display Test – 0x0F. А чтобы перейти в режим теста, нужно в регистр Display Test записать 1 (см. таблицу 10 из технического описания драйвера MAX7219). В режиме теста должны загореться все светодиоды, подключённые к драйверу. Выполним команду один раз: зажглась первая LED панель, после второго выполнения команды уже горят две LED панели. После восьмикратного выполнения команды все восемь светодиодных панелей зажглись.

Цепочка из драйверов MAX7219 в режиме теста

Чтобы выйти из режима теста, следует записать 8 раз команду 0F 00. Уже догадались, почему такая команда? Выход из тестового режима осуществляется записью нуля в регистр 0x0F.

Кстати, если в поле количества раз поставить 8, то можно записать команду за одно нажатие на кнопку «Записать».

После включения драйвер MAX7219 переходит в режим выключения, за который отвечает регистр Shutdown (0xXC). В этом режиме единственные команды, которые мы можем послать – это переход в режим теста и выход из него. Чтобы перевести устройство в рабочий режим, нужно в регистр 0x0C записать «1» (см. таблицу 3 технического описания):

Настройки программы для перевода MAX7219 в рабочий режим

Теперь устройство готово к приёму всех команд.

Драйвер MAX7219 может работать в режиме декодирования или без него. Причём можно включать и отключать режим декодирования для каждого из разрядов дисплея (или столбцов LED матрицы) индивидуально. Давайте отключим режим декодирования. Для этого нужно послать команду 09 00 восемь раз (см. таблицу 4 технического описания). В режиме без декодирования биты D0..D7 отвечают за сегменты индикатора. Или, как в нашем случае, за один ряд светодиодов LED панели.

Соответствие битов D0..D7 сегментам в режиме без декодирования

Режим с декодированием используется, когда драйвер MAX7219 подключён к 7-сегментному индикатору. Этот режим позволяет передавать драйверу число, и он сам зажигает нужные сегменты дисплея, чтобы отобразить это число на дисплее. Но так как в нашем случае к драйверу подключена LED панель, то режим с декодированием нам не подходит.

Давайте для примера зажгём в первой строчке всех панелей убывающее число светодиодов: на первой панели в первой строчке будет гореть 8 светодиодов, на второй – 7, и так далее. Для этого мы должны так же послать 8 команд, но теперь они будут разные. За запись в первую строчку отвечает регистр Digit 0 (0x01). Кроме того, мы имеем сдвиговый регистр, поэтому команда, которую мы пошлём первой, окажется в последнем регистре. То есть сначала мы управляем последним регистром, затем предпоследним, и так далее. Таким образом, вот последовательность команд:


    01 01 (00000001)
    01 03 (00000011)
    01 07 (00000111)
    01 0F (00001111)
    01 1F (00011111)
    01 3F (00111111)
    01 7F (01111111)
    01 FF (11111111)

Первое число – номер регистра (Digit 0), второе число – то, что мы записываем в регистр. В скобках указано двоичное представление того, что записываем в регистр. Единицы будут горящими светодиодами на LED панели, нули – потухшими.

Горит первая строка с убывающим числом светодиодов

Теперь давайте изменим яркость свечения LED панели. Для этого необходимо в регистр Intensity (0x0A) записать число от 0 до 15 (0x0F), где «0» соответствует минимальной яркости, а 0x0F – максимальной (см. таблицу 7 технического описания). Я поставлю что-то около нуля, например, 1. Для этого нужно 8 раз отправить команду 0A 01.

Максимальная и минимальная яркости: управление яркостью драйвером MAX7219

Теперь мы знаем, как управлять драйвером MAX7219 и уже почти готовы подключить его к Arduino. Осталось только освоить ещё одну деталь нашего проекта: часы реального времени DS1302. О том, как это сделать, подробно описано в этой статье.

5

Подключение драйвера MAX7219к Arduino

Продолжение следует…

Светодиодный матричный дисплей на MAX7219

Всем привет!
Сегодня в статье расскажу как сделать бегущую строку на матричном дисплее 8 х 8 пикселей.

В основе матрицы лежит микросхема MAX7219. Которая принимает последовательный сигнал трехпроводной последовательной шины Microwire, пакетами по 16 бит из которых 8 бит это данные и 4 бита это адрес столбца светодиодов. Всего 8 столбцов по 8 светодиодов в каждом.
Модули матриц допускают каскадирование для управления большим числом светодиодных матриц. Каждый из светодиодных столбцов дисплея имеет независимую адресацию и его содержимое может быть обновлено без необходимости перезаписи всего экрана. Микросхема драйвера MAX7219 имеет встроенный буфер и может переходить в спящий режим с запоминанием информации. А так же поддерживает управление яркостью всей матрицы. LED панель подключена к драйверу по схеме с общим катодом.

Для создания информационной панели или бегущей строки нам понадобятся:
Матрица max7219
Ардуино нано
Провода соединительные

Схема подключения матрицы к arduino:

Для подключения матричного дисплея max7219 к Arduino, понадобится всего пять соединительных проводов типа мама-мама. Из которых два подключаются к питанию +5В и GND, а остальные 3 провода подключаются к шине SPI микроконтроллера arduino. При правильном подключении как правило дисплей должен сразу заработать, при условии , что микроконтроллер запрограммирован ниже приведенным кодом.

Прошивка Ардуино:
Для прошивки бегущей строки Вам понадобится библиотека для arduino с примерами.
Устанавливаем библиотеку LedControl и выбираем пример скетча бегущей строки под названием LedMatrix8x8_4x.ino

Видео демонстрирующее работу бегущей строки на матричном дисплее с микросхемой MAX7219

Надеюсь Вам понравилась статья. Обсудить или задать вопросы можно на форуме

Светодиодная матрица из 4 матричных дисплеев на MAX7219 MAX7221 Arduino

Светодиодная матрица используется для отображения символов, специальных знаков и графических изображений в различных устройствах.
Матрица состоит из 4-х последовательно соединенных матричных индикаторов 1088BS, каждый из которых управляется драйвером MAX7219 или MAX7221 в зависимости от партии. Индикаторы, идущие в комплекте с матрицей, имеют общий катод, потому драйвера не будут работать с индикаторами с общим анодом, если Вы их установите. Каждый индикатор 1088BS имеет 16 штыревых выводов, 8 из которых отвечают за ряды, а другие 8 за столбцы.
Индикаторы 1088BS снимаются с модуля, что дает возможность заменить вышедший из строя индикатор. Используемый в модуле интерфейс дает возможность соединить несколько матриц в одну сборку. Матрица состоит из 4-х отдельных модулей, соединенных между собой припойными дорожками, что дает возможность при потребности отломать один или несколько и использовать как отдельное устройство.
Светодиодная матрица имеет контакты для подключения напряжения питания и интерфейс SPI для соединения с контроллерами;
контакты, обозначенные на плате VCC (напряжение питания) и GND (общий контакт), используются для подключения питания;
контакты, обозначенные на плате DIN (вход данных), CS (выбор кристалла), CLK (вход тактовых импульсов) – это интерфейс SPI.
Для использования матрицы с Arduino контроллерами нужно будет установить библиотеку LedControlMS. Далее нужно подключить матрицу к Arduino контроллеру. Для подключения к Arduino контроллеру в комплекте с матрицей идет Dupont кабель «мама – мама» длиной 20 см на 5 проводников и угловой переходник 2,54 мм.
Таблица подключения к Arduino контроллеру:

Библиотека LedControlMS поддерживает подключение до 8 матриц, что дает возможность сделать внушительных размеров дисплей, например для рекламной вывески или больших электронных часов.
Питание матрицы может осуществляться от Arduino контроллера или внешнего источника питания. Напряжение питания матрицы составляет 5 В постоянного тока.

Характеристики:

драйвер: MAX7219 или MAX7221 в зависимости от партии;
количество индикаторов 1088BS: 4;
тип индикаторов 1088BS: общий катод;
размер одного индикатора 1088BS3: 32 х 32 х 8 мм;
количество светодиодов на индикаторе 1088BS: 64;
диаметр одного светодиода: 3 мм;
цвет светодиодов: красный;
интерфейс подключения матрицы: SPI;
напряжение питания: 5 В;
размер матрицы: 130 х 32 х 14 мм;
вес комплекта: 50 г.

Комплект поставки:

  • светодиодная матрица из 4 матричных дисплеев на MAX7219 MAX7221 Arduino;
  • кабель Dupont «мама – мама» длиной 20 см;
  • угловой переходник 2,54 мм.

Статья.

Управление светодиодной матрицей с помощью MAX7219 » NGIN.pro

Управление светодиодной матрицей с помощью MAX7219
Светодиодные массивы — это очень весело, а управление ей проще, чем вы думаете. В этой статье, вы узнаете, построение и принцип работы светодиодной матрицы и как управлять ею с использованием микроконтроллера MAX7219.


Шаг 1: Элементы

8 х 8 Матрица
MAX7219 Драйвер
0.01 мкФ
10 мкФ
Макетная плата
28кОм резистор
перемычки

Шаг 2: Принцип работы светодиодной матрицы

Светодиодная матрица представляет собой набор светодиодов, они могут быть организованы во многих моделях. Здесь мы рассмотрим шаблон матрицы. Матрица определяет прямоугольную или квадратную форму, состоящую из пересекающихся строк и столбцов. Пересечение этих строк и столбцов, имеют важное значение.

Давайте начнем с того, на светодиоде есть отрицательный (катод) вывод, который подключен к земле, и положительный (анод), который подключен к источнику питания. Контакт питания подключается к микроконтроллеру. Аноды и катоды соединены так, что образуют столбцы и строки.

Если мы хотим контролировать каждый светодиод индивидуально, каждый светодиод в матрице должнен иметь контакт. Для матрицы 8×8 потребуется 64 контакты. Это много! К счастью, есть что-то называют мультиплексированием, которое уменьшает число выводов до 16 для того, чтобы контролировать светодиодную матрицу. Затем могут быть переданы на номер строки или столбца, например, строки 1-8 (R1 — R8) или колонки 1-8 (C1 — C8).

Мультиплексирование работает путем включения светодиодов в одной строке или столбце. Каждая строка включается и выключается последовательно, достаточно быстро для человеческого глаза, что заставляет нас видеть статическое изображение.

Шаг 3: Подключение
Если мультиплексированная матрица подключается к микроконтроллеру, каждый из 16 контактов на матрице должен быть подключен к 16 цифровых линий ввода / вывода. Для этого удобно использовать микросхему MAX7219. Она принимает все 16 пинов матрицы 8х8 и уменьшает число контактов, подключенных к контакту микроконтроллера 3, the data in, Load (CS) and CLK.

Определение контактов на матрице
Перед тем как матрица подключается к микросхеме, вам необходимо определить, какие контакты соответствуют столбцам и строкам. Мы можем это выяснить, посмотрев на таблицу данных для нашей светодиодной матрицы.

Подключение MAX7219 к матрице
После того, как контакты определены, они могут быть подключены к микросхеме. Глядя на даташит, мы видим, что есть Seg и Dig пины. Контакты Seg подключаются к анодам, контакты Dig подключаются к катодам. Чтобы было легче, на рисунке показана карта какие выводы матрицы подключить к контактам  микросхемы MAX7219.

Подключение MAX7219 к Edison

контакты контроллера 4 и 9 -> GND
контакт контроллера 19 -> +5V
контакт контроллера 12 / Load (CS) -> 10
контакт контроллера 13 / Clock -> 11
контакт контроллера 1 / Data In -> контакт 12

Шаг 4: Код

Перед загрузкой программы, нужно загрузить и поместить в библиотеки Arduino библиотеку LedControl.h
Для включения светодиода, необходимо отправить целое число 0 или 1 с помощью ПО. Рисунок можно представить в виде сетки из светодиодов или пикселей. Светодиодам, которые должны быть включены — присваивается 1, светодиоды, которые должны быть выключены — присваивается 0.
Помните, что мы работаем с матрицей колонки катода, так что мы будем посылать данные рядами. Если одна строка выступает как массив, вы можете включить R1, посылая бинарную логику:

R1: 10011001
Затем вы можете включить строки 2 — 8, отправив следующее:

R2: 01011010

R3: 00111100

R4: 11111111

R5: 11111111

R6: 00111100

R7: 01011010

R8: 10011001

Путем включения и выключения светодиодов в сетке, может быть сделано любое статическое изображение, в пределах ограничений разрешения матрицы. Что делать, если вы хотите создать анимацию? Это проще, чем вы можете подумать. Каждый кадр анимации просто нужно рассматривать как статическое изображение. Загрузите функцию с массивами, которая удерживает каждый кадр анимации. Для того, чтобы изменять частоту кадров, ставьте delay () после каждого кадра со значением в миллисекундах.

Загрузите прилагаемый пример кода и перейдите к следующему шагу, чтобы узнать, как загрузить это в Edison. Программа отображает статический знак восклицания (!), Звездочку (*) и сердце и анимированное взрывающееся сердце.
Скачать файл: matrixstaticanimation.zip [1,51 Kb] (cкачиваний: 274)

Шаг 5: Загрузка в Edison

Эдисон может быть запрограммирован с помощью Eclipse, и Arduino IDE. Языки, которые могут быть использованы, это C / C ++, Arduino и javascript.

Intel имеет обширную документацию на своем веб-сайте для Edison и Galileo. Ниже перечислены некоторые из основных шагов, которые необходимо учитывать при подготовке к загрузке программы на Edison со ссылками на соответствующие страницы.

Arduino

Проверьте, что ваш Edison прошит до последней прошивки и узнайте, как подключиться к нему через USB. Для того, чтобы загрузить Eclipse, вам также необходимо подключить его к сети Wi-Fi, с Arduino это не обязательно. Скачать Arduino IDE от Intel, когда вы откроете его, вы увидите платы Intel Edison и Galileo в меню Tools. Рекомендуется понимание Arduino перед тем как начать работу с версией Intel.

Рекомендуемая литература:

Начало работы с Arduino

Upload your first blink sketch to the Edison

Удачи!


8×8 светодиодная матрица с интерфейсом arduino

На рынке доступно несколько типов светодиодных дисплеев . Он также поставляется с наборами Arduino. Мы можем понять это по размеру и типу, например 5×7, 8×8, с общим анодом и общим катодом.

Но в этой статье я буду рассматривать 788bs как обычные анодные модули 8×8 красного цвета и матрицы . Мы используем его во многих элементах отображения электроники, например часы для электроники. также для перемещения дисплеев сообщений, отображения игр и т. д.

Мы используем матричный дисплей напрямую с платой Arduino UNO, иногда в проектах. Но для некоторых проектов мы используем микросхему max7219 или 74hc595 для драйвера точечной матрицы, как это требуется в наших проектах.

8×8 LED Matrix Распиновка деталей

Точечно-матричные модули в большинстве случаев поставляются с красными светодиодами. Его легко прикрепить к плате Arduino по сравнению с дисплеем со светодиодной подсветкой RGB.

Если мы посмотрим на кусок точечной матрицы 8×8, он содержит 16 контактов, из которых 8 контактов используются для строк и 8 для столбцов.Это означает, что в строках и столбцах всего 64 светодиода. Мы начинаем с контакта №1 до контакта №8. Контакт №1 — это R5 (строка-5), а контакт №8 — это R3 (строка-3) внизу.

На верхней стороне от контакта 9 (ряд 1) до 16 (столбец 1). Но новичок всегда путает и начинает с нуля, потому что мы знаем картинку / схему. часто мы получаем из какого-то источника, также нам нужно разобраться, какой из них + VE и -VE. может быть эксперт может понять из общего типа катод / анод.

Но меня беспокоит человек, имеющий элементарные познания в электронике.Кто пытается создать свои собственные начальные демонстрационные проекты, такие как часы или что-то еще.

Хорошо, давайте начнем, если у нас есть матрица 8×8. А как мы узнаем, где находится контакт 1? Как и в случае с микросхемами IC рядом с выводом 1, точка упоминается на микросхеме IC / Microcontroller Chip. Но вот откуда нам знать?

На модуле светодиодной матрицы производитель записывает метку или метку на стороне вывода 1, как показано на рисунке. Мы определенно находим это. А также кривая, указанная на стороне вывода №1.

Ряд = + Положительное питание

Столбец = — Отрицательное питание

Испытательный источник питания должен быть 1.Требуется 5 В постоянного тока. Таким образом, достаточно только одного элемента батареи или использовать одно сопротивление 130 Ом последовательно с положительной / отрицательной стороны.

После этого подключил провод к питанию. Мы обнаружили, что индикаторы 8-го столбца и 5-го ряда загораются, как показано на рисунке. Как подключить аккумуляторную батарею к матричному дисплею.

Проверка контактов светодиодной точечной матрицы

Как показано на рис., На контакты №1 и №16 подается питание, а светодиоды 8-го столбца и 5-й строки загораются. Мы должны проверить матрицу перед ее использованием, потому что, если какой-либо светодиод перегорел, мы можем заменить его на исправный.

Программирование с помощью Arduino UNO

Чтобы запустить 788bs, вам необходимо проверить его с помощью Arduino UNO. Какой материал понадобится для выполнения полного теста.

Arduino UNO Amazon

Макет Amazon / Banggood

788BS Матрица 8×8 Amazon / Banggood

Батарея (1,5 В) только одна

Перемычки

Мы часто используем точечно-матричный дисплей со сдвиговым регистром 74HC595 led driver или max7219 . наиболее распространен в электронных схемах, мы работаем с ним с помощью микроконтроллера или платформы Arduino, и даже с Raspberry Pi.Но в этой схеме вы можете протестировать матрицу напрямую с платой Arduino UNO.

Интерфейс точечной матрицы с Arduino

Сначала настройте схему матрицы, как показано на схеме. запустите Arduino IDE для программирования платы Arduino UNO. Arduino IDE доступна на официальном сайте Arduino. Для этой схемы сопротивление вообще не нужно. Просто подключите провода согласно инструкции.

Здесь вам нужно сделать два шага перед тем, как начать соединение матрицы с Arduino в соответствии с приведенным в таблице данных 788bs подключением контактов матрицы.

Генератор кода матрицы светодиодов 1-8×8

Это поможет сгенерировать код для вашей матрицы. Просто нарисуйте что-нибудь для матрицы, скопируйте код и используйте его в своей программе. Вы можете рисовать разные символы, фигуры или слова.

2- Добавление библиотеки матриц с помощью Arduino Ide

Во-первых, добавьте библиотеку светодиодных точечных матриц 8×8 в Arduino Ide. в дальнейшем код будет запускаться менеджером библиотеки в Arduino Ide. Он отобразится в матрице.

Соединение между светодиодной матрицей и Arduino UNO

Matrix Rows Pins # ———— Выходные контакты Arduino Uno

Pin # 1 ———- 2

2 ———- 3

3 ———- 4

4 ———- 5

5 ——— — 6

6 ———- 7

7 ———- 8

8 ———- 9

Столбец матрицы: Контакты # —————— Выход Arduino Uno Контакты #

Контакт # 1 ———— 10

2 —— ——- 11

3 ———— 12

4 ———— 13

5 ——- —— A1

6 ———— A2

7 ———— A3

8 ——— — A4

Урок Arduino — 8х8 светодиодная матрица «осою.com

Содержимое
  1. Введение
  2. Препараты
  3. О светодиодной матрице 8 × 8
  4. Примеры
Светодиодные дисплеи

часто упаковываются в виде матриц светодиодов, расположенных в ряды общих анодов и столбцы общих катодов или наоборот. Их можно использовать для отображения практически чего угодно. Большинство современных светодиодных вывесок используют различные типы матричных плат с контроллерами. В этом уроке мы собираемся соединить одноцветную светодиодную матрицу 8 × 8 с Arduino и отобразить несколько символов, чтобы ощутить ее очарование с самого начала.

Оборудование

  • Плата Osoyoo UNO (полностью совместима с Arduino UNO rev.3) x 1
  • Светодиодная матрица 8 × 8 x 1
  • Потенциометр 10 кОм x2
  • Джемперы M / M
  • Макетная плата x 2
  • Кабель USB x 1
  • шт. X 1

Программное обеспечение

  • Arduino IDE (версия 1.6.4+)

Благодаря низковольтному сканированию, светодиодный матричный светодиодный дисплей 8 × 8 имеет такие преимущества, как энергосбережение, длительный срок службы, низкая стоимость, высокая яркость, широкий угол обзора, большая дальность видимости, водонепроницаемость и т. Д.Они могут удовлетворить потребности различных приложений и, таким образом, имеют широкую перспективу развития.

Матрица

8 × 8 состоит из 64 точек или пикселей. Для каждого пикселя есть светодиод, и эти светодиоды подключены к 16 контактам.

Как правило, существует два типа точечной матрицы — общий катод и общий анод. Внешне они выглядят почти одинаково. Но обычно там есть ярлыки для облегчения распознавания. Матрица с этикеткой, оканчивающейся на AX , представляет собой обычную катодную матрицу, а матрица с BX — это обычная анодная матрица.Посмотрите на рисунок ниже, как они выглядят. Таким образом, контакты распределяются по двум концам матрицы. Пины на одном конце (обычно со стороны этикетки) — это 1-8 слева направо, а на противоположном — 9-16 справа налево.

Вы можете определить его схему контактов, используя следующий рисунок.

Ниже представлена ​​внутренняя структура. Вы можете видеть, что в точечной матрице с общим анодом ROW — это анод светодиода, а COL — катод, тогда как в случае с общим катодом ситуация противоположная.Хотя для обоих типов столбцы — это контакты 13, 3, 4, 10, 6, 11, 15 и 16, а строки — это контакты 9, 14, 8, 12, 1, 7, 2 и 5 в точке. матрица.

Если вы хотите включить все светодиоды при первом r. Чтобы загорелся первый светодиод в верхнем левом углу, вам необходимо установить вывод 9 как высокий уровень, а вывод 13 как низкий уровень в общей матрице точек анода; для общего катодного установите штифт 13 на высокий уровень, а на стержень 9 — на низкий. В общей матрице катодных точек установите вывод 13 как низкий уровень, а ROW 9, 14, 8, 12, 1, 7, 2 и 5 как высокий уровень.В обычном аноде установите штифт 13 как высокий уровень, а эти строки как низкий уровень. Для лучшего понимания см. Рисунок ниже.

Вот матрица соединений контактов, основанная на диаграмме выше:

Матричный штифт № Ряд Колонна Номер вывода Arduino
1 5 13
2 7 12
3 2 11
4 3 10
5 8 16 (аналоговый вывод 2)
6 5 17 (аналоговый вывод 3)
7 6 18 (аналоговый вывод 4)
8 3 19 (аналоговый вывод 5)
9 1 2
10 4 3
11 6 4
12 4 5
13 1 6
14 2 7
15 7 8
16 8 9

Вы можете увидеть размер, как показано ниже:

Примечание:

Неважно, к каким выводам микроконтроллера вы подключаете строки и столбцы, потому что вы можете назначать вещи в программном обеспечении.Подключил контакты таким образом, чтобы облегчить электромонтаж. У нас 64 комбинации поставок, и сделать это вручную практически невозможно. Вот почему Arduino взаимодействует с матрицей 8 × 8.

Загорается светодиод на матрице 8X8

Как и в подзаголовке выше, мы покажем, как зажечь светодиод на матрице.

Принципиальная схема

Чтобы зажечь первый светодиод в верхнем левом углу, вам необходимо установить вывод 9 как высокий уровень, а вывод 13 как низкий уровень в общей матрице точек анода; для общего катодного установите штифт 13 на высокий уровень, а на стержень 9 — на низкий.

Загрузить эскиз

После завершения вышеуказанных операций подключите плату Arduino к компьютеру с помощью кабеля USB. Зеленый светодиодный индикатор питания (с надписью PWR ) должен загореться.

Кодовая программа

Скопируйте приведенный ниже пример кода в программу Arduino.

 int pin3 = 3; // Подключаем вывод 9 матрицы к выводу 3 Uno
int pin11 = 11; // Подключаем вывод 13 матрицы к выводу 11 Uno
void setup () {
// поместите сюда свой установочный код, чтобы запустить его один раз:
pinMode (pin3, ВЫХОД);
pinMode (pin11, ВЫХОД);
digitalWrite (вывод 3, ВЫСОКИЙ);
digitalWrite (вывод 11, ВЫСОКИЙ);
}
void loop () {
 // поместите сюда свой основной код, чтобы запускать его повторно:
digitalWrite (pin11, LOW); // установить низкий уровень для pin11 , загорится светодиод
задержка (200);
digitalWrite (pin11, HIGH); // установить высокий уровень на выводе 11 , светодиод погаснет。
задержка (200);
}
 

Скомпилировать и загрузить

Откройте Arduino IDE и выберите соответствующий тип платы и тип порта для вашей платы Arduino.После компиляции этого скетча просто нажмите кнопку «Загрузить» в среде. Подождите несколько секунд — на плате должны мигать светодиоды RX и TX. Если загрузка прошла успешно, появится сообщение «Готово». появится в строке состояния.

Текущий результат

Через несколько секунд после завершения загрузки вы должны увидеть, что первый светодиод в верхнем левом углу будет мигать:

Мигает сердце на матрице 8X8

Поскольку проводка в этом эксперименте немного сложна, нам нужно проделать это шаг за шагом.

Принципиальная схема

Кодовая программа

Ниже мой код, вы можете скачать его здесь, обратите внимание, что я использовал код из руководств по Arduino, чтобы понять, как заставить все работать.

 // 2-мерный массив номеров выводов строк:
int R [] = {2,7, A5,5,13, ​​A4,12, A2};
// 2-мерный массив номеров выводов столбцов:
int C [] = {6,11,10,3, A3,4,8,9};
 
unsigned char biglove [8] [8] = // большое "сердце"
{
 0,0,0,0,0,0,0,0,
 0,1,1,0,0,1,1,0,
 1,1,1,1,1,1,1,1,
 1,1,1,1,1,1,1,1,
 1,1,1,1,1,1,1,1,
 0,1,1,1,1,1,1,0,
 0,0,1,1,1,1,0,0,
 0,0,0,1,1,0,0,0,
};
 
unsigned char smalllove [8] [8] = // маленькое "сердечко"
{
 0,0,0,0,0,0,0,0,
 0,0,0,0,0,0,0,0,
 0,0,1,0,0,1,0,0,
 0,1,1,1,1,1,1,0,
 0,1,1,1,1,1,1,0,
 0,0,1,1,1,1,0,0,
 0,0,0,1,1,0,0,0,
 0,0,0,0,0,0,0,0,
};
 
установка void ()
{
 // перебираем контакты:
 для (int i = 0; i8; i ++)
 // инициализируем выходные контакты:
 {
 pinMode (R [i], ВЫХОД);
 pinMode (C [i], ВЫХОД);
 }
}
 
пустой цикл ()
{
 for (int i = 0; i 100; i ++) // Цикл отображения 100 раз
 {
 Дисплей (biglove); // Отображаем "Большое сердце"
 }
 for (int i = 0; i 50; i ++) // Цикл отображения 50 раз
 {
 Дисплей (smalllove); // Отображаем "маленькое сердце"
 }
}
 
void Display (unsigned char dat [8] [8])
{
 для (int c = 0; c8; c ++)
 {
 digitalWrite (C [c], LOW); // используем столбец th
 //петля
 для (int r = 0; r8; r ++)
 {
 digitalWrite (R [r], dat [r] [c]);
 }
 задержка (1);
 Прозрачный(); // Убираем пустую подсветку дисплея
 }
}
 
void Clear () // 清空 显示
{
 для (int i = 0; i8; i ++)
 {
 digitalWrite (R [i], LOW);
 digitalWrite (C [i], HIGH);
 }
}
 

Текущий результат

Через несколько секунд после завершения загрузки вы должны увидеть мигание сердца на светодиодной матрице 8 × 8, как показано ниже:

Сканирование строк-столбцов для управления светодиодной матрицей 8 × 8

В этом примере управляется светодиодная матрица 8 × 8 с использованием двух аналоговых входов.Два потенциометра, подключенные к аналоговым контактам 0 и 1, управляют перемещением горящего светодиода в матрице.

Принципиальная схема

Кодовая программа

Скопируйте приведенный ниже пример кода в программу Arduino.

 const int row [8] = {
 2, 7, 19, 5, 13, 18, 12, 16
};

// 2-мерный массив номеров выводов столбцов:
const int col [8] = {
 6, 11, 10, 3, 17, 4, 8, 9
};

// 2-мерный массив пикселей:
целые пиксели [8] [8];

// позиция курсора:
int x = 5;
int y = 5;

void setup () {
 // инициализируем контакты ввода / вывода как выходы
 // перебираем контакты:
 for (int thisPin = 0; thisPin 8; thisPin ++) {
 // инициализируем выходные контакты:
 pinMode (col [thisPin], ВЫХОД);
 pinMode (строка [thisPin], ВЫХОД);
 // возьмем булавки col (т.е.е. катоды) высоко, чтобы гарантировать, что
 // светодиоды выключены:
 digitalWrite (col [thisPin], HIGH);
 }

 // инициализируем матрицу пикселей:
 for (int x = 0; x 8; x ++) {
 for (int y = 0; y 8; y ++) {
 пиксели [x] [y] = ВЫСОКИЙ;
 }
 }
}

void loop () {
 // читаем ввод:
 readSensors ();

 // рисуем экран:
 refreshScreen ();
}

void readSensors () {
 // выключаем последнюю позицию:
 пиксели [x] [y] = ВЫСОКИЙ;
 // считываем датчики для значений X и Y:
 x = 7 - карта (analogRead (A0), 0, 1023, 0, 7);
 y = map (analogRead (A1), 0, 1023, 0, 7);
 // устанавливаем низкое положение нового пикселя, чтобы светодиод загорелся
 // в следующем обновлении экрана:
 пиксели [x] [y] = НИЗКИЙ;

}

void refreshScreen () {
 // перебираем строки (аноды):
 for (int thisRow = 0; thisRow 8; thisRow ++) {
 // поднимаем штырь ряда (анод) высоко:
 digitalWrite (строка [thisRow], HIGH);
 // перебираем столбцы (катоды):
 for (int thisCol = 0; thisCol 8; thisCol ++) {
 // получить состояние текущего пикселя;
 int thisPixel = пикселей [thisRow] [thisCol];
 // когда строка HIGH, а столбец LOW,
 // загорится светодиод на месте их встречи:
 digitalWrite (col [thisCol], thisPixel);
 // выключаем пиксель:
 if (thisPixel == LOW) {
 digitalWrite (col [thisCol], ВЫСОКИЙ);
 }
 }
 // переводим вывод строки на низкий уровень, чтобы выключить всю строку:
 digitalWrite (строка [thisRow], LOW);
 }
}

 

Работа с монохромными точечно-матричными дисплеями

Electronic Fundamentals Part 1: Монохромные матричные дисплеи


Введение

В отличие от 7-сегментных дисплеев вы можете использовать точечно-матричные дисплеи для вывода буквенных, цифровых или пользовательских символов.Это краткое введение в основы использования монохромных светодиодных точечных дисплеев с микроконтроллерами.

Устройство и работа матричных светодиодных дисплеев

В точечно-матричном светодиодном дисплее светодиоды расположены на пересечении столбцов и строк матрицы. Светодиоды в одном ряду соединены вместе, как и светодиоды в одном столбце. На рисунке 1 показаны две распространенные конфигурации светодиодных матричных дисплеев.
Рисунок 1. Конфигурации точечной светодиодной матрицы — CCAR и ACCR

В матрице (рисунок 1) слева положительные выводы (аноды) светодиодов подключены к рядам, а отрицательные выводы (катоды) подключены к столбцам.Иногда это указывается в технических характеристиках производителя как «Катодный столбец, анодный ряд» (CCAR). В матрице справа соединения поменяны местами — анодный столбец, катодный ряд (ACCR).

Щелкните здесь, чтобы приобрести схему драйвера точечной матрицы

Требуемое время: 1-2 часа
Уровень опыта: Средний

Комплект схем драйвера матричной матрицы 5×7 включает:

(1) Arduino Uno R3 DIP Edition (Revision 3)
(10) 220 Ом 1/4 Вт 5% углеродный пленочный резистор
(10) 2N3904 NPN транзистор общего назначения
(10) 1 кОм 1/4 Вт 5% резистор Карбоновая пленка
(1) 830-гранная беспаечная плата 6.5 «x 2,125»
(1) ZipWire, 40 шт., 20 см, цветные перемычки, от мужчины к мужчине
(1) защелка аккумулятора 9 В с заглушкой 2,1 мм
(1) Щелочная батарея Energizer 9 В
(1) 5×7 светодиодный точечный матричный дисплей Красный- Оранжевый CC / AR ДИП-14

Необходимые инструменты и детали:

Компьютер со свободным портом USB и установленной Arduino IDE.

На корпусе светодиодного точечного дисплея недостаточно контактов для одновременного прямого доступа ко всем светодиодам в матрице. Например, типичный монохромный точечно-матричный дисплей 5×7 имеет 35 светодиодов, но поставляется в корпусе с 12 или 14 выводами.Как вы видите на рисунке 2, контакты расположены внутри так, что каждый из них управляет определенной строкой или столбцом.


Рисунок 2: Схема выводов точечной матрицы светодиодов.

Доступ к отдельным светодиодам

Вы включаете отдельный светодиод, устанавливая правильную полярность его выводов строки и столбца. Например, как показано на рисунке 3, в матрице CCAR слева переключатель в строке 1 замкнут (показан красным), что приводит к подаче положительного уровня напряжения на аноды всех светодиодов в этой строке.Переключатель в столбце 2 также замкнут, что связывает катоды всех светодиодов в этом столбце с землей. Светодиод на пересечении столбца 2 и строки 1 смещен в прямом направлении и включается. Изображение справа на рисунке 3 показывает эквивалентное действие (с противоположной полярностью) для матрицы ACCR.
Рис. 3. Адресация отдельных светодиодов на матричных дисплеях CCAR и ACCR.

Мультиплексирование

Из-за ограниченного количества контактов вы можете отображать только одну строку или один столбец светодиодов за раз.Чтобы отобразить всю матрицу, вам необходимо мультиплексировать столбцы или строки. То есть отображайте каждый столбец или строку по одному и делайте это так быстро, чтобы все столбцы или строки казались видимыми одновременно.
Рисунок 4: Мультиплексирование столбцов

Интерфейс микроконтроллеров и точечных светодиодных дисплеев
На принципиальной схеме на рисунке 5 показан светодиодный матричный дисплей 5×7, подключенный к Arduino Uno SBC.


Рисунок 5: Схема драйвера светодиодного матричного дисплея Arduino Uno 5×7

Матричный дисплей, используемый в примере схемы, является дисплеем CCAR.Он поставляется в 14-выводном корпусе (рис. 6). Булавки выравниваются в два ряда. Один вверху, а другой внизу упаковки. Штифт 1 — это первый штифт слева в нижнем ряду.


Рисунок 6: Схема корпуса светодиодного матричного дисплея.

Для управления дисплеем требуется двенадцать контактов цифрового ввода-вывода Arduino — 7 контактов для строк и 5 для столбцов. Контакты 2-6 управляют транзисторами с T1 по T5, которые подключены к контактам столбцов матричного дисплея. Транзисторы необходимы, потому что ток через контакты ввода / вывода Arduino ограничен до 20 мА.Включение только двух или более светодиодов в столбце может превысить этот предел.

Контакты 7–13 подключены к выводам строки матричного дисплея. Резисторы R6 — R12 ограничивают ток через каждый вывод ряда до менее 20 мА.

Пример кода в листинге 1 представляет собой простой драйвер светодиодного точечного матричного дисплея, который использует мультиплексирование столбцов для отображения шаблона. Отображаемый шаблон хранится в массиве mBuf. Каждый элемент в mBuf содержит значение, которое указывает, должен ли соответствующий светодиод на матричном дисплее быть включен (1) или выключен (0).Приложение просто обновляет дисплей текущим содержимым mBuf. Конечно, вы можете изменить значения в mBuf для отображения различных символов или шаблонов.

Массивы rowPins и colPins содержат списки контактов ввода-вывода Arduino, подключенных к строкам и столбцам матричного дисплея соответственно. Номера контактов появляются в массиве в том порядке, в котором контакты подключены к матричному дисплею (например, rowPins [0] подключены к строке 1, colPins [0] подключены к столбцу 1).

Листинг 1

 // mBuf - двумерный массив (7 строк, 5 столбцов)
            byte mBuf [7] [5] = {
                               {0, 0, 0, 0, 0}, // 0
                               {0, 1, 0, 1, 0}, // 1
                               {0, 0, 0, 0, 0}, // 2
                               {0, 0, 1, 0, 0}, // 3
                               {1, 0, 0, 0, 1}, // 4
                               {0, 1, 1, 1, 0}, // 5
                               {0, 0, 0, 0, 0} // 6
                             };

int rowPins [7] = {7, 8, 9, 10, 11, 12, 13}; // массив, содержащий назначения выводов строк
int colPins [5] = {2, 3, 4, 5, 6}; // массив, содержащий назначения выводов столбцов

void setRowPins (int c) // Устанавливаем выводы строк в значения столбца mbuff
  {
    int r;
    для (r = 0; r
 

На каждой итерации основного цикла функция refreshMatrix обновляет точечно-матричный светодиодный дисплей содержимым Mbuf, по одному столбцу за раз.Функция refreshMatrix вызывает функцию setRowPins для установки выводов строк ввода-вывода Arduino в соответствии со значениями, найденными в строках текущего столбца. После установки выводов строки, refreshMatrix устанавливает соответствующий вывод столбца ввода-вывода Arduino для включения транзистора для текущего столбца отображения матрицы. Включатся светодиоды с прямым смещением. После небольшой задержки refreshMatrix выключает транзистор и переходит к следующему столбцу. Этот цикл повторяется так быстро, что из-за постоянного зрения кажется, что светодиоды горят одновременно.


Рисунок 7: Схема драйвера точечной матрицы 5x7.

Вопросы для обсуждения:

1. Как бы вы поступили с матрицей, если бы полярность была обратной? (анодный столбец / катодный ряд)
2. Как работают точечно-матричные дисплеи?
3. Если бы не мультиплексирование, сколько контактов потребовалось бы этой матрице 5x7?
4. Какие из всех возможных форм цифр образуют наименее запутанные шрифты?

гравитация__гибкий_16x16_rgb_led_matrix_sku__dfr0463-DFRobot

  • ДОМ
  • СООБЩЕСТВО
  • ФОРУМ
  • БЛОГ
  • ОБРАЗОВАНИЕ
ДОМОЙ ФОРУМ БЛОГ
  • Контроллер
    • DFR0010 Arduino Nano 328
    • DFR0136 Сервоконтроллер Flyduino-A 12
    • DFR0225 Romeo V2-Все в одном контроллере R3
    • Arduino_Common_Controller_Selection_Guide
  • DFR0182 Беспроводной геймпад V2.0
  • DFR0100 Комплект для начинающих DFRduino для Arduino V3
  • DFR0267 Блуно
  • DFR0282 Жук
  • DFR0283 Мечтатель клен V1.0
  • DFR0296 Блуно Нано
  • DFR0302 MiniQ 2WD Plus
  • DFR0304 Беспроводной геймпад BLE V2
  • DFR0305 RoMeo BLE
  • DFR0351 Romeo BLE mini V2.0
  • DFR0306 Блуно Мега 1280
  • DFR0321 Узел Wido-WIFI IoT
  • DFR0323 Блуно Мега 2560
  • DFR0329 Блуно М3
  • DFR0339 Жук Блуно
  • DFR0343 Контроллер с низким энергопотреблением UHex
  • DFR0355 SIM808 с материнской платой Leonardo
  • DFR0392 DFRduino M0 материнская плата, совместимая с Arduino
  • DFR0398 Romeo BLE Quad Robot Controller
  • DFR0416 Bluno M0 Материнская плата
  • DFR0575 Жук ESP32
  • DFR0133 X-Board
  • DFR0162 X-Board V2
  • DFR0428 3.5-дюймовый сенсорный TFT-экран для Raspberry Pi
  • DFR0494 Raspberry Pi ШАПКА ИБП
  • DFR0514 DFR0603 IIC 16X2 RGB LCD KeyPad HAT V1.0
  • DFR0524 5.5 HDMI OLED-дисплей с емкостным сенсорным экраном V2.0
  • DFR0550 5-дюймовый TFT-дисплей с сенсорным экраном V1.0
  • DFR0591 модуль дисплея raspberry pi e-ink V1.0
  • DFR0592 Драйвер двигателя постоянного тока HAT
  • DFR0604 HAT расширения ввода-вывода для нулевого числа Pi V1.0
  • DFR0566 Шляпа расширения ввода-вывода для Raspberry Pi
  • DFR0528 Шляпа ИБП для Raspberry Pi Zero
  • DFR0331 Romeo для контроллера Edison
  • DFR0453 DFRobot CurieNano — мини-плата Genuino Arduino 101
  • TEL0110 CurieCore Intel® Curie Neuron Module
  • DFR0478 Микроконтроллер FireBeetle ESP32 IOT (V3.0) с поддержкой Wi-Fi и Bluetooth
  • DFR0483 FireBeetle Covers-Gravity I O Expansion Shield
  • FireBeetle Covers-24 × 8 светодиодная матрица
  • TEL0121 FireBeetle Covers-LoRa Radio 433 МГц
  • TEL0122 FireBeetle Covers-LoRa Radio 915 МГц
  • TEL0125 FireBeetle охватывает LoRa Radio 868MHz
  • DFR0489 FireBeetle ESP8266 Микроконтроллер IOT
  • DFR0492 FireBeetle Board-328P с BLE4.1
  • DFR0498 FireBeetle Covers-Camera & Audio Media Board
  • DFR0507 FireBeetle Covers-OLED12864 Дисплей
  • DFR0508 FireBeetle Covers-Двигатель постоянного тока и шаговый драйвер
  • DFR0511 FireBeetle Covers-ePaper Черно-белый дисплейный модуль
  • DFR0531 FireBeetle Covers-ePaper Черно-белый и красный дисплейный модуль
  • DFR0536 Micro bit плата расширения геймпада
  • DFR0548 Плата расширения микробитового драйвера
  • ROB0148 micro: Maqueen для micro: bit
  • ROB0150 Microbit Круглая плата расширения для светодиодов RGB
  • MBT0005 Micro IO-BOX
  • SEN0159 Датчик CO2
  • DFR0049 DFRobot Датчик газа
  • TOY0058 Датчик атмосферного давления
  • SEN0220 Инфракрасный датчик CO2 0-50000ppm
  • SEN0219 Гравитационный аналоговый инфракрасный датчик CO2 для Arduino
  • SEN0226 Датчик барометра Gravity I2C BMP280
  • SEN0231 Датчик гравитации HCHO
  • SEN0251 Gravity BMP280 Датчики атмосферного давления
  • SEN0132 Датчик угарного газа MQ7
  • SEN0032 Трехосный акселерометр — ADXL345
  • DFR0143 Трехосевой акселерометр MMA7361
  • Трехосный акселерометр серии FXLN83XX
  • SEN0072 CMPS09 — Магнитный компас с компенсацией наклона
  • SEN0073 9 степеней свободы — бритва IMU
  • DFR0188 Flymaple V1.1
  • SEN0224 Трехосевой акселерометр Gravity I2C — LIS2DH
  • SEN0140 Датчик IMU с 10 степенями свободы, версия 2.0
  • SEN0250 Gravity BMI160 6-осевой инерционный датчик движения
  • SEN0253 Gravity BNO055 + BMP280 интеллектуальный 10DOF AHRS
  • SEN0001 URM37 V5.0 Ультразвуковой датчик
  • SEN0002 URM04 V2.0
  • SEN0004 SRF01 Ультразвуковой датчик
  • SEN0005 SRF02 Ультразвуковой датчик
  • SEN0006 SRF05 Ультразвуковой датчик
  • SEN0007 SRF08 Ультразвуковой датчик
  • SEN0008 SRF10 Ультразвуковой датчик
  • SEN0149 URM06-RS485 Ультразвуковой
  • SEN0150 URM06-UART Ультразвуковой
  • SEN0151 URM06-PULSE Ультразвуковой
  • SEN0152 URM06-ANALOG Ультразвуковой
  • SEN0153 Ультразвуковой датчик URM07-UART
  • SEN0246 URM08-RS485 Водонепроницаемый гидролокатор-дальномер
  • SEN0304 Ультразвуковой датчик URM09 (Gravity-I2C) (V1.0)
  • SEN0304 Ультразвуковой датчик URM09 (Gravity-I2C) (V1.0)
  • SEN0300 Водонепроницаемый ультразвуковой датчик ULS
  • SEN0301 Водонепроницаемый ультразвуковой датчик ULA
  • SEN0307 URM09 Аналог ультразвукового датчика силы тяжести
  • SEN0311 A02YYUW Водонепроницаемый ультразвуковой датчик
  • SEN0312 ME007YS Водонепроницаемый ультразвуковой датчик
  • SEN0313 A01NYUB Водонепроницаемый ультразвуковой датчик
  • DFR0066 SHT1x Датчик влажности и температуры
  • DFR0067 DHT11 Датчик температуры и влажности
  • SEN0137 DHT22 Модуль температуры и влажности
  • DFR0023 Линейный датчик температуры DFRobot LM35
  • DFR0024 Gravity DS18B20 Датчик температуры, совместимый с Arduino V2
  • DFR0024 Gravity DS18B20 Датчик температуры, совместимый с Arduino V2
  • SEN0114 Датчик влажности
  • Датчик температуры TOY0045 TMP100
  • TOY0054 SI7021 Датчик температуры и влажности
  • SEN0206 Датчик инфракрасного термометра MLX
  • SEN0227 SHT20 Водонепроницаемый зонд датчика температуры и влажности I2C
  • SEN0236 Gravity I2C BME280 Датчик окружающей среды Температура, влажность, барометр
  • SEN0248 Gravity I2C BME680 Датчик окружающей среды VOC, температура, влажность, барометр
  • DFR0558 Цифровой высокотемпературный датчик силы тяжести типа К
  • SEN0308 Водонепроницаемый емкостный датчик влажности почвы
  • SEN0019 Регулируемый переключатель инфракрасного датчика
  • SEN0042 DFRobot Инфракрасный датчик прорыва
  • SEN0143 SHARP GP2Y0A41SK0F ИК-датчик рейнджера 4-30см
  • SEN0013 Sharp GP2Y0A02YK ИК-датчик рейнджера 150 см
  • SEN0014 Sharp GP2Y0A21 Датчик расстояния 10-80 см
  • SEN0085 Sharp GP2Y0A710K Датчик расстояния 100-550 см
  • Модуль цифрового ИК-приемника DFR0094
  • DFR0095 Модуль цифрового ИК-передатчика
  • SEN0018 Цифровой инфракрасный датчик движения
  • DFR0107 ИК-комплект
  • SEN0264 TS01 ИК-датчик температуры (4-20 мА)
  • SEN0169 Аналоговый pH-метр Pro
  • DFR0300-H Gravity: аналоговый датчик электропроводности (K = 10)
  • DFR0300 Гравитационный аналоговый датчик электропроводности V2 K = 1
  • SEN0165 Аналоговый измеритель ОВП
  • SEN0161-V2 Комплект аналогового гравитационного измерителя pH V2
  • SEN0161 PH метр
  • SEN0237 Гравитационный аналоговый датчик растворенного кислорода
  • SEN0204 Бесконтактный датчик уровня жидкости XKC-Y25-T12V
  • SEN0205 Датчик уровня жидкости-FS-IR02
  • SEN0244 Gravity Analog TDS Sensor Meter для Arduino
  • SEN0249 Комплект измерителя pH с аналоговым наконечником копья силы тяжести для применения в почве и пищевых продуктах
  • SEN0121 Датчик пара
  • SEN0097 Датчик освещенности
  • DFR0026 Датчик внешней освещенности DFRobot
  • TOY0044 УФ-датчик
  • SEN0172 LX1972 датчик внешней освещенности
  • SEN0043 TEMT6000 датчик внешней освещенности
  • SEN0175 УФ-датчик v1.0-ML8511
  • SEN0228 Gravity I2C VEML7700 Датчик внешней освещенности
  • SEN0101 Датчик цвета TCS3200
  • DFR0022 Датчик оттенков серого DFRobot
  • Датчик отслеживания линии SEN0017 для Arduino V4
  • SEN0147 Интеллектуальный датчик оттенков серого
  • SEN0212 TCS34725 Датчик цвета I2C для Arduino
  • SEN0245 Gravity VL53L0X Лазерный дальномер ToF
  • SEN0259 TF Mini LiDAR ToF Laser Range Sensor
  • SEN0214 Датчик тока 20А
  • SEN0262 Гравитационный аналоговый преобразователь тока в напряжение для приложений 4 ~ 20 мА
  • SEN0291 Gravity: Цифровой ваттметр I2C
  • DFR0027 Цифровой датчик вибрации DFRobot V2
  • DFR0028 DFRobot Датчик наклона
  • DFR0029 Цифровая кнопка DFRobot
  • DFR0030 DFRobot емкостный датчик касания
  • Модуль цифрового зуммера DFR0032
  • DFR0033 Цифровой магнитный датчик
  • DFR0034 Аналоговый звуковой датчик
  • SEN0038 Колесные энкодеры для DFRobot 3PA и 4WD Rovers
  • DFR0051 Аналоговый делитель напряжения
  • DFR0052 Аналоговый пьезодисковый датчик вибрации
  • DFR0076 Датчик пламени
  • DFR0053 Аналоговый датчик положения ползуна
  • DFR0054 Аналоговый датчик вращения V1
  • DFR0058 Аналоговый датчик вращения V2
  • Модуль джойстика DFR0061 для Arduino
  • DFR0075 AD Клавиатурный модуль
  • Модуль вентилятора DFR0332
  • SEN0177 PM2.5 лазерный датчик пыли
  • Модуль датчика веса SEN0160
  • SEN0170 Тип напряжения датчика скорости ветра 0-5 В
  • TOY0048 Высокоточный двухосевой датчик инклинометра, совместимый с Arduino Gadgeteer
  • SEN0187 RGB и датчик жестов
  • SEN0186 Метеостанция с анемометром Флюгер Дождь ведро
  • SEN0192 Датчик микроволн
  • SEN0185 датчик Холла
  • FIT0449 DFRobot Speaker v1.0
  • Датчик частоты сердечных сокращений SEN0203
  • DFR0423 Самоблокирующийся переключатель
  • SEN0213 Датчик монитора сердечного ритма
  • SEN0221 Датчик угла Холла силы тяжести
  • SEN0223 Датчик переключателя проводимости
  • SEN0230 Инкрементальный фотоэлектрический датчик угла поворота — 400P R
  • SEN0235 Модуль поворотного энкодера EC11
  • SEN0240 Аналоговый датчик ЭМГ от OYMotion
  • SEN0232 Гравитационный аналоговый измеритель уровня звука
  • SEN0233 Монитор качества воздуха PM 2.5, формальдегид, датчик температуры и влажности
  • DFR0515 FireBeetle Covers-OSD Модуль наложения символов
  • SEN0257 Датчик гравитационного давления воды
  • SEN0289 Gravity: Цифровой датчик встряхивания
  • SEN0290 Gravity: Датчик молнии
  • DFR0271 GMR Плата
  • ROB0003 Pirate 4WD Мобильная платформа
  • Мобильная платформа ROB0005 Turtle 2WD
  • ROB0025 NEW A4WD Мобильный робот с кодировщиком
  • ROB0050 4WD MiniQ Полный комплект
  • ROB0111 4WD MiniQ Cherokey
  • ROB0036 Комплект роботизированной руки с 6 степенями свободы
  • Комплект наклонно-поворотного устройства FIT0045 DF05BB
  • ROB0102 Мобильная платформа Cherokey 4WD
  • ROB0117 Базовый комплект для Cherokey 4WD
  • ROB0022 4WD Мобильная платформа
  • ROB0118 Базовый комплект для Turtle 2WD
  • Робот-комплект ROB0080 Hexapod
  • ROB0112 Мобильная платформа Devastator Tank
  • ROB0114 Мобильная платформа Devastator Tank
  • ROB0124 Мобильная платформа HCR с всенаправленными колесами
  • ROB0128 Devastator Tank Мобильная платформа Металлический мотор-редуктор постоянного тока
  • ROB0137 Explorer MAX Робот
  • ROB0139 Робот FlameWheel
  • DFR0270 Accessory Shield для Arduino
  • DFR0019 Щит для прототипирования для Arduino
  • DFR0265 IO Expansion Shield для Arduino V7
  • DFR0210 Пчелиный щит
  • DFR0165 Mega IO Expansion Shield V2.3
  • DFR0312 Плата расширения Raspberry Pi GPIO
  • DFR0311 Raspberry Pi встречает Arduino Shield
  • DFR0327 Arduino Shield для Raspberry Pi 2B и 3B
  • DFR0371 Экран расширения ввода-вывода для Bluno M3
  • DFR0356 Bluno Beetle Shield (Щит из жука Блуно)
  • DFR0412 Gravity IO Expansion Shield для DFRduino M0
  • DFR0375 Cookie I O Expansion Shield V2
  • DFR0334 GPIO Shield для Arduino V1.0
  • DFR0502 Gravity IO Expansion & Motor Driver Shield V1.1
  • DFR0518 Micro Mate — мини-плата расширения для микробита
  • DFR0578 Gravity I O Expansion Shield для OpenMV Cam M7
  • DFR0577 Gravity I O Expansion Shield для Pyboard
  • DFR0626 MCP23017 Модуль расширения с IIC на 16 цифровых IO
  • DFR0287 LCD12864 Экран
  • DFR0009 Экран ЖК-клавиатуры для Arduino
  • DFR0063 I2C TWI LCD1602 Модуль Gadgeteer-совместимый
  • Модуль DFR0154 I2C TWI LCD2004, совместимый с Arduino Gadgeteer
  • Светодиодная матрица DFR0202 RGB
  • DFR0090 3-проводной светодиодный модуль
  • TOY0005 OLED 2828 модуль цветного дисплея.Совместимость с NET Gadgeteer
  • Модуль дисплея TOY0006 OLED 9664 RGB
  • Модуль дисплея TOY0007 OLED 2864
  • FIT0328 2.7 OLED 12864 дисплейный модуль
  • DFR0091 3-проводной последовательный ЖК-модуль, совместимый с Arduino
  • DFR0347 2.8 TFT Touch Shield с 4 МБ флэш-памяти для Arduino и mbed
  • DFR0348 3.5 TFT Touch Shield с 4 МБ флэш-памяти для Arduino и mbed
  • DFR0374 Экран LCD клавиатуры V2.0
  • DFR0382 Экран со светодиодной клавиатурой V1.0
  • DFR0387 TELEMATICS 3.5 TFT сенсорный ЖК-экран
  • DFR0459 Светодиодная матрица RGB 8×8
  • DFR0460 Светодиодная матрица RGB 64×32 — шаг 4 мм / Гибкая светодиодная матрица 64×32 — Шаг 4 мм / Гибкая светодиодная матрица 64×32 — Шаг 5 мм
  • DFR0461 Гибкая светодиодная матрица 8×8 RGB Gravity
  • DFR0462 Gravity Гибкая светодиодная матрица 8×32 RGB
  • DFR0463 Gravity Гибкая светодиодная матрица 16×16 RGB
  • DFR0471 Светодиодная матрица RGB 32×16 — шаг 6 мм
  • DFR0472 Светодиодная матрица RGB 32×32 — шаг 4 мм
  • DFR0464 Gravity I2C 16×2 ЖК-дисплей Arduino с подсветкой RGB
  • DFR0499 Светодиодная матрица RGB 64×64 — шаг 3 мм
  • DFR0506 7-дюймовый дисплей HDMI с емкостным сенсорным экраном
  • DFR0555 \ DF0556 \ DFR0557 Gravity I2C LCD1602 Модуль ЖК-дисплея Arduino
  • DFR0529 2.2-дюймовый ЖК-дисплей TFT V1.0 (интерфейс SPI)
  • DFR0605 Gravity: Цифровой светодиодный модуль RGB
  • FIT0352 Цифровая светодиодная водонепроницаемая лента с RGB-подсветкой 60LED м * 3 м
  • DFR0645-G DFR0645-R 4-цифровой светодиодный сегментный модуль дисплея
  • Артикул DFR0646-G DFR0646-R 8-цифровой светодиодный сегментный модуль дисплея
  • DFR0597 Гибкая светодиодная матрица RGB 7×71
  • DFR0231 Модуль NFC для Arduino
  • Модуль радиоданных TEL0005 APC220
  • TEL0023 BLUETOOH BEE
  • TEL0026 DF-BluetoothV3 Bluetooth-модуль
  • Модуль беспроводного программирования TEL0037 для Arduino
  • TEL0044 DFRduino GPS щит-LEA-5H
  • TEL0047 WiFi Shield V2.1 для Arduino
  • TEL0051 GPS GPRS GSM модуль V2.0
  • TEL0067 Wi-Fi Bee V1.0
  • TEL0073 BLE-Link
  • TEL0075 RF Shield 315 МГц
  • TEL0078 WIFI Shield V3 PCB Антенна
  • TEL0079 WIFI Shield V3 RPSMA
  • TEL0084 BLEmicro
  • TEL0086 DF-маяк EVB
  • TEL0087 USBBLE-LINK Bluno Адаптер для беспроводного программирования
  • TEL0080 UHF RFID МОДУЛЬ-USB
  • TEL0081 УВЧ RFID МОДУЛЬ-RS485
  • TEL0082 UHF RFID МОДУЛЬ-UART
  • TEL0083-A GPS-приемник для Arduino модели A
  • TEL0092 WiFi Bee-ESP8266 Wirelss модуль
  • Модуль GPS TEL0094 с корпусом
  • TEL0097 SIM808 GPS GPRS GSM Shield
  • DFR0342 W5500 Ethernet с материнской платой POE
  • DFR0015 Xbee Shield для Arduino без Xbee
  • TEL0107 WiFiBee-MT7681 Беспроводное программирование Arduino WiFi
  • TEL0089 SIM800C GSM GPRS Shield V2.0
  • Модуль приемника RF TEL0112 Gravity 315MHZ
  • Модуль GSM и GPRS TEL0113 Gravity UART A6
  • TEL0118 Gravity UART OBLOQ IoT Модуль
  • Модуль TEL0120 DFRobot BLE4.1
  • TEL0002 Bluetooth-адаптер
  • Модуль аудиоприемника Bluetooth TEL0108
  • TEL0124 SIM7600CE-T 4G (LTE) Shield V1.0
  • DFR0505 SIM7000C Arduino NB-IoT LTE GPRS Expansion Shield
  • DFR0013 IIC в GPIO Shield V2.0
  • Плата привода двигателя датчика DFR0057 — Версия 2.2
  • DFR0062 Адаптер WiiChuck
  • DFR0233 Узел датчика RS485 V1.0
  • DFR0259 Arduino RS485 щит
  • DFR0370 Экран CAN-BUS V2
  • DFR0627 IIC для двойного модуля UART
  • TEL0070 Multi USB RS232 RS485 TTL преобразователь
  • DFR0064 386AMP модуль аудиоусилителя
  • DFR0273 Экран синтеза речи
  • DFR0299 DFPlayer Mini
  • TOY0008 DFRduino Плеер MP3
  • SEN0197 Диктофон-ISD1820
  • DFR0420 Аудиозащитный экран для DFRduino M0
  • DFR0534 Голосовой модуль
  • SD2403 Модуль часов реального времени SKU TOY0020
  • TOY0021 SD2405 Модуль часов реального времени
  • DFR0151 Модуль Gravity I2C DS1307 RTC
  • DFR0469 Модуль Gravity I2C SD2405 RTC
  • DFR0316 MCP3424 18-битный канал АЦП-4 с усилителем с программируемым усилением
  • DFR0552 Gravity 12-битный модуль I2C DAC
  • DFR0553 Gravity I2C ADS1115 16-битный модуль АЦП, совместимый с Arduino и Raspberry Pi
  • DFR0117 Модуль хранения данных Gravity I2C EEPROM
  • Модуль SD DFR0071
  • Плата привода двигателя датчика DFR0057 — Версия 2.2
  • DFR0360 XSP — Программист Arduino
  • DFR0411 Двигатель постоянного тока Gravity 130
  • DFR0438 Яркий светодиодный модуль
  • DFR0439 Светодиодные гирлянды красочные
  • DFR0440 Модуль микровибрации
  • DFR0448 Светодиодные гирлянды, теплый белый цвет
  • Встроенный термопринтер DFR0503 — последовательный TTL
  • DFR0504 Гравитационный изолятор аналогового сигнала
  • DFR0520 Двойной цифровой потенциометр 100K
  • DFR0565 Гравитационный цифровой изолятор сигналов
  • DFR0563 Гравитация 3.Датчик уровня топлива литиевой батареи 7V
  • DFR0576 Гравитационный цифровой мультиплексор I2C с 1 по 8
  • DFR0117 Модуль хранения данных Gravity I2C EEPROM
  • DRI0001 Моторный щит Arduino L293
  • DRI0002 MD1.3 2A Двухмоторный контроллер
  • DRI0009 Моторный щит Arduino L298N
  • DRI0021 Драйвер двигателя постоянного тока Veyron 2x25A Brush
  • DRI0017 2A Моторный щит для Arduino Twin
  • Драйвер двигателя постоянного тока DRI0018 2x15A Lite
  • Микродвигатель постоянного тока FIT0450 с энкодером-SJ01
  • FIT0458 Микродвигатель постоянного тока с энкодером-SJ02
  • DFR0399 Микро-металлический мотор-редуктор постоянного тока 75 1 Вт Драйвер
  • DRI0039 Quad Motor Driver Shield для Arduino
  • DRI0040 Двойной 1.Драйвер двигателя 5A — HR8833
  • DRI0044 2×1.2A Драйвер двигателя постоянного тока TB6612FNG
  • Драйвер двигателя постоянного тока DFR0513 PPM 2x3A
  • DFR0523 Гравитационный цифровой перистальтический насос
  • DRI0027 Digital Servo Shield для Arduino
  • DRI0029 24-канальный сервопривод Veyron
  • SER0044 DSS-M15S 270 ° 15KG Металлический сервопривод DF с аналоговой обратной связью
  • DRI0023 Экран шагового двигателя для Arduino DRV8825
  • DRI0035 TMC260 Щиток драйвера шагового двигателя
  • DFR0105 Силовой щит
  • DFR0205 Силовой модуль
  • DFR0457 Контроллер мощности Gravity MOSFET
  • DFR0564 Зарядное устройство USB для 7.Литий-полимерная батарея 4 В
  • DFR0535 Менеджер солнечной энергии
  • DFR0559 Солнечная система управления мощностью 5 В для подсолнечника
  • DFR0559 Менеджер солнечной энергии 5 В
  • DFR0580 Solar Power Manager для свинцово-кислотных аккумуляторов 12 В
  • DFR0222 Реле X-Board
  • Релейный модуль DFR0017, совместимый с Arduino
  • DFR0289 Релейный контроллер RLY-8-POE
  • DFR0290 RLY-8-RS485 8-релейный контроллер
  • DFR0144 Релейный экран для Arduino V2.1
  • DFR0473 Gravity Digital Relay Module Совместимость с Arduino и Raspberry Pi
  • KIT0003 EcoDuino — Комплект для автомобильных заводов
  • KIT0071 MiniQ Discovery Kit
  • KIT0098 Пакет компонентов подключаемого модуля Breadboard
  • Артикул DFR0748 Цветок Китти
  • SEN0305 Гравитация: HUSKYLENS — простой в использовании датчик машинного зрения с искусственным интеллектом
  • Подключение датчика к Raspberry Pi
  • DFR0677 ШЛЯПА ONPOWER UPS для Raspberry Pi

Использование светодиодной матрицы с Arduino.Получил светодиодную матрицу 8×8, такую ​​как… | Родриго Соуза Коутиньо | Arduino Playground

У вас есть светодиодная матрица 8×8, такая как LBT2088AH, которую вы хотите подключить к своей Arduino? Вот как это работает:

Светодиодная матрица. Цифры представляют контакты

. Матрица имеет 8 строк и 8 столбцов светодиодов, каждый из которых имеет контакт, который вы можете подключить к вашему Arduino. Это означает, что у вас есть 16 контактов для подключения. И обратите внимание, что номера выводов не имеют никакого отношения к фактической строке или столбцу… поймите!

В любом случае, идея состоит в том, что вы проходите через каждую строку матрицы по очереди и переводите ее вывод на ВЫСОКИЙ.Итак, если вы хотите установить светодиоды в строке 5, вы должны установить для контакта 1 значение HIGH, а для всех остальных контактов — значение LOW.

Затем вы выбираете, какие столбцы вы хотите осветить. Столбцы, которые вы хотите осветить, должны быть установлены на НИЗКИЙ, а те, которые вы хотите выключить, должны быть установлены на ВЫСОКИЙ. Итак, если вы хотите, чтобы столбец 3 загорелся, вам нужно установить вывод 4 на НИЗКИЙ, а для остальных выводов столбца — ВЫСОКИЙ.

Непонятно, не правда ли? В любом случае, давайте соберем эту штуку.

Схема

Схема для схемы выглядит так:

Схема выглядит обманчиво простой …

Много проводов, которые нужно собрать … и поскольку контакты на самом деле не соответствуют строкам или столбцам, вот макет, чтобы помочь вам.Обратите внимание, что в качестве вспомогательной опоры я использовал макетную плату меньшего размера, поскольку светодиодная матрица слишком велика для использования одной макетной платы.

Макет в беспорядке… Надеюсь, цветные провода немного помогут!

Код

Полный код выглядит так:

Если вы запустите это в своем Arduino с помощью схемы, описанной выше, вы должны увидеть красивую улыбку!

Улыбнись!

Давайте рассмотрим, что делает код:

В первой строке задается символ, который вы хотите показать. Каждое число представляет собой строку, и каждое число представляет собой битовый массив с 1 для подключенного светодиода и 0 для отключенного светодиода.Это означает, что в 1-й строке ( 0x3c ), которая является двоичной 00111100 , два светодиода выключены, за ними горят 4 светодиода, а 2 светодиода выключены, чтобы закрыть вечеринку. Если вы хотите создать своего собственного персонажа, отправляйтесь в конструктор персонажей. Всего за несколько кликов вы создадите своего личного персонажа.

Остальная часть настройки — это определение контактов для строк и столбцов и превращение их в выходы — не очень интересно, но необходимо.

Цикл — это то место, где начинается самое интересное.Первые для повторяются по каждой строке. Сразу за ним следует еще один цикл для для очистки столбцов. Если вы этого не сделаете, вы получите несколько полусветящихся светодиодов. Попробуй! Просто прокомментируйте эту строку и снова запустите код.

Затем мы устанавливаем строку на ВЫСОКИЙ. С этого момента для каждого столбца, который мы переходим на НИЗКИЙ, в этой строке загорается светодиод.

Следующий цикл для выполняет итерацию по столбцам. Идея странного фрагмента кода character [row] & 1 << col состоит в том, чтобы получить истинное значение (любое, кроме нуля), если бит в позиции col , начиная с конца, равен 1.В этом случае для этого столбца установлено значение НИЗКИЙ, и поэтому загорается светодиод.

Затем мы задерживаем на 1 миллисекунду, чтобы убедиться, что светодиоды успевают загореться. Вы также можете немного поиграть с этим: попробуйте удалить задержку, и вы увидите, что первые светодиоды станут димерами. Если вы установите задержку на 300, вы сможете видеть, как строки рисуются одну за другой.

Наконец, мы устанавливаем вывод строки на НИЗКИЙ, так что мы можем начать работу над следующей.

Полную схему и код можно загрузить с GitHub.Он включает в себя пару других персонажей, которые вы можете попробовать.

Построение светодиодной матрицы с помощью Arduino с использованием материалов CUI

Фон

Поскольку COVID-19 удерживает многих из нас дома, я тратил часть своего дополнительного времени дома на просмотр своих запасов источников питания и электронных компонентов, чтобы посмотреть, что я могу с ними сделать. Моим первым проектом было использование некоторых старых программируемых светодиодных лент, оставшихся с праздников. В результате получилась матрица светодиодов RGB 24 x 18 (всего 432 светодиода RGB).Матрица имеет в общей сложности 144 управляемых раздела (24 x 6), запрограммированных с помощью множества выбираемых программ.

Рис. 1. «CUI» на плате светодиодов

Обзор платы

Плата сделана из куска фанеры с 3 полосами светодиодов длиной 5 метров, нарезанными в общей сложности на 24 полосы меньшего размера, каждая из которых содержит 18 светодиодов. Цвет светодиодов контролируется Arduino Uno группами по три (6 групп на полосу из 18 светодиодов) на основе пользовательского ввода с потенциометра и трех кнопок. Плата питается от CUI SDI65-12-U-P6, источник питания переменного / постоянного тока 60 Вт, 12 В, 5 А и две внутренние шины +/- 5 В поставляются от CUI V7805-1000.Схема демультиплексора используется для маршрутизации данных на светодиодные ленты. Arduino контролирует ток светодиода и управляет питанием светодиодов через реле.

Рисунок 2: Блок-схема светодиодной платы Рисунок 3: Светодиодная плата спереди Рисунок 4: Светодиодная плата сзади
Категория Описание КОЛ-ВО
Контроллер ARDUINO UNO ATMEGA328 EVAL BRD 1
Светодиодные ленты 5 м 150 светодиодов WS2811 светодиодная лента программируемая светодиодная лампа цвета мечты IP67 трубка водонепроницаемая белая печатная плата 3
Блок питания АДАПТЕР ДЛЯ НАСТОЛЬНОГО ПК AC / DC 12V 60W 1
Плата MUX Демулиплексоры и регулятор 5В 1
Плата измерения тока Датчик тока и усилитель, со стабилизатором -5В, 5В 1
Релейная плата Плата реле, 12В 1
Пуговица Плата интерфейса пользователя, три кнопки, один потенциометр, 5 В 1
Рисунок 5: Спецификация верхнего уровня

Внешний источник питания

Внешний источник питания SDI65-12-U-P6 используется в качестве основного источника питания для платы.Он может обеспечивать постоянное напряжение от 12 В до 5 А. Где-то между 5 и 7,5 А блок питания перейдет в режим защиты от перегрузки по току и начнет сбоить, пока ток нагрузки не упадет. Когда это произойдет, Arduino потеряет питание и перезагрузится, если его шина питания не будет удерживаться достаточно долго для обнаружения и устранения неисправности. Чтобы измерить ток и предотвратить сброс контроллера OCP, светодиодные ленты подключаются к источнику питания 12 В через цепь измерения тока и реле, управляемое Arduino.

Каждый светодиод имеет максимальный ток 18,5 мА. С 432 светодиодами максимальный ток составляет 8 А, что означает, что при определенных условиях он может вызвать срабатывание OCP. Но это условие применяется только тогда, когда все красный, зеленый и синий светодиоды горят одновременно. Сплошной красный или зеленый цвет при полной яркости требует всего 2,7 А. После тестирования я обнаружил, что 4,5 А будет более чем достаточно для всего, что я планировал сделать. Arduino будет контролировать измеренный ток светодиода и отключит реле, если ток превысит ~ 4.6 А. Это оставляет 5 Вт для остальных цепей.

Рисунок 6: Тестовое измерение OCP - Реле (зеленый) переходит в низкий уровень, когда ток (фиолетовый), измеряемый усилителем (голубой), превышает 4,78 А, в результате чего напряжение светодиода (темно-синий) гаснет. Максимальная выходная мощность составила 57,2 Вт во время теста

Arduino Uno

Плата Arduino Uno, основанная на Atmel ATmega328, используется для управления системой. Связь со светодиодными лентами (или WS2811, которые контролируют их изнутри) является однопроводной связью на основе ширины импульса и обрабатывается библиотекой Adafruit NeoPixel, которая включена в Arduino IDE.Все коммуникации, процедуры отображения, пользовательский интерфейс и управление реле программируются и контролируются платой Arduino.

Рисунок 7: Плата Arduino Uno Рисунок 8: Синхронизация связи WS2811

Плата MUX

Каждая из небольших полосок имеет однопроводную линию связи, которая была демультиплексирована в одну линию связи платой мультиплексора, которая управляется Arduino Uno. Плата мультиплексора также служит центральной точкой распределения энергии. Внешнее питание от SDI65-12-U подключается непосредственно к плате мультиплексора.12 В от источника питания распределяются с платы мультиплексора на плату реле и на вход импульсного регулятора V7805-1000, который преобразует его в 5 В для демультиплексоров. Шина 5 В также выводится на Arduino, а через эту плату - на платы кнопок и датчиков тока.

Рисунок 9: Плата MUX Рисунок 10: Схема платы MUX
Категория Описание Арт. КОЛ-ВО
Разъем 2.0 x 6,5 мм, 5,0 A, горизонтальный, поверхностный монтаж (SMT), разъем питания постоянного тока J8 1
Разъем CONN ЖАТКА VERT 10POS 2.54MM J1, J2, J3 3
Ползунковый переключатель 5A / 120V однополюсный двухпозиционный ползунковый переключатель S1 1
Провод к клемме TERM BLK 2P БОКОВОЙ ЛОР 2.54 мм печатная плата J4, J5, J6, J7, J9 5
Провод к клемме TERM BLK 2P SIDE ENT 5.08MM PCB J10 1
Регулятор переключения DC-DC НЕИЗОЛЯЦИОННЫЙ, 2 А, 8 ~ 36 В D DC1 1
Керамический конденсатор КОЛПАЧОК CER 0.1UF 50V X7R РАДИАЛЬНЫЙ C3, C4, C5 3
Конденсатор электролитический КРЫШКА АЛЮМИНИЕВАЯ 1 мкФ 20% 50 В РАДИАЛЬНАЯ C2 1
Алюминиевый полимерный конденсатор КРЫШКА ALUM POLY 470UF 20% 16V T / H C1 1
Светодиод ЗЕЛЕНЫЙ ДИФФУЗОР LED T-1 3/4 T / H D1 1
мультиплексор IC 3-8 ЛИНИЙ ДЕКОДЕР / DEMUX 16-DIP MUX0, MUX1, MUX2 3
Резистор РЭС 1.2 кОм 1/8 Вт 5% CF AXIAL R1 1
Рисунок 11: Спецификация платы MUX

Плата измерения тока

Плата измерения тока является частью цепи защиты от перегрузки по току (OCP). Ток к светодиодам протекает через силовой резистор на этой плате, и напряжение этого резистора, пропорциональное току светодиода, измеряется и усиливается операционным усилителем и выводится на Arduino. Коэффициент усиления усилителя регулируется потенциометром с минимальным коэффициентом усиления 1 и максимальным коэффициентом усиления 11.Обычно он установлен на 5, так что выход составляет 2,5 A / V входного сигнала (2 В при 5 A). Компаратор, порог которого устанавливается вторым потенциометром, определяет, было ли превышено пороговое значение OCP, который включает светодиодный индикатор и выдает логический сигнал на Arduino. Эта плата питается от шины V7805-1000 5V, идущей от платы MUX. Он также создает внутреннюю шину -5 В для операционного усилителя, используя V7805-1000 в его инвертирующей конфигурации.

Рисунок 12: Схема измерения тока Рисунок 13: Схема платы датчика тока
Категория Описание Арт. КОЛ-ВО
Резистор RES 5,1 кОм 1/8 Вт 5% ось R2, R8 2
ОП-АМП IC OPAMP GP 1 ЦЕПЬ 8DIP У2, У3 2
Резистор RES 10 кОм 1/8 Вт 5% ось R5, R6, R10 3
Светодиод ЗЕЛЕНЫЙ ДИФФУЗОР LED T-1 3/4 T / H D1 1
Светодиод КРАСНЫЙ СВЕТОДИОДНЫЙ ТИП Т-1 3/4 Т / Н D2 1
Транзистор МОП-транзистор N-CH 60V 200MA TO-92 I кв., II кв. 2
Провод к клемме TERM BLK 2P БОКОВОЙ ЛОР 2.54 мм печатная плата J1, J2 2
Керамический конденсатор КОЛПАЧОК CER 0.1UF 50V X7R РАДИАЛЬНЫЙ C2, C3, C4 3
Регулятор переключения DC-DC НЕИЗОЛЯЦИОННЫЙ, 2 А, 8 ~ 36 В D U1 1
Резистор RES 470 OHM 1 / 8W 5% AXIAL R1 1
Емкость КРЫШКА АЛЮМИНИЙ 47UF 20% 25V ПРОХОДНОЕ ОТВЕРСТИЕ C1 1
Резистор RES CHAS MNT 0.1 Ом 5% 16 Вт R4 1
Керамический конденсатор КОЛПАЧОК CER 0,01 мкФ 50V X7R РАДИАЛЬНЫЙ C5 1
Обрезной горшок ТРИММЕР 10 кОм 0,2 Вт PC PIN TOP R3 1
Обрезной горшок ТРИММЕР 50 кОм 0,2 Вт PC PIN TOP R7 1
Рисунок 14: Спецификация платы датчика тока

Релейная плата

Плата реле представляет собой простое реле и драйвер.Когда входной сигнал управления становится высоким, реле включает светодиоды, а когда понижается мощность, светодиоды снимаются. Эта плата работает от 12 В, поступающего от SDI65-12-U-P6 через плату MUX.

Рисунок 12: Плата реле Рисунок 13: Схема платы реле
Категория Описание Арт. КОЛ-ВО
Провод к клемме TERM BLK 2P SIDE ENT 2,54 мм PCB J1, J2, J3 3
Транзистор Биполярный (BJT) транзистор PNP 40V 200MHz 600mW Through Hole TO-92 1 квартал 1
Транзистор N-канал 60 В 200 мА (Ta) 400 мВт (Ta) сквозное отверстие TO-92-3 2 квартал 1
Резистор РЭС 2.2 кОм 1/8 Вт 5% ось R1 1
Резистор RES 110K OHM 1 / 8W 5% CF ОСЕВОЙ R3 1
Резистор RES 1,2 кОм 1 / 8W 5% CF AXIAL R2 1
Реле РЕЛЕ ГЕНЕРАЛЬНОГО НАЗНАЧЕНИЯ DPDT 5A 24V К1 1
Рисунок 14: Спецификация платы реле

Плата кнопок

Пользователь может регулировать яркость светодиодов с помощью потенциометра.Три кнопки позволяют пользователю переключаться между различными режимами отображения и настройками цвета. Эта плата питается от 5 В от V7805-1000 на плате MUX.

Рисунок 14: Плата кнопок Рисунок 15: Схема платы кнопок ПЛАСТИКОВЫЙ ЛИНЕЙНЫЙ
Категория Описание Арт. КОЛ-ВО
Кнопки ВЫКЛЮЧАТЕЛЬ КНОПКИ SPST 1A 30V S1, S2, S3 3
Провод к клемме TERM BLK 2P БОКОВОЙ ЛОР 2.54 мм печатная плата J1, J2, J3 3
Керамический конденсатор КОЛПАЧОК CER 0.1UF 50V X7R РАДИАЛЬНЫЙ C2 1
Светодиод ЗЕЛЕНЫЙ ДИФФУЗОР LED T-1 3/4 T / H D1 1
Резистор RES 4,7 кОм 1/8 Вт 5% ось R1 1
Конденсатор электролитический КРЫШКА АЛЮМИНИЕВАЯ 10 мкФ 20% 16 В РАДИАЛЬНАЯ C1 1
Резистор RES 110K OHM 1 / 8W 5% CF ОСЕВОЙ R2, R3, R4 3
Потенциометр POT 10K OHM 1 / 5W PLASTIC LINEAR R5 1
Рисунок 16: Спецификация платы кнопок

Результаты

После того, как платы были спаяны и собраны, пришло время запрограммировать некоторые процедуры отображения.С помощью кнопок пользователь может переключаться между различными процедурами, включать и выключать все светодиоды, а также переключать сплошные цвета, а потенциометр позволяет регулировать яркость светодиодов. Однако при ограниченной памяти есть ограничение на количество и сложность подпрограмм.

Для первой процедуры (прежде чем я закончил добавлять все светодиодные ленты) я заменил потенциометр на внешний аналоговый вход. К этому входу были применены микрофон и схема определения уровня, а громкость микрофона регулировала светодиоды.

Другой программой был прыгающий квадрат, цвет которого менялся при попадании на край.

Наконец, я добавил настройку полностью белого цвета для проверки функции OCP. Когда яркость увеличивается, запускается цепь OCP. Следующий клип также демонстрирует панель кнопок, переключающую запрограммированные процедуры отображения.

Вам также может понравиться


У вас есть комментарии к этому сообщению или темам, которые вы хотели бы, чтобы мы освещали в будущем?
Отправьте нам письмо по адресу powerblog @ cui.ком

Светодиодная матрица

MAX7219 - подключение к Arduino

Рано или поздно возникает необходимость вывести данные из Arduino и отобразить их на относительно большом дисплее. Дисплеи большого размера для хобби-проектов обходятся недешево, поэтому один из лучших вариантов - это светодиодный дисплей. Но редкая Arduino имеет 64 выхода для управления как минимум 8 × 8 знакомест, не говоря уже о большом размере.

Можно обратиться в мультиплекс и получить 16 использованных выводов и массу хлопот по организации динамического отображения.А можно взять проверенный и удобный чип-драйвер светодиодной матрицы MAX7219, уменьшить количество используемых выводов до 3 и получить возможность собирать большие бегущие строки текста!

Для реализации проекта из этой статьи нам потребуются следующие компоненты:

  • Arduino Uno R3
  • MAX7219 - LED Matrix
  • Макет
  • Провода

КРАТКИЙ ОБЗОР МОДУЛЕЙ

9000 обычно комплектуются удобными подключениями к одним и тем же модулям для удлинения струны.Сама микросхема позволяет управлять матрицей светодиодов размером до 8х8, хотя изначально она предназначалась для управления линейкой восьмисегментных индикаторов с общим катодом.

Микросхеме нужен всего 1 резистор для установки тока всех светодиодов схемы, но на модулях он уже установлен и это не будет вашей головной болью!

Микросхема работает от напряжения 5 В с логическими уровнями от 0 В до 5 В. Максимальный ток на сегмент - 40 мА, общий ток - 330 мА.

СХЕМА ПОДКЛЮЧЕНИЯ К ARDUINO

    Модуль
  • DIN (MOSI) - 12 контактов
  • CLK - 11 контактов
  • CS - 10 контактов
  • VCC - + 5V
  • GND - GND
  • ПОДКЛЮЧЕНИЕ

Для работы с микросхемой написано большое количество библиотек, в том числе и поддерживаемая универсальным U8g2, попробуем поискать что-то конкретное в Диспетчере библиотек:

Воспользуемся LedControl, поставим:

И мы переходим к анализу примеров, в нашем случае - LCDemoMatrix:

Подключите, как описано в строках 5-10, и загрузите скетч в Arduino (не забудьте также подключить линии питания! ).Далее код отслеживает отображение различных эффектов, но способы их отображения в разных библиотеках разные, поэтому их детальное изучение мы возложим на плечи пользователя.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *