Электронный компонент:Rainbowduino с чипом ATmega328: различия между версиями
Нет описания правки |
Нет описания правки |
||
(не показана 1 промежуточная версия этого же участника) | |||
Строка 2: | Строка 2: | ||
{{Перевод от Сubewriter}} | {{Перевод от Сubewriter}} | ||
{{Myagkij-редактор}} | {{Myagkij-редактор}} | ||
=Rainbowduino с чипом ATmega328<ref>[http://wiki.seeed.cc/Rainbowduino_LED_driver_platform-ATmega328/ wiki.seeed.cc - Rainbowduino LED driver platform - ATmega328]</ref>= | =Rainbowduino с чипом ATmega328<ref>[http://wiki.seeed.cc/Rainbowduino_LED_driver_platform-ATmega328/ wiki.seeed.cc - Rainbowduino LED driver platform - ATmega328]</ref>= | ||
Строка 632: | Строка 632: | ||
<references /> | <references /> | ||
{{Навигационная таблица/Портал/Arduino}} | |||
[[Категория:Rainbowduino с чипом ATmega328]] | [[Категория:Rainbowduino с чипом ATmega328]] |
Текущая версия от 12:17, 8 июля 2023
Rainbowduino с чипом ATmega328[1]
Плата Rainbowduino с чипом ATmega328 – это плата-контроллер, которая совместима с Arduino и оснащена компонентами для управления светодиодами. Она способна управлять матрицей светодиодов 8х8 (в режиме общего анода).
Функционал
- Не требуются внешние устройства
- 24 канала с постоянной силой тока (120 мА)
- 8 каналов токоподающего драйвера (500 мА)
- Диапазон выходного напряжения – от 6.5 до 12 вольт (постоянный ток)
- Наличие GPIO-контактов и АЦП
- Аппаратные UART и I2C
- Возможность каскадного подключения
- Легкий вес и маленький форм-фактор
Купить Rainbowduinoс чипом ATmega328 можно тут.
Автономный режим
Необходимое оборудование:
- Одна плата Rainbowduino
- Одна матрица RGB-светодиодов
Это самый простой режим, который не требует подключения внешних устройств (за исключением TTL-адаптера для загрузки прошивки). Содержимое матрицы RGB-светодиодов будет генерироваться самой Rainbowduino.
Варианты использования:
- Проигрывание простых анимаций в реальном времени, рассчитываемых Rainbowduino
- Проигрывание заранее сохраненных анимаций (ограничено 32 Кб памяти ROM на Rainbowduino)
Режим UART
Необходимое оборудование:
- Одна плата Rainbowduino
- Одна матрица RGB-светодиодов
- Один конвертер UART-TTL
- Одно устройство для отправки UART-данных (ПК, Arduino и т.д.)
В этом режиме компьютер отправляет данные (для матрицы светодиодов) на Rainbowduino. Поскольку у Rainbowduino нет USB-коннектора, но есть TTL-коннектор, вам также понадобится конвертер для преобразования UART в TTL (BusPirate, UartSBee, Arduino...).
Варианты использования:
- Анимации, генерируемые на ПК или Arduino, а затем передаваемые на светодиодную матрицу
Режим I2C
Необходимое оборудование:
- Одна плата Rainbowduino
- Одна матрица RGB-светодиодов
- Одно ведущее I2C-устройство (к примеру, Arduino)
- Несколько кабелей
В этом режиме ПК передает данные (для матрицы светодиодов) на несколько Rainbowduino. Стоить уточнить, что если вы используете Arduino с FTDI-адаптером, конвертирующим USB в Serial (Duemilanove, Diecimila и т.д.), то данные будут передаваться с задержкой примерно 16 мс. Если вы используете более новую Arduino Uno, то задержка будет меньше – примерно 4 мс.
Варианты использования:
- ПК или Arduino генерирует данные для отображения на нескольких светодиодных матрицах
Каскадное подключение через I2C
Rainbowduino разработана с прицелом на быстрое каскадное подключение. Когда платы подключены друг к другу, вторая плата начинает получать питание, а вы получаете возможность управлять обеими платами через I2C. Обратите внимание, что каждой плате нужно присвоить уникальный I2C-адрес.
Во-первых, приготовьте Rainbowduino:
Во-вторых, подсоедините к ней вторую Rainbowduino, которая уже подключена к питанию:
Характеристики
- Микропроцессор – ATmega328
- Размер платы: 60 мм х 60 мм х 1,6 мм
- Индикаторы – сброс, питание, 13-ый контакт
- Питание – от 6.5 до 12 вольт (постоянный ток); рекомендуется 9 вольт (постоянный ток)
- Коннекторы для питания – 2-контакные винтовые зажимы JST, 3,-миллиметровые DC-разъемы
- Коннекторы для питания при каскадном подключении – винтовые зажимы
- Программные интерфейсы – UART и ISP
- Сокеты для светодиодной матрицы – 32 шт.
- Расширительные сокеты – два 2,54-миллиметровых согнутых гребешка (8-контактный и 3-контактный)
- Протоколы коммуникации – I2C и UART
- RHOS – да
- Входящее напряжение – между 6.5 и 12 вольтами
- Общее энергопотребление – между 600 и 2000 мА
- Каналы с постоянной силой тока (катод) – 24 шт.
- Сила тока на каждом канале с постоянной силой тока – между 20 и 120 мА
- Сила тока на каналах токоподающего драйвера – 500 мА
- Напряжение на каналах токоподающего драйвера – между 9 и 12 вольтами
- Каналы токоподающего драйвера – 8 шт.
- Максимальное количество светодиодов, которыми можно управлять – 192 шт.
- Время отклика цепи – 10 нс
- Цветовое разрешение на каждом RGB-светодиоде – 4096
- Скорость передачи данных на UART – 115200 бод
Совместимость светодиодных матриц
Перед подключением светодиодной матрицы к сквозным отверстиям Rainbowduino убедитесь, что эта матрица совместима с Rainbowduino. Беспокоиться нужно насчет матриц, у которых распиновка организована так, что светодиоды одного и того же цвета расположены кластером. Подробнее смотрите на схеме и фото, которые приложены ниже. Впрочем, последовательность цветов можно поменять – благодаря тому, что управляющая логика открыта и легко перепрограммируема.
Rainbowduino обладает двумя важными преимуществами. Во-первых, максимальное количество светодиодов, которыми она может управлять, составляет 192. Во-вторых, постоянная сила тока на ее каналах может достигать 120 мА. Благодаря этому плата способна управлять не только одной матрицей, но и более массивными системами светодиодов.
Сила выходного тока на каждом канале (Iвых) задается внешним резистором (Rвн). Отношение между Iвых и Rвн показано на схеме ниже. Более подробно смотрите в даташите MBI5168. Чтобы уменьшить силу выходного тока (по умолчанию нижняя граница составляет 20 мА), потенциометр (1 кОм) нужно крутить по часовой стрелке, а чтобы увеличить – против часовой. Обратите внимание, что диапазон поворота потенциометра составляет только один круг, поэтому использовать его нужно с осторожностью. Если приложить к регулировке чрезмерное усилие, потенциометр может сломаться, после чего он начнет прокручиваться без ограничений. В результате настройку силы выходного тока можно будет выполнить только с помощью мультиметра :)
Наличие потенциометра значит, что вы можете сконструировать собственную матрицу светодиодов, не используя дополнительные резисторы.
Демонстрационный проект
Необходимое оборудование:
- Одна плата Rainbowduino
- Одна матрица RGB-светодиодов с общим анодом
- Одна плата Arduino
Подготовительные работы
Подключите матрицу RGB-светодиодов к Rainbowduino. «Контакт 1» должен быть подключен к красному блоку.
Примечание: Контакт 1 имеет квадратную точку пайки, а у других контактов она круглая.
Загрузка прошивки
Загрузить прошивку на Rainbowduino можно разными способами – при помощи Arduino, модуля UartSBee и программы BusPirate.
Загрузка прошивки с помощью Arduino
Чтобы использовать Arduino в качестве программатора (т.е. устройства для загрузки прошивки на Rainbowduino), нужно «очистить» Arduino. Для этого на Arduino нужно загрузить пустой скетч, который показан ниже:
void setup() {}
void loop() {}
Теперь откройте в IDE Arduino скетч, который хотите загрузить на Rainbowduino, а затем кликните в IDE Arduino на Инструменты > Плата > Arduino Duemilanove or Nano w/ ATmega328 (Tools > Board > Arduino Duemilanove or Nano w/ ATmega328). Далее загрузите прошивку на Rainbowduino.
Ниже показана схема подключения Rainbowduino, Arduino и источника питания (батареи):
В данном случае используется внешний источник питания, но вы можете воспользоваться и контактом 5V на Arduino.
Примечание: Если вы используете Rainbowduino V1, то в IDE Arduino в меню Инструменты > Плата (Tools > Board) нужно выбрать плату «Arduino Diecimila, Duemilanove, or Nano w/ ATmega168».
Arduino | Rainbowduino |
---|---|
RESET | DTR |
GND | GND |
RX | RX |
TX | TX |
Загрузка прошивки с помощью UartSBee
Фотографии ниже показывают, как выполнить подключение Rainbowduino и UartSBee:
При подключении модуля UartSBee к шине USB он должен зарегистрировать новый последовательный порт. Теперь просто загрузите через него свою прошивку.
Загрузка прошивки/загрузчика с помощью BusPirate
В этом разделе будет рассказано о трех методах программирования при помощи BusPirate:
Внимание! Чтобы продолжить, отключите Rainbowduino от матрицы и питания.
Шаг 1.
Для использования BusPirate понадобится новая версия avrdude. Я использую версию 5.10, которая распознает программную версию «-c buspirate». Это можно проверить при помощи:
./avrdude -c buspirate -C ./avrdude.conf
Если эта команда пожалуется на программатор, тогда вам нужна более новая версия BusPirate.
Шаг 2.
Подключите BusPirate к ISP-коннектору Rainbowduino. Схему подключения смотрите в таблице ниже:
BusPirate | ISP | Номер контакта на ISP |
---|---|---|
GND | GND | 6 |
+5V | Vcc | 2 |
CS | RESET | 5 |
MOSI | MOSI | 4 |
MISO | MISO | 1 |
SCL/CLK | SCK | 3 |
Шаг 3.
Найдите подходящий загрузчик (я использую маленькую прошивку optiboot). Скопируйте этот файл в только что скомпилированную директорию «avrdude».
Шаг 4.
Загрузите прошивку на ATmega328P при помощи:
./avrdude -v -c buspirate -p m328p -C ./avrdude.conf -P /dev/ttyUSB0 -U flash:w:optiboot_atmega328.hex
Это займет очень много времени...
Я начал с того, что загрузил прошивку, вообще не используя загрузчик. Все прошло успешно – трюк в том, чтобы использовать HEX-файлы из IDE Arduino. В версии 0.22 для Linux они расположены не в папке скетчей, а в «/tmp/buildXXXXXXXXXXXX». Программатор подключать не нужно. Чтобы загрузить прошивку просто нажмите на кнопку «Загрузка». Если хотите, чтобы IDE Arduino показывала диагностическую информацию, нажимая на кнопку «Загрузка», также нажмите на клавишу ⇧ Shift .
Далее я попробовал загрузить прошивку при помощи загрузчика. Для этого нужно воспользоваться «прозрачным» последовательным интерфейсом BusPirate (термин «прозрачный» означает, что при переходе через интерфейс данные не модифицируются и не дополняются, а передаются как есть). Задайте скорость передачи данных на 115200 бод, а затем введите макрос «(3)», чтобы активировать «прозрачный» режим. После этого BusPirate начнет вести себя как конвертер USB-Serial (впрочем, вместо BusPirate можно использовать любой другой FTDI-чип, умеющий конвертировать USB в Serial). Проблема с BusPirate в том, что у этого устройства нет линии DTR для того, чтобы выполнить сброс Arduino. Вам придется самостоятельно выверять время для сброса, а затем делать его вручную. Лучше всего нажать на кнопку сброса сразу после начала загрузки.
HiZ>m
1. HiZ
2. 1-WIRE
3. UART
4. I2C
5. SPI
6. JTAG
7. RAW2WIRE
8. RAW3WIRE
9. PC KEYBOARD
10. LCD
(1) >3
Mode selected
Set serial port speed: (bps)
1. 300
2. 1200
3. 2400
4. 4800
5. 9600
6. 19200
7. 38400
8. 57600
9. 115200
10. 31250 (MIDI)
(1) >9
Data bits and parity:
1. 8, NONE *default
2. 8, EVEN
3. 8, ODD
4. 9, NONE
(1) >
Stop bits:
1. 1 *default
2. 2
(1) >
Receive polarity:
1. Idle 1 *default
2. Idle 0
(1) >
Select output type:
1. Open drain (H=Hi-Z, L=GND)
2. Normal (H=3.3V, L=GND)
(1) >2
READY
UART>(3)
UART bridge. Space continues, anything else exits.
Reset to exit.
После этого Arduino можно программировать при помощи загрузчика:
./avrdude -v -c stk500v1 -p m328p -b 115200 -F -C ./avrdude.conf -P /dev/ttyUSB0 -U flash:w:Rainbow_Plasma.cpp.hex
Еще более продвинутый метод – пропатчить avrdude в файле «arduino.c». По умолчанию BusPirate отправляет сигнал «rts» с неправильной полярностью, но это можно исправить, поменяв «1» на «0», а «0» на «1».
После этого для программирования нужно будет использовать «arduino», а не «stk500v1».
static int arduino_open(PROGRAMMER * pgm, char * port)
{
fprintf(stderr, "arduino_open...\n");
strcpy(pgm->port, port);
serial_open(port, pgm->baudrate? pgm->baudrate: 115200, &pgm->fd);
/* «очищаем» линии DTR и RTS (т.е. выставляем их на LOW),
* чтобы разгрузить конденсатор RESET (например, в Arduino)
*/
serial_set_dtr_rts(&pgm->fd, 1);
usleep(50*1000);
/* снова выставляем DTR и RTS на HIGH */
serial_set_dtr_rts(&pgm->fd, 0);
usleep(50*1000);
/* «откачиваем» все входные внешние данные */
stk500_drain(pgm, 0);
if (stk500_getsync(pgm) < 0)
return -1;
return 0;
}
Примечание: Чтобы изменить тип программатора, который использует IDE Arduino, отредактируйте файл «boards.txt».
Источники:
- Программирование AVR с помощью BusPirate (1)
- Программирование AVR с помощью BusPirate (2)
- Страница optiboot на Google Code
Прошивка Neorainbowduino
Загрузка прошивки на Rainbowduino осуществляется при помощи Neorainbowduino – это многосоставная прошивка, которая состоит из прошивки для Arduino, прошивки для Rainbowduino, а также библиотеки «neorainbowduino». В результате, используя программу на языке Processing, вы сможете отправлять данные на Arduino через последовательный интерфейс, а Arduino, в свою очередь, будет отправлять эти данные на Rainbowduino.
Более подробно о Neorainbowduino можно почитать тут.
Функционал
- Поддержка I2C (т.е. возможность работать с несколькими Arduino)
- Библиотека «neorainbowduino» (чтобы можно было управлять Rainbowduino через Processing)
- Отправка полных кадров из Processing на Arduino
- Отправка кадров из Processing на RGB-матрицу. Размер каждого кадра – 8х8, а разрешение – 12 бит (4096 цветов). Преобразование цветов управляется библиотекой
- Библиотека «neorainbowduino» оптимизирована таким образом, что на Rainbowduino, если потребуется, можно будет отправлять только кадры (это позволяет сэкономить 50% трафика, но это, разумеется, зависит от «веса» кадров)
- Исправлена проблема с двойной буферизацией (устраняет мерцание)
- Добавлен сканер шины I2C (позволяет найти Rainbowduino, если вы забыли ее адрес)
Поскольку эта прошивка позволяет использовать Processing для управления Rainbowduino, очевидно, что вам понадобится скачать Processing. Сделать это можно по ссылке на этой странице.
Если вам не нравится Processing (JAVA), то у вас есть и другой вариант. Здесь описывается использование autoitscript для отправки данных на Arduino.
Установка патча для IDE Arduino
Поскольку прошивка neorainbowduino отправляет через шину I2C полные кадры (92 байта), нам нужно пропатчить размер I2C-буфера для Arduino (чтобы оптимизировать скорость передачи данных). Надеюсь, в ближайшем будущем в Arduino добавят поддержку буферов разного размера. Перед установкой патча убедитесь, что IDE Arduino закрыта.
Файл, который нужно пропатчить – «Java/libraries/Wire/utility/twi.h»
Цель – увеличить скорость шины I2C со 100 до 400 кГц; увеличить размер буфера с 32 до 98 байт
Как файл выглядит до патча:
#ifndef TWI_FREQ
#define TWI_FREQ 100000L
#endif
#ifndef TWI_BUFFER_LENGTH
#define TWI_BUFFER_LENGTH 32
#endif
Как файл должен выглядеть после патча:
#ifndef TWI_FREQ
#define TWI_FREQ **400000L**
#endif
#ifndef TWI_BUFFER_LENGTH
#define TWI_BUFFER_LENGTH **98**
#endif
Файл, который нужно пропатчить – «Java/libraries/Wire/Wire.h»
Задача – увеличить размер последовательного буфера с 32 до 98 байтов
Строчка до патча:
#define BUFFER_LENGTH 32
Строчка после патча:
#define BUFFER_LENGTH **98**
Загрузка прошивки на Rainbowduino
Файл прошивки, которую нужно загрузить – это «rainbowduinoFw/Rainbow_V2_71/Rainbow_V2_71.pde» (см. главу «Загрузка прошивки» выше).
Примечание: Прошивка коммуницирует при помощи протокола I2C, поэтому каждой Rainbowduino потребуется уникальный I2C-адрес. Этот адрес можно присвоить, отредактировав файл «Rainbowduino.h» (#define I2C_DEVICE_ADDRESS 0x06). Поэтому, если вы планируете загрузить эту прошивку на несколько Rainbowduino, не забудьте поменять этот адрес.
Загрузка прошивки на Arduino
Отключите линии RX/TX между Rainbowduino и Arduino. Загрузите на Arduino прошивку «arduinoFw/neoLed/neoLed.pde».
Взаимодействие с Rainbowduino
Во-первых, вам понадобится Arduino (она будет работать в качестве шлюза Serial-I2C) и Rainbowduino с I2C-адресом «0x06».
Rainbowduino и Arduino должны быть подключены друг к другу следующим образом:
На этой схеме используется внешний источник питания, но вы можете также воспользоваться контактом 5V на Arduino. Информацию о подключаемых контактах смотрите в таблице ниже:
Arduino | Rainbowduino |
---|---|
RESET | DTR |
GND | GND |
Входной аналоговый контакт 4 | SDA |
Входной аналоговый контакт 5 | SCL |
Установка библиотеки Processing
После установки Processing вам также нужно установить библиотеку «neorainbowduino». Ее можно найти в папке «processingLib\src\distribution\neorainbowduino-x.y\download». Распакуйте ZIP-файл в домашнюю папку Processing (более подробные инструкции смотрите в файле «Readme.txt»).
Открыв Processing, импортируйте библиотеку «neorainbowduino»:
Демо-скетч
Ниже простой пример Processing-скетча, отправляющий на Rainbowduino прямоугольники случайного размера:
import processing.serial.*;
import com.neophob.lib.rainbowduino.test.*;
import com.neophob.lib.rainbowduino.*;
static final int SIZE = 400;
Rainbowduino r;
void setup() {
frameRate(15);
background(0);
size(SIZE, SIZE);
// инициализируем Rainbowduino:
List<Integer> list = new ArrayList<Integer>();
list.add(6); // используем Rainbowduino с идентификатором «6»
try {
r = new Rainbowduino(this, list);
System.out.println("ping: "+r.ping());
} catch (Exception e) {
println("FAILED to open serial port!!");
// "Не удалось открыть последовательный порт!!"
e.printStackTrace();
}
smooth();
noStroke();
}
void draw() {
// «рисуем» простые фигуры:
color c1 = color(128+(int)random(64), 128, (int)random(255));
fill(c1);
int size = 80+(int)random(80);
int x = (int)random(SIZE);
int y = (int)random(SIZE);
rect(x, y, size, size);<br>
// отправляем PApplet в библиотеку «neorainbowduino»,
// а также ведущему устройству с идентификатором «6»:
r.sendRgbFrame((byte)6, this);
}
Как работает изменение размера изображения
Размер изображения изменяется при помощи выравнивающего фильтра. Поэтому важно знать, что изображение должно быть правильно выровнено. Другими словами, результат будет выглядеть хорошо, если изображение можно будет поделить на «8».
Хорошее выравнивание:
Плохое выравнивание:
Прошивка mtXcontrol
mtXcontrol – это редактор, написанный на Processing, чтобы быстро создавать изображения на нескольких устройствах, оснащенных многоцветными светодиодными матрицами. Скачать его можно отсюда.
Прошивка Rainbowduino
Это еще одна прошивка для управления Rainbowduino. Скачать ее можно отсюда. Она обладает следующим функционалом:
- Двойная буферизация синхронизирована с частотой обновления
- Четыре вспомогательных буфера
- Использование высокоуровневых инструкций
- Возможность управлять несколькими устройствами
- Коммуникация через протокол I2C
- Постоянное сохранение данных в EEPROM
RainbowduinoDashboard
Это сторонняя прошивка для Rainbowduino. Скачать ее можно отсюда. Она обладает следующим функционалом:
- Понятная кодовая база, которую легко сопровождать (т.е. улучшать, оптимизировать, устранять дефекты и т.д.)
- Совместимость со стандартной прошивкой
- Поддержка режима UART (хост в виде Arduino не нужен – коммунницировать с Rainbowduino можно напрямую)
- Графические операции, использующие двойную буферизацию
- Программные часы реального времени
- Анимация управляется самой Rainbowduino
- Полный набор Windows-символов ANSI (CP1252)
- Использование команд высокого уровня
Эту прошивку можно изменить таким образом, чтобы она начала использовать шину I2C. Для этого нужно отредактировать всего один файл – «RainbowDash.pde».
Как работает прошивка
Схема микропроцессора ATmega 168/ATmega 328:
PORTD PORTB PORTC | ||
---|---|---|
Контакт 02 / PD0 / RXD | Контакт 14 / PB0 / INT0 | Контакт 23 / PC0 / SDI |
Контакт 03 / PD1 / TXD | Контакт 15 / PB1 / INT1 | Контакт 24 / PC1 / CLK |
Контакт 04 / PD2 / INT0 | Контакт 16 / PB2 / INT2 | Контакт 25 / PC2 / LE |
Контакт 05 / PD3 / INT19 | Контакт 17 / PB3 / INT3 | Контакт 26 / PC3 / OE |
Контакт 06 / PD4 / INT20 | Контакт 18 / PB4 / INT4 | Контакт 27 / PC4 / SDA |
Контакт 11 / PD5 / INT21 | Контакт 19 / PB5 / INT5/SCK | Контакт 28 / PC5 / SDL |
Контакт 12 / PD6 / INT22 | ||
Контакт 13 / PD7 / INT23 |
- PORTB. Эти биты привязаны к цифровым контактам 8-13 на Arduino. Два старших бита привязаны к контактам чипа, поэтому использовать их нельзя.
- PORTC. Эти биты привязаны к аналоговым контактам 0-5 на Arduino. Контакты 6 и 7 доступны только на Arduino Mini.
- PORTD. Эти биты привязаны к цифровым контактам 0-7 на Arduino.
Драйвер с постоянной силой тока
Этот драйвер использует 8-битный сдвиговый регистр MBI5168. Он конвертирует последовательные данные в параллельные данные. Все три MBI5168 имеют общие контакты LE, CLK и OE.
Название порта | Описание |
---|---|
OE | Порт с активным LOW. Открывает выходные драйверы для отбора тока. Если на OE подано LOW, это открывает выходные каналы, а если HIGH – закрывает (запирает). |
LE | Входной порт для строб-импульса (т.е. для тактового сигнала). Если на LE подано HIGH, последовательные данные передаются соответствующему регистру-защелке, а если LOW – данные «защелкиваются». |
SDI | Для ввода последовательных данных в сдвиговый регистр |
SDO | Для вывода последовательных данных на порт SDI следующего сдвигового регистра. |
R-EXT | Входной порт, который используется для подключения внешнего резистора, чтобы настроить силу выходного тока для всех выходных каналов. |
CLK | Входной порт для тактового сигнала. Сдвигает данные при переходе импульса в значение HIGH. |
Токоподающий драйвер
Сдвиг данных
Чтобы показать на светодиодной матрице полный кадр, на Rainbowduino нужно 128 раз вызвать функцию прерывания. Rainbowduino приходится иметь дело с 8 рядами светодиодов и 16 уровнями яркости. Чтобы нарисовать кадр, используется функция displayNextLine(), которая придает светодиодами сначала 1-ый уровень яркости, потом 2-ой и т.д., делая это со всеми 8 рядами светодиодной матрицы. Если умножить 8 на 16, получается как раз 128 циклов (т.е. 128 прерываний), которые нужны для того, чтобы «нарисовать» на матрице полный кадр.
Ниже показана светодиодная матрица после 32, 64, 96 и 128 циклов. Как видите, что с увеличением циклов увеличивается и яркость светодиодов:
Поддержка более 4096 цветов (12 бит)
Фабричная прошивка (и большинство сторонних прошивок) поддерживает 12-битное цветовое разрешение, но его можно увеличить:
Цветовое разрешение | Передаваемые данные | Уровни яркости |
---|---|---|
12 бит (4 бита на цвет), 4096 цветов | 96 байт (12 х 64 = 768 бит) | 16 |
15 бит (5 бит на цвет), 32768 цветов | 120 байт (15 х 64 = 960 бит) | 32 |
Использование 4 бит на цвет очень удобно для хранения данных – вы можете «упаковать» в байт два таких значения, что упрощает считывание цветовых данных из буфера. Использование 5 бит на цвет требует больше вычислительных ресурсов или более объемного буфера (для хранения 3 цветовых значений понадобится 2 байта, и в результате 1 бит остается незадействованным).
Чтобы добиться 15-битного разрешения, в прошивку нужно внести два изменения:
- Увеличить количество прерываний (потому что вместо 16 теперь 32 уровней яркости)
- Изменить сдвиговую функцию
Полезные ссылки
- Проект по созданию огромной матрицы из RGB-светодиодов
- Общая информация о Rainbowduino
- Даташит сдвигового регистра MBI5168
См.также
Внешние ссылки
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.
|
Клавиатура |
|
Мышь |
|
Разное |
- Страницы, использующие повторяющиеся аргументы в вызовах шаблонов
- Электронный компонент
- Перевод от Сubewriter
- Проверка:myagkij
- Оформление:myagkij
- Редактирование:myagkij
- Страницы, где используется шаблон "Навигационная таблица/Телепорт"
- Страницы с телепортом
- Rainbowduino с чипом ATmega328
- Платформа Arduino
- Arduino платформа
- Arduino