Форум обсуждения систем  

Вернуться   Форум обсуждения систем "Умный дом", проектов Ардуино, OpenWRT и других DIY устройств > Форум умного дома > Сделай сам

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
Старый 16.12.2013, 17:54   #1
Admin
Administrator
 
Аватар для Admin
 
Регистрация: 12.04.2010
Адрес: Москва
Сообщений: 9,616
Вес репутации: 9820
Admin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant future
По умолчанию Новогодний скетч для Arduino+LED Strip WS8201

Новогоднее светодиодное оформление комнаты при помощи Arduino Nano и RGB светодиодной ленты LED Strip WS820

Для быстрой проверки ленты, можно использовать следующий тест.
Тестовый скетч реализует один бегущий огонек, можно тестировать без внешнего БП, ленту можно запитать от Arduino

PHP код:
#include <SPI.h>

typedef struct {uint8_t buint8_t guint8_t r;} RGB;
RGB pixel[160];

void setup() 
{
  
Serial.begin(115200);
  
SPI.begin();
  
SPI.setBitOrder(MSBFIRST);
  
SPI.setDataMode(SPI_MODE0); 
  
SPI.setClockDivider(SPI_CLOCK_DIV16);
  
delay(1); 
}

void loop() 
{
run_pix(160); //количество тестируемых светодиодов в ленте
}

void run_pix(uint8_t num)
{
      
pixel[0].r=0
      
pixel[0].g=200;
      
pixel[0].b=255;
         
   for(
uint8_t i=0i<numi++) 
   {
     
pixel[i+1].r=pixel[i].r
      
pixel[i+1].g=pixel[i].g;
      
pixel[i+1].b=pixel[i].b;
      
pixel[i].r=0
      
pixel[i].g=0;
      
pixel[i].b=0
      
set_pix(num); 
      
// delay(10); //пауза между вспышками светодиодов
   

}

void set_pix(uint8_t num)
{
   for(
uint8_t i=0i<numi++) 
   {   
      
SPI.transfer(pixel[i].b);
      
SPI.transfer(pixel[i].g);
      
SPI.transfer(pixel[i].r);
    }
  
delay(1);

Новогодний скетч для RGB WS2801 ленты
Визуально красивое перетекание движущихся по ленте цветных пикселей
PHP код:
#include <SPI.h>
#define numpix 160
typedef struct {uint8_t buint8_t guint8_t r;} RGB;
RGB pixel[numpix];
void setup() {  
Serial.begin(115200);  
SPI.begin();  
SPI.setBitOrder(MSBFIRST);  
SPI.setDataMode(SPI_MODE0);   
SPI.setClockDivider(SPI_CLOCK_DIV16); 
 
delay(1);
 }

void loop() { 
run_pix(numpix2550); 
run_pix(numpix255255); 
run_pix(numpix0255); 
run_pix(numpix0255255 ); 
run_pix(numpix00255 ); 
run_pix(numpix2550255 );
}

void run_pix(uint8_t numuint8_t rpuint8_t gpuint8_t bp)
{         
 for(
uint8_t i=0i<numi++)   
 {      
pixel[i].r=rp;       
pixel[i].g=gp;      
pixel[i].b=bp;      
set_pix(num);      
delay(5);   

}

void set_pix(uint8_t num)
{   
for(
uint8_t i=0i<numi++)    
{         
SPI.transfer(pixel[i].b);      
SPI.transfer(pixel[i].g);      
SPI.transfer(pixel[i].r);    
}  
delay(1);

Схема подключения
Admin вне форума   Ответить с цитированием
Ответ


Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 
Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

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

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход


Текущее время: 18:15. Часовой пояс GMT +3.


Powered by vBulletin® Version 3.8.5
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot
Яндекс.Метрика