Arduino:Примеры/FadeScope: различия между версиями

Материал из Онлайн справочника
Перейти к навигацииПерейти к поиску
Нет описания правки
 
Нет описания правки
 
Строка 63: Строка 63:


<references />
<references />
{{Навигационная таблица/Портал/Arduino}}
[[Категория:Пример]]
[[Категория:Пример]]
[[Категория:Примеры]]
[[Категория:Примеры]]
[[Категория:Пример программирования Arduino]]
[[Категория:Пример программирования Arduino]]
[[Категория:Примеры программирования Arduino]]
[[Категория:Примеры программирования Arduino]]

Текущая версия от 12:34, 8 июля 2023

Перевод: Максим Кузьмин
Проверка/Оформление/Редактирование: Мякишев Е.А.


Простой осциллограф[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);
}

См.также

Внешние ссылки