Arduino:Примеры/FadeScope
Материал из Онлайн справочника
Перейти к навигацииПерейти к поиску
Содержание | Знакомство с Arduino | Продукты | Основы | Справочник языка Arduino | Примеры | Библиотеки | Хакинг | Изменения | Сравнение языков Arduino и Processing |
Перевод: Максим Кузьмин
Проверка/Оформление/Редактирование: Мякишев Е.А.
Простой осциллограф[1]
Это скетч для библиотеки TLC5940 и платы Arduino, который демонстрирует, как при помощи чипа TLC5940 сделать из светодиодов простой осциллограф. Он также показывает, как осуществить постепенное затухание светодиода.
Код
/*
Простой осциллограф
Сканирует все каналы, считывает аналоговое значение на 0-ом аналоговом контакте, умножает его на 4, а затем задает это значение в виде ШИМ на выходных контактах TLC. Пока каналы сканируются, значение будет постепенно затухать, пока не достигнет «0».
Настройки оборудования смотрите в примере «Базовое использование».
Создан 2009-02-03 Алексом Леоне (Alex Leone; acleone ~AT~ gmail.com).
*/
#include "Tlc5940.h"
#include "tlc_fades.h"
// какой аналоговый контакт будем использовать:
#define ANALOG_PIN 0
// сколько времени будет длиться импульс, подаваемый на светодиоды:
#define SCOPE_PERIOD (1000 * NUM_TLCS)
#define LED_PERIOD SCOPE_PERIOD / (NUM_TLCS * 16)
TLC_CHANNEL_TYPE channel;
void setup()
{
Tlc.init();
}
void loop()
{
uint32_t lastMillis = millis();
tlc_addFade(channel, // канал светодиода
analogRead(ANALOG_PIN) * 4, // стартовое значение для затухания (0-4095)
0, // конечное значение для затухания (0-4095)
lastMillis + 2, // стартовое количество миллисекунд
lastMillis + (uint16_t)SCOPE_PERIOD / 4 // конечное количество миллисекунд
);
if (channel++ == NUM_TLCS * 16) {
channel = 0;
}
uint32_t currentMillis;
do {
currentMillis = millis();
tlc_updateFades(currentMillis);
} while (currentMillis - lastMillis <= LED_PERIOD);
}