Показано с 1 по 10 из 469

Древовидный режим

Предыдущее сообщение Предыдущее сообщение   Следующее сообщение Следующее сообщение
  1. #11
    Новичок
    Регистрация
    28.07.2011
    Возраст
    55
    Сообщений
    9
    Вес репутации
    174

    По умолчанию Re: Фоновая, пиксельная подсветка телевизора, Pixelight

    Мой чип в светодиодах на 2811. Библиотека дугая и скейтч надо переделывать. Мне для ленты надо всего одна цифровая линия, а опыта пока мало в написании и подгонки программ. LED.showRGB - пока не понимаю как организовать аргументы для неё. Хоть программа по логике очень проста но застрял на этом:

    Код:
    #include "FastSPI_LED2.h"
    
     WS2811Controller800Mhz<5> LED; // задаём через какую ногу выводятся данные для светодиодов 
     unsigned long nTime, rTime, t;
    
     void setup()
     { 
     // инициализация ленты
     { LED.init(); }
     delay(1); //пауза для инициализации ленты
     //--------------------
     Serial.begin(115200); 
     }
    
     void loop() 
     {
     uint8_t data; 
     t = millis(); //получаем текущее время
     Serial.write(170); //отправляем байт синхронизации для ПК
     if (Serial.read()) //ждем от ПК первый байт с колличеством пикселей ленты
     {
     uint16_t pix_num = data*3; //получаем общее колличество цветовых каналов ленты 
     uint16_t eTime = micros()-rTime; //получим время с момента окончания загрузки
     if( eTime < 900) delay(eTime); //ждем полной инициализации (минус 100мкс для загрузки след. байта) 
     for(uint16_t i=0; i<pix_num; i++)
     { int num = 5; LED.showRGB(num, Serial.read()); //читаем UART и сразу сбрасываем в ленту пиксели 
     __________________________________________________ ________________________________________________
     rTime = micros(); //стартуем счетчик времени инициализации ленты
     nTime = t; // //обнулить время простоя 
     } else { 
     if((t - nTime) > 4000) ///гасим подсветку если нет потока более 2 сек
     { 
     for(int16_t z=0; z<768; z++) LED.init(); //погасить все пикселы ленты
     nTime = t; 
     } 
     }
     } 
     //************************************************** *************************
     unsigned char uart_read(void)
     { uint8_t val;
     for (uint8_t i=0; i<255; ++i) //цикл ожидания байта данных из UART порта, время ожидания 2560мкс
     { 
     if(Serial.read()>0) break; //если байт данных получен, то цикл прерывается
     delay(10); //время ожидания байта
     } 
     return val;
     }
    Последний раз редактировалось Chip; 02.06.2013 в 03:43.

Информация о теме

Пользователи, просматривающие эту тему

Эту тему просматривают: 2 (пользователей: 0 , гостей: 2)

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •