Arduino:Примеры/Demo for a Led matrix: различия между версиями
Myagkij (обсуждение | вклад) м (Замена текста — «<syntaxhighlight lang="c" line="GESHI_NORMAL_LINE_NUMBERS|GESHI_FANCY_LINE_NUMBERS">» на «<syntaxhighlight lang="c" line="GESHI_NORMAL_LINE_NUMBERS|GESHI_FANCY_LINE_NUMBERS" enclose="div">») |
Нет описания правки |
||
(не показана 1 промежуточная версия этого же участника) | |||
Строка 15: | Строка 15: | ||
==Код== | ==Код== | ||
<syntaxhighlight lang="c" line="GESHI_NORMAL_LINE_NUMBERS|GESHI_FANCY_LINE_NUMBERS | <syntaxhighlight lang="c" line="GESHI_NORMAL_LINE_NUMBERS|GESHI_FANCY_LINE_NUMBERS"> | ||
// подключаем библиотеку (это нужно делать всегда): | // подключаем библиотеку (это нужно делать всегда): | ||
#include "LedControl.h" | #include "LedControl.h" | ||
Строка 189: | Строка 189: | ||
<references /> | <references /> | ||
{{Навигационная таблица/Портал/Arduino}} | |||
[[Категория:Пример]] | [[Категория:Пример]] | ||
[[Категория:Примеры]] | [[Категория:Примеры]] | ||
[[Категория:Пример программирования Arduino]] | [[Категория:Пример программирования Arduino]] | ||
[[Категория:Примеры программирования Arduino]] | [[Категория:Примеры программирования Arduino]] |
Текущая версия от 12:33, 8 июля 2023
Содержание | Знакомство с Arduino | Продукты | Основы | Справочник языка Arduino | Примеры | Библиотеки | Хакинг | Изменения | Сравнение языков Arduino и Processing |
Управление матрицей светодиодов[1]
Небольшое скетч, демонстрирующий, как при помощи библиотеки LedControl и платы Arduino управлять матрицей светодиодов. Рекомендуется использовать матрицу размерами как минимум 5 на 7 светодиодов, но подойдет и матрица меньшего размера, но показываемые символы получатся обрезанными.
Обратите особое внимание на код инициализации в блоке setup(). Если вы не выведете MAX72xx из энергосберегающего режима при помощи функции shutdown() или если забудете вызвать функцию setIntensivity(), чтобы настроить яркость, светодиоды останутся темными, даже если скетч запустится без ошибок.
Во всем остальном код довольно прост. Функции rows(), columns() и single() демонстрируют разные способы обновления матрицы. Более красивая функция writeArduinoMatrix() здесь для того, чтобы показать, как управлять небольшим текстовым дисплеем, если у вас есть несколько лишних MAX72xx.
Внимание! Номера контактов к коде нужно поменять на те, что соответствуют вашему проекту.
Код
// подключаем библиотеку (это нужно делать всегда):
#include "LedControl.h"
/*
Теперь настраиваем объект LedControl.
Эти номера контактов, возможно, не будут работать в вашем проекте.
Если необходимо, поменяйте их.
12-ый контакт подключен к DataIn.
11-ый контакт подключен к CLK.
10-ый контакт подключен к LOAD.
У нас есть только один MAX72XX.
*/
LedControl lc=LedControl(12,11,10,1);
/* Делаем небольшую задержку между обновлениями дисплея. */
unsigned long delaytime=100;
void setup() {
/*
По умолчанию при запуске у MAX72XX включается энергосберегающий
режим, поэтому мы должны его «разбудить».
*/
lc.shutdown(0,false);
/* Задаем среднюю яркость. */
lc.setIntensity(0,8);
/* Очищаем дисплей. */
lc.clearDisplay(0);
}
/*
Эта функция будет показывать на матрице символы для
Слова «Arduino» – один за другим (чтобы видеть полные
символы, размер матрицы должен быть как минимум 5 на 7).
*/
void writeArduinoOnMatrix() {
/* Данные для символов. */
byte a[5]={B01111110,B10001000,B10001000,B10001000,B01111110};
byte r[5]={B00111110,B00010000,B00100000,B00100000,B00010000};
byte d[5]={B00011100,B00100010,B00100010,B00010010,B11111110};
byte u[5]={B00111100,B00000010,B00000010,B00000100,B00111110};
byte i[5]={B00000000,B00100010,B10111110,B00000010,B00000000};
byte n[5]={B00111110,B00010000,B00100000,B00100000,B00011110};
byte o[5]={B00011100,B00100010,B00100010,B00100010,B00011100};
/* Теперь показываем их один за одним с определенной задержкой. */
lc.setRow(0,0,a[0]);
lc.setRow(0,1,a[1]);
lc.setRow(0,2,a[2]);
lc.setRow(0,3,a[3]);
lc.setRow(0,4,a[4]);
delay(delaytime);
lc.setRow(0,0,r[0]);
lc.setRow(0,1,r[1]);
lc.setRow(0,2,r[2]);
lc.setRow(0,3,r[3]);
lc.setRow(0,4,r[4]);
delay(delaytime);
lc.setRow(0,0,d[0]);
lc.setRow(0,1,d[1]);
lc.setRow(0,2,d[2]);
lc.setRow(0,3,d[3]);
lc.setRow(0,4,d[4]);
delay(delaytime);
lc.setRow(0,0,u[0]);
lc.setRow(0,1,u[1]);
lc.setRow(0,2,u[2]);
lc.setRow(0,3,u[3]);
lc.setRow(0,4,u[4]);
delay(delaytime);
lc.setRow(0,0,i[0]);
lc.setRow(0,1,i[1]);
lc.setRow(0,2,i[2]);
lc.setRow(0,3,i[3]);
lc.setRow(0,4,i[4]);
delay(delaytime);
lc.setRow(0,0,n[0]);
lc.setRow(0,1,n[1]);
lc.setRow(0,2,n[2]);
lc.setRow(0,3,n[3]);
lc.setRow(0,4,n[4]);
delay(delaytime);
lc.setRow(0,0,o[0]);
lc.setRow(0,1,o[1]);
lc.setRow(0,2,o[2]);
lc.setRow(0,3,o[3]);
lc.setRow(0,4,o[4]);
delay(delaytime);
lc.setRow(0,0,0);
lc.setRow(0,1,0);
lc.setRow(0,2,0);
lc.setRow(0,3,0);
lc.setRow(0,4,0);
delay(delaytime);
}
/*
Эта функция включает несколько светодиодов, находящихся в одном ряду.
Заданный паттерн будет повторяться в каждом ряду.
Кроме того, паттерн будет моргать в соответствии с номером ряда.
То есть ряд номер 4 (индекс 3) будет моргать 4 раза и т.д.
*/
void rows() {
for(int row=0;row<8;row++) {
delay(delaytime);
lc.setRow(0,row,B10100000);
delay(delaytime);
lc.setRow(0,row,(byte)0);
for(int i=0;i<row;i++) {
delay(delaytime);
lc.setRow(0,row,B10100000);
delay(delaytime);
lc.setRow(0,row,(byte)0);
}
}
}
/*
Включает несколько светодиодов, находящихся в одном столбце.
Заданный паттерн будет повторяться в каждом столбце.
Кроме того, паттерн будет моргать в соответствии с номером столбца.
То есть столбец номер 4 (индекс 3) будет моргать 4 раза и т.д.
*/
void columns() {
for(int col=0;col<8;col++) {
delay(delaytime);
lc.setColumn(0,col,B10100000);
delay(delaytime);
lc.setColumn(0,col,(byte)0);
for(int i=0;i<col;i++) {
delay(delaytime);
lc.setColumn(0,col,B10100000);
delay(delaytime);
lc.setColumn(0,col,(byte)0);
}
}
}
/*
Эта функция поочередно включает все светодиоды в матрице.
Кроме того, светодиод будет моргать в соответствии с номером ряда.
То есть ряд номер 4 (индекс 3) будет моргать 4 раза и т.д.
*/
void single() {
for(int row=0;row<8;row++) {
for(int col=0;col<8;col++) {
delay(delaytime);
lc.setLed(0,row,col,true);
delay(delaytime);
for(int i=0;i<col;i++) {
lc.setLed(0,row,col,false);
delay(delaytime);
lc.setLed(0,row,col,true);
delay(delaytime);
}
}
}
}
void loop() {
writeArduinoOnMatrix();
rows();
columns();
single();
}
См.также
Внешние ссылки
Arduino продукты | |
---|---|
Начальный уровень | Arduino Uno • Arduino Leonardo • Arduino 101 • Arduino Robot • Arduino Esplora • Arduino Micro • Arduino Nano • Arduino Mini • Arduino Starter Kit • Arduino Basic Kit • MKR2UNO • TFT-дисплей Arduino |
Продвинутые функции | Arduino Mega 2560 • Arduino Zero • Arduino Due • Arduino Mega ADK • Arduino Pro • Arduino Motor Shield • Arduino USB Host Shield • Arduino Proto Shield • MKR Proto Shield • MKR Proto Large Shield • Arduino ISP • Arduino USB 2 Serial Micro • Arduino Mini USB Serial Adapter |
Интернет вещей | Arduino Yun • Arduino Ethernet • Arduino MKR1000 • Arduino WiFi 101 Shield • Arduino GSM Shield V2 • Arduino WiFi Shield • Arduino Wireless SD Shield • Arduino Wireless Proto Shield • Arduino Ethernet Shield V2 • Arduino Yun Shield • Arduino MKR1000 Bundle |
Носимые устройства | Arduino Gemma • Lilypad Arduino Simple • Lilypad Arduino Main Board • Lilypad Arduino USB • LilyPad Arduino SimpleSnap |
3D-печать | Arduino Materia 101 |
Устаревшие устройства | - |
Примеры Arduino | |
---|---|
Стандартные функции | |
Основы |
|
Цифровой сигнал |
|
Аналоговый сигнал |
|
Связь |
|
Управляющие структуры |
|
Датчики |
|
Дисплей |
Примеры, объясняющие основы управления дисплеем:
|
Строки |
|
USB (для Leonardo, Micro и Due плат) |
В этой секции имеют место примеры, которые демонстрируют использование библиотек, уникальных для плат Leonardo, Micro и Due.
|
Клавиатура |
|
Мышь |
|
Разное |
- Страницы, использующие повторяющиеся аргументы в вызовах шаблонов
- Справочник языка Arduino
- Arduino
- Перевод от Сubewriter
- Проверка:myagkij
- Оформление:myagkij
- Редактирование:myagkij
- Страницы, где используется шаблон "Навигационная таблица/Телепорт"
- Страницы с телепортом
- Пример
- Примеры
- Пример программирования Arduino
- Примеры программирования Arduino