Помогите новечку
- Войдите на сайт для отправки комментариев
Пт, 03/02/2017 - 01:06
#include <Adafruit_NeoPixel.h> #ifdef __AVR__ #include <avr/power.h> #endif #define LEDS_COUNT 32 // количество светодиодов WS2812 #define LED_PIN 7 // пин для подключения WS2812 #define CHANGE_TIME 10 // интервал смены эффектов, сек #define EFFECTS_COUNT 3 // количество эффектов Adafruit_NeoPixel strip = Adafruit_NeoPixel(LEDS_COUNT, LED_PIN, NEO_GRB + NEO_KHZ800); byte effectNumber; // переменная для хранения номера эффекта unsigned long timeStamp; // переменная для хранения времени последней смены эффекта void setup() { Serial.begin(9600); effectNumber = 1; // задаем эффект (при включении питания) strip.begin(); strip.show(); // Initialize all pixels to 'off' } void loop(){ Serial.print("Effect:"); Serial.println(effectNumber); while(millis() - timeStamp < CHANGE_TIME * 1000L) // в течение интервала { switch(effectNumber) // включаем заданный эффект { case 1: delay(100);Popat1(0,0,155);delay(100);Popat2(0,0,155);delay(100);Popat3(0,0,155);delay(100);Popat4(0,0,155);delay(100);Popat5(0,0,155);delay(100);Popat6(0,0,155);//синий delay(100);Popat1(136,0,155);delay(100);Popat2(136,0,155);delay(100);Popat3(136,0,155);delay(100);Popat4(136,0,155);delay(100);Popat5(136,0,155);delay(100);Popat6(136,0,155);//фиолетовый delay(100);Popat1(230,220,0);delay(100);Popat2(230,220,0);delay(100);Popat3(230,220,0);delay(100);Popat4(230,220,0);delay(100);Popat5(230,220,0);delay(100);Popat6(230,220,0);//желтый delay(100);Popat1(0,230,250);delay(100);Popat2(0,230,250);delay(100);Popat3(0,230,250);delay(100);Popat4(0,230,250);delay(100);Popat5(0,230,250);delay(100);Popat6(0,230,250);//голубой break; case 2: delay(500);Popat1(0,0,155);delay(500);Popat2(0,0,155);delay(500);Popat3(0,0,155);delay(500);Popat4(0,0,155);delay(500);Popat5(0,0,155);delay(500);Popat6(0,0,155); delay(500);Popat1(136,0,155);delay(500);Popat2(136,0,155);delay(500);Popat3(136,0,155);delay(500);Popat4(136,0,155);delay(500);Popat5(136,0,155);delay(500);Popat6(136,0,155); delay(500);Popat1(230,220,0);delay(500);Popat2(230,220,0);delay(500);Popat3(230,220,0);delay(500);Popat4(230,220,0);delay(500);Popat5(230,220,0);delay(500);Popat6(230,220,0); delay(500);Popat1(0,230,250);delay(500);Popat2(0,230,250);delay(500);Popat3(0,230,250);delay(500);Popat4(0,230,250);delay(500);Popat5(0,230,250);delay(500);Popat6(0,230,250); ; break; case 3: colorWipe(strip.Color(255, 0, 0), 50); // Red break; } } // когда интервал превышен effectNumber++; // увеличиваем счетчик if (effectNumber > EFFECTS_COUNT) effectNumber = 1; // защита от дурака timeStamp = millis(); // запоминаем время начала эфекта } void Popat1(uint8_t r, uint8_t g, uint8_t b) { for (uint8_t i=0; i<5; i++) strip.setPixelColor(i, r, g, b); strip.show(); } void Popat2(uint8_t r, uint8_t g, uint8_t b) { for(uint8_t i=5; i<10; i++) strip.setPixelColor(i, r, g, b); strip.show(); } void Popat3(uint8_t r, uint8_t g, uint8_t b) { for(uint8_t i=10; i<15; i++) strip.setPixelColor(i, r, g, b); strip.show(); } void Popat4(uint8_t r, uint8_t g, uint8_t b) { for(uint8_t i=15; i<20; i++) strip.setPixelColor(i, r, g, b); strip.show(); } void Popat5(uint8_t r, uint8_t g, uint8_t b) { for(uint8_t i=20; i<25; i++) strip.setPixelColor(i, r, g, b); strip.show(); } void Popat6(uint8_t r, uint8_t g, uint8_t b) { for(uint8_t i=25; i<30; i++) strip.setPixelColor(i, r, g, b); strip.show(); } // Заполните Точками один за другим цветом void colorWipe(uint32_t c, uint8_t wait) { for(uint16_t i=0; i<strip.numPixels(); i++) { strip.setPixelColor(i, c); strip.show(); delay(wait); } }
Насмотрелся примеров в нете и решил сделать свои эффекты мигания на ленте
А прошу помощи собственно в чем не как не могу найти как мне менять интервал каждого эфекта и порядок их смены например: case1 15сек , case2 5 сек, case1 30 сек, case3 2 сек, case2 15сек создать трек из эфектов
Похоже. Вы решили не "сделать свои" эффекты, а "использовать чужие", правильно? Или это Ваш код?
Жесть, в библеотеке neopixel и то примеры поинтересней
Похоже. Вы решили не "сделать свои" эффекты, а "использовать чужие", правильно? Или это Ваш код?
Дык а то, блинки миллисы и прочую х-ню нам не по чину юзать, мы скетчи уже качать умеем. Правда как они работают, ХЗ?
Я все таки предлагаю сделать минитест при регистрации...
1 режим скопировал 2 других мои это сделано чтобы светодиоды по 5 загорались а не всей лентой как в самой библиотеке а переключение по таймеру я взял с другого примера И блинки я все проюзал уже и про таймеры начитался вот ток от этого не стал больше в них разбираться
И я написал что режимов то я еще наделаю как зажигать диоды как менять режимы по кнопки эт уже умею
Возникла идея а могуя прям в цикле написать что после нажатия накнопку запускаем первый эфект и активировать таймер а дальше если кнопка не нажата то запускаем например з и опять таймер ?
Почему спрашиваю а не пробую я могу ошибиться с написанием и не чего не будет работать мне интересно -так же может работать
да всё можно...
только сначала освой знаки препинания
Вот таким суровым способом у меня получилось создать трек из эффектов.
Я так понимаю чтобы эт все смотрелось компактней надо создать класс?
1 режим скопировал 2 других мои это сделано чтобы светодиоды по 5 загорались а не всей лентой как в самой библиотеке