Arduino:Примеры/BasicAnimations

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

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


Базовые анимации[1]

Это скетч для библиотеки TLC5940 и платы Arduino, который демонстрирует, как при помощи чипа TLC5940 показать на 16 светодиодах определенную анимацию. Анимацию можно сделать самостоятельно при помощи маленькой программы на Java, которая называется AnimationCreator и находится в одной папке с этим скетчем-примером.

Код

/*

Базовые анимации

Пишет слово «Arduino» при помощи эффекта персистенции.
Использует 16 светодиодов (0 – это низ, 15 – это верх).

Если чипов TLC больше одного, то анимация ниже работать не будет.

Я сгенерировал анимацию при помощи кода Java. Он называется
«AnimationCreator» и находится в одной папке с примером 
«Базовые анимации» (BasicAnimations). Если запустить этот код,
он обработает все изображения, находящиеся в этой папке,
в файлы с расширением *.h, которые в дальнейшем можно использовать
для этого скетча Arduino.

Для наилучшего результата используйте изображения высотой 
в 16 пикселей. Настройки оборудования смотрите в примере 
«Базовое использование».

Создан 2009-02-03 Алексом Леоне (Alex Leone; acleone ~AT~ gmail.com)

*/

#include "Tlc5940.h"
#include "tlc_animations.h"
#include "ani_arduino.h"

void setup()
{
  Tlc.init();
}

void loop()
{
  // проверяем, не закончилось ли проигрывание анимации:
  if (!tlc_onUpdateFinished) {

    delay(100);

    /*
      
      void tlc_playAnimation(prog_uint8_t *animation, uint16_t frames,
                             uint16_t periodsPerFrame);
      
      Проигрывает анимацию в фоновом режиме. Во время работы этой 
      функции не вызывайте tlc.update(). Проверку того, закончилась ли 
      анимация, можно выполнить при помощи !tlc_onUpdateFinished.

      Аргумент periodsPerFrame – это периоды ШИМ (1,024 мс на кадр).
      Тут можно указать и значение «0». В результате анимация будет 
      выполняться максимально быстро.
     
    */

    tlc_playAnimation(ani_arduino, ANI_ARDUINO_FRAMES, 3);


    // если вы хотите, чтобы код не запускал никаких операций, 
    // пока не закончится анимация, используйте:
    // while (!tlc_onUpdateFinished); 

  }

}

См.также

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