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

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

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
Старый 14.03.2018, 13:02   #1
Admin
Administrator
 
Аватар для Admin
 
Регистрация: 12.04.2010
Адрес: Москва
Сообщений: 9,618
Вес репутации: 9823
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 Digispark

Для бегущих огней на Arduino Digispark и светодиодной ленте WS2812B, я использовал давно известную библиотеку NeoPixel. Я думаю что тому кто работал с этой библиотекой не составит большого труда добавить новых эффектов. Базу эффектов буду пополнять, так что жду от Вас новых световых схем. У меня с фантазией как то слабо сложилось, скорее всего логическое мышление не дает фантазии развиваться
При желании к этой цветомузыке можно подключить ИК приемник и управлять бегущими огнями с пульта ПДУ. Для Digispark есть соответствующая библиотека.
Схема подключения ATtiny85 к светодиодной ленте WS2812b простая, всего 3 провода. В своем проекте я запитал цветомузыку через USB разъем от Power Bank, но можно питать от любого источника 5В, ток зависит от длины самой ленты

Схема подключения Arduino Digispark ATtiny85:
Нажмите на изображение для увеличения
Название: digispark.png
Просмотров: 317
Размер:	104.2 Кб
ID:	4932

Видео цветомузыки на Arduino Digispark ATtiny85:


Скетч для цветомузыки на Arduino Digispark ATtiny85:
PHP код:
#include <Adafruit_NeoPixel.h>

// Parameter 3 = pixel type flags, add together as needed:
//   NEO_KHZ800  800 KHz bitstream (most NeoPixel products w/WS2812 LEDs)
//   NEO_KHZ400  400 KHz (classic 'v1' (not v2) FLORA pixels, WS2811 drivers)
//   NEO_GRB     Pixels are wired for GRB bitstream (most NeoPixel products)
//   NEO_RGB     Pixels are wired for RGB bitstream (v1 FLORA pixels, not v2)
#define PIN 1
#define NUM_PIX 24
Adafruit_NeoPixel strip Adafruit_NeoPixel(NUM_PIXPINNEO_GRB NEO_KHZ800);

void setup() 
{
  
strip.begin();
  
strip.show(); // Инициализация , все светодиоды выключены
}

void loop() 
{

    
rgbFade(002555); // синий
    
rgbFade(002555); // синий
    
rgbFade(002555); // синий
 
    
   
runPix(2010);
  
  
// Some example procedures showing how to display to the pixels:
  
colorWipe(strip.Color(00255), 50); // Blue
  
colorWipe(strip.Color(02550), 50); // Green
  
colorWipe(strip.Color(25500), 50); // Red
  
  // Send a theater pixel chase in...
  
theaterChase(strip.Color(127,   0,   0), 50); // Red
  
theaterChase(strip.Color(  0,   0127), 50); // Blue
  
theaterChase(strip.Color(127127127), 50); // White

  
rainbow(20);
  
rainbowCycle(20);
  
theaterChaseRainbow(50);
  
  
flame(255150); 
}

//бегущий пиксель
void runPix(uint8_t ciclesuint8_t wait
{
  
strip.setBrightness(255);
  for(
int c=0c<ciclesc++)
  {  
   for(
int i=0i<strip.numPixels(); i++)
   {
    
strip.setPixelColor(istrip.Color(0,0,255));
    
strip.show(); 
    
strip.setPixelColor(istrip.Color(0,0,0));
    
delay(wait);
   }
  }
}

//эффект пламени
void flame(uint8_t ciclesuint8_t wait)
{
 
strip.setBrightness(255);
 for(
int i=0i<ciclesi++)
  { 
   for(
int i=0i<strip.numPixels(); i++)
   {
    
strip.setPixelColor(istrip.Color(random(150254), random(045), 0));
   }
    
strip.setBrightness(random(151,254));
    
strip.show(); // This sends the updated pixel color to the hardware.
    
delay(random(wait));
 }
}  

// плавное наростание яркости любого цвета
void rgbFade(uint8_t reduint8_t greenuint8_t blueuint8_t wait
{
  
strip.setBrightness(255);
  for(
uint8_t b=0b<255b++) 
  {
     for(
uint8_t i=0i<strip.numPixels(); i++) 
     {
        
strip.setPixelColor(ired b/255green b/255blue b/255);
     }
     
strip.show();
     
delay(wait);
  }
delay(500);

  for(
uint8_t b=2550b--) 
  {
     for(
uint8_t i 0strip.numPixels(); i++) 
     {
        
strip.setPixelColor(ired b/255green b/255blue b/255);
     }
     
strip.show();
     
delay(wait);
  }
   
strip.setBrightness(0);
   
strip.show();
  
delay(200);
}

// //заполнение ленты пиксель за пикселем
void colorWipe(uint32_t cuint8_t wait
{
  
strip.setBrightness(255);
  for(
uint16_t i=0i<strip.numPixels(); i++) 
  {
      
strip.setPixelColor(ic);
      
strip.show();
      
delay(wait);
  }
}

//радуга
void rainbow(uint8_t wait
{
  
uint16_t ij;
  
strip.setBrightness(255);
  for(
j=0j<256j++) {
    for(
i=0i<strip.numPixels(); i++) {
      
strip.setPixelColor(iWheel((i+j) & 255));
    }
    
strip.show();
    
delay(wait);
  }
}

// Slightly different, this makes the rainbow equally distributed throughout
void rainbowCycle(uint8_t wait
{
  
uint16_t ij;

strip.setBrightness(255);
  for(
j=0j<256*5j++) { // 5 cycles of all colors on wheel
    
for(i=0istrip.numPixels(); i++) {
      
strip.setPixelColor(iWheel(((256 strip.numPixels()) + j) & 255));
    }
    
strip.show();
    
delay(wait);
  }
}

//Theatre-style crawling lights.
void theaterChase(uint32_t cuint8_t wait
{
 
strip.setBrightness(255); 
  for (
int j=0j<10j++) {  //do 10 cycles of chasing
    
for (int q=03q++) {
      for (
int i=0strip.numPixels(); i=i+3) {
        
strip.setPixelColor(i+qc);    //turn every third pixel on
      
}
      
strip.show();
     
      
delay(wait);
     
      for (
int i=0strip.numPixels(); i=i+3) {
        
strip.setPixelColor(i+q0);        //turn every third pixel off
      
}
    }
  }
}

//Theatre-style crawling lights with rainbow effect
void theaterChaseRainbow(uint8_t wait
{
strip.setBrightness(255);
  for (
int j=0256j++) {     // cycle all 256 colors in the wheel
    
for (int q=03q++) {
        for (
int i=0strip.numPixels(); i=i+3) {
          
strip.setPixelColor(i+qWheel( (i+j) % 255));    //turn every third pixel on
        
}
        
strip.show();
       
        
delay(wait);
       
        for (
int i=0strip.numPixels(); i=i+3) {
          
strip.setPixelColor(i+q0);        //turn every third pixel off
        
}
    }
  }
}

// Input a value 0 to 255 to get a color value.
// The colours are a transition r - g - b - back to r.
uint32_t Wheel(byte WheelPos
{
  
strip.setBrightness(255);
  
WheelPos 255 WheelPos;
  if(
WheelPos 85) {
   return 
strip.Color(255 WheelPos 30WheelPos 3);
  } else if(
WheelPos 170) {
    
WheelPos -= 85;
   return 
strip.Color(0WheelPos 3255 WheelPos 3);
  } else {
   
WheelPos -= 170;
   return 
strip.Color(WheelPos 3255 WheelPos 30);
  }
}
 
Как загрузить скетч в контроллер ATtiny85 среде Arduino IDE
1 - Отключить микроконтроллер Arduino Tiny от компьютера
2 - Нажать в IDE кнопку "Вгрузить" после чего в консоли появится информация, о том что у Вас есть
60 секунд, что бы подключить Digispark к USB.
3 - Подключаем Digispark ATtiny85 к USB компьютера
4 - Скетч начнет загружаться в контроллер Ардуино ATtiny85
5 - Если все прошло успешно, то можете проверить работоспособность Вашего скетча на ATtiny85
Admin вне форума   Ответить с цитированием
Старый 14.03.2018, 13:41   #2
Admin
Administrator
 
Аватар для Admin
 
Регистрация: 12.04.2010
Адрес: Москва
Сообщений: 9,618
Вес репутации: 9823
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
По умолчанию

Резерв
Admin вне форума   Ответить с цитированием
Ответ


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

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

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

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


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


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