Cat hungry.png
Здравствуйте! Собираем деньги на перевод материалов по электронике(https://www.allaboutcircuits.com/education/). Реквизиты указаны здесь.

Arduino:Примеры/FadeScope

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

Перевод: Максим Кузьмин (Cubewriter)
Перевел 2686 статей для сайта.

Контакты:

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


Простой осциллограф[1]

Это скетч для библиотеки TLC5940 и платы Arduino, который демонстрирует, как при помощи чипа TLC5940 сделать из светодиодов простой осциллограф. Он также показывает, как осуществить постепенное затухание светодиода.

Код

  1. /*
  2.  
  3. Простой осциллограф
  4.  
  5. Сканирует все каналы, считывает аналоговое значение на 0-ом аналоговом контакте, умножает его на 4, а затем задает это значение в виде ШИМ на выходных контактах TLC. Пока каналы сканируются, значение будет постепенно затухать, пока не достигнет «0».
  6.  
  7. Настройки оборудования смотрите в примере «Базовое использование».
  8. Создан 2009-02-03 Алексом Леоне (Alex Leone; acleone ~AT~ gmail.com).
  9.  
  10. */
  11.  
  12. #include "Tlc5940.h"
  13. #include "tlc_fades.h"
  14.  
  15. // какой аналоговый контакт будем использовать:
  16. #define ANALOG_PIN      0
  17.  
  18. // сколько времени будет длиться импульс, подаваемый на светодиоды:
  19. #define SCOPE_PERIOD    (1000 * NUM_TLCS)
  20. #define LED_PERIOD      SCOPE_PERIOD / (NUM_TLCS * 16)
  21.  
  22. TLC_CHANNEL_TYPE channel;
  23.  
  24. void setup()
  25. {
  26.   Tlc.init();
  27. }
  28.  
  29. void loop()
  30. {
  31.   uint32_t lastMillis = millis();
  32.   tlc_addFade(channel,                      // канал светодиода
  33.               analogRead(ANALOG_PIN) * 4,   // стартовое значение для затухания (0-4095)
  34.               0,                            // конечное значение для затухания (0-4095)
  35.               lastMillis + 2,               // стартовое количество миллисекунд
  36.               lastMillis + (uint16_t)SCOPE_PERIOD / 4  // конечное количество миллисекунд
  37.              );
  38.   if (channel++ == NUM_TLCS * 16) {
  39.     channel = 0;
  40.   }
  41.   uint32_t currentMillis;
  42.   do {
  43.     currentMillis = millis();
  44.     tlc_updateFades(currentMillis);
  45.   } while (currentMillis - lastMillis <= LED_PERIOD);
  46. }

См.также

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

  1. github.com - FadeScope.pde