Arduino:Примеры/UsingProgmem
Материал из Онлайн справочника
Перейти к навигацииПерейти к поиску
Содержание | Знакомство с Arduino | Продукты | Основы | Справочник языка Arduino | Примеры | Библиотеки | Хакинг | Изменения | Сравнение языков Arduino и Processing |
Перевод: Максим Кузьмин
Проверка/Оформление/Редактирование: Мякишев Е.А.
Использование PROGMEM[1]
Это скетч для библиотеки TLC5940 и платы Arduino, который демонстрирует, как при помощи чипа TLC5940 вместо памяти RAM использовать память PROGMEM. Это позволяет сэкономить ресурсы памяти RAM.
Код
/*
Использование PROGMEM
Задает монохромные значения из PROGMEM, чтобы не использовать RAM.
Если хотите поиграться с несколькими «кадрами» (для анимации),
смотрите пример «Базовые анимации».
Настройки оборудования смотрите в примере «Базовое использование».
Создан 2009-02-03 Алексом Леоне (Alex Leone; acleone ~AT~ gmail.com).
*/
#include "Tlc5940.h"
// для использования расширенных функций (они начинаются с приставки
«tlc_...») требуется также подключить этот заголовок:
#include "tlc_progmem_utils.h"
/*
Это массив в памяти PROGMEM. Она вмещает 16 килобайт памяти,
тогда как в SRAM для обычных переменных отведено 1025 байта.
Формата массива следующий:
GS_DUO(OUT15, OUT14), ... GS_DUO(OUT1, OUT0)
Если у вас больше одного TLC, то формат следующий:
GS_DUO(TLC2.OUT15, TLC2.OUT14), ... GS_DUO(TLC2.OUT1, TLC2.OUT0),
GS_DUO(TLC1.OUT15, TLC1.OUT14), ... GS_DUO(TLC1.OUT1, TLC1.OUT0)
Паттерн ниже работает только с одним TLC. Для каждого нового TLC
этот паттерн, состоящий из 4-ех строчек, придется скопировать
и вставить по-новому. Не забывайте про фигурные скобки.
*/
uint8_t gsArray1[NUM_TLCS * 24] PROGMEM = {
GS_DUO((4095 * 16)/16, (4095 * 15)/16), GS_DUO((4095 * 14)/16, (4095 * 13)/16),
GS_DUO((4095 * 12)/16, (4095 * 11)/16), GS_DUO((4095 * 10)/16, (4095 * 9)/16),
GS_DUO((4095 * 8)/16, (4095 * 7)/16), GS_DUO((4095 * 6)/16, (4095 * 5)/16),
GS_DUO((4095 * 4)/16, (4095 * 3)/16), GS_DUO((4095 * 2)/16, (4095 * 1)/16),
};
void setup()
{
Tlc.init();
}
void loop()
{
// показываем паттерн (по мере перехода от одного выходного контакта
// к другому яркость будет затухать):
tlc_setGSfromProgmem(gsArray1);
Tlc.update();
// делаем затухание каждого канала до «0»:
for (TLC_CHANNEL_TYPE channel = 0; channel < NUM_TLCS * 16; channel++) {
int16_t initialValue = Tlc.get(channel);
while (initialValue > 0) {
initialValue -= 5;
if (initialValue < 0) {
initialValue = 0;
}
Tlc.set(channel, initialValue);
// перед тем, как продолжать, ждем, пока данные будут
// отправлены на TLC:
while (Tlc.update());
}
}
}
См.также
Внешние ссылки
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