Цветомузыка на WS2812 и arduino для ПК. Заключение.

Здравствуйте.

В связи с интересом к моему варианту цветомузыки подготовил финальную версию программы и скетчей.

Ссылка на архив с программой и скетчами

Внимание! Новая программа не совместима со старыми скетчами.

Внешний вид новой программу ЦМУ


Программа поддерживает цветомузыкальные и динамические режимы работы.
В цветомузыкальном режиме для формирования цветовых эффектов используются выходы 19 цифровых полосовых фильтров. Значения на выходе цифровых фильтров в постоянном темпе передаются персональным компьютером и содержатся в массиве readData[].
В динамическом режиме цветовые эффекты выполняются в темпе задаваемом программируемой задержкой. Для выполнения динамических программ подключение к ПК не требуется.
В программе можно выбрать одну из 4-х цветомузыкальных программ или одну из 8-ми динамических. Не все программы реализованы в прилагаемом скетче контроллера ленты. Я реализовал 3 цветомузыкальные и 4 динамические подпрограммы. Остальные программы вы можете составить сами.

Цветомузыкальные программы:
Радуга;
МИКС;
Двутавр;
Новая — оставлена под вашу реализацию.

Динамические программы:
1 — theaterChaseRainbow — из примеров к библиотеке Adafruit_NeoPixel, темп задается ползунком;
2 — rainbowCycle — из примеров к библиотеке Adafruit_NeoPixel, темп задается ползунком;
3 — мерцающие огни
4, 5, 6 — разные варианты бегущих огней
7..8 — оставлены под вашу реализацию.

Установка цвета всей ленты осуществляется выбором цвета на цветном поле;

Динамические программы могут выполняться автономно, без подключения к ПК. Если вы хотите использовать контроллер ленты автономно вам будет необходимо подключить к одному или нескольким цифровым входам платы arduino кнопки, а к одному из аналоговых входов потенциометр. Кнопки будут использоваться для переключения номера программы, а потенциометр для изменения параметра программы (темп, яркость, цвет). Подключение кнопок и потенциометра к arduino можно найти в стандартных примерах. Напишите и внесите в скетч контроллера ленты код, изменяющий номер подпрограммы prog и значения параметра param, в зависимости от нажатых кнопок и положения потенциометра. Можно для переключения динамических программ использовать ИК приёмник и пульт от телевизора. Подключение ИК приёмника к arduino также можно найти в стандартных примерах.

Для реализации цветомузыкальных программ у вас есть выходы 19 полосовых фильтров. Вы можете обрабатывать их как вам угодно для получения красивой цветомузыкальной программы. Вы можете увеличить количество программ используя ползунок изменения параметра (250 состояний) для изменения цветовой программы.

Оставляйте в комментариях к статье код своих красивых динамических и цветомузыкальных подпрограмм, чтобы каждый, кому она понравится, мог добавить её в свой скетч.

Творите, выдумывайте, пишите, делитесь и каждый сможет сделать такое устройство, какое пожелает.

Скетч для варианта подключения к компьютеру «COMtoLED.ino»:
Дополнительная информация

#include <Adafruit_NeoPixel.h>
 
#define ledPin 13       // светодиод на плате arduino
#define stripPin 2      // выход управления светодиодной лентой
#define stripLed 60     // количество светодиодов в ленте
#define bandPass 15     // число полос ЦМУ (используемых светодиодов)
#define ledDist 4
#define LedtoColor 4

// Parameter 1 = number of pixels in strip
// Parameter 2 = Arduino pin number (most are valid)
// 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)
Adafruit_NeoPixel strip = Adafruit_NeoPixel(stripLed, stripPin, NEO_GRB + NEO_KHZ800);

const uint32_t PROGMEM
  colorTab[]={
      0xFF0000,0xFF1100,0xFF2200,0xFF3300,0xFF4400,0xFF5500,0xFF6600,0xFF7700,0xFF8800,0xFF9900,0xFFAA00,0xFFBB00,0xFFCC00,0xFFDD00,0xFFEE00,0xFFFF00,  //красный - жёлтый
      0xFFFF00,0xEEFF00,0xDDFF00,0xCCFF00,0xBBFF00,0xAAFF00,0x99FF00,0x88FF00,0x77FF00,0x66FF00,0x55FF00,0x44FF00,0x33FF00,0x22FF00,0x11FF00,0x00FF00,  //жёлтый — зелёный
      0x00FF00,0x00FF11,0x00FF22,0x00FF33,0x00FF44,0x00FF55,0x00FF66,0x00FF77,0x00FF88,0x00FF99,0x00FFAA,0x00FFBB,0x00FFCC,0x00FFDD,0x00FFEE,0x00FFFF,  //зелёный — циан (голубой)
      0x00FFFF,0x00EEFF,0x00DDFF,0x00CCFF,0x00BBFF,0x00AAFF,0x0099FF,0x0088FF,0x0077FF,0x0066FF,0x0055FF,0x0044FF,0x0033FF,0x0022FF,0x0011FF,0x0000FF,  //голубой — синий
      0x0000FF,0x1100FF,0x2200FF,0x3300FF,0x4400FF,0x5500FF,0x6600FF,0x7700FF,0x8800FF,0x9900FF,0xAA00FF,0xBB00FF,0xCC00FF,0xDD00FF,0xEE00FF,0xFF00FF,  //синий — пурпур (маджента)
      0xFF00FF,0xFF00EE,0xFF00DD,0xFF00CC,0xFF00BB,0xFF00AA,0xFF0099,0xFF0088,0xFF0077,0xFF0066,0xFF0055,0xFF0044,0xFF0033,0xFF0022,0xFF0011,0xFF0000}; //маджента — красный

typedef union{
    struct {
      uint8_t b,g,r,w;
    };
    uint32_t dw;
} TColor;

typedef union{
    struct {
      uint8_t b0,b1;
    };
    uint16_t w;
} TWord;

uint8_t inCounter = 0;
boolean stringComplete = false;  // whether the string is complete
char prog = '4';
uint8_t param = 10;
char inStr[32];       // a string to hold incoming data
char readData[32];    // a string to hold incoming data

void setup() {
  // initialize serial:
  strip.begin();
  strip.show(); // Initialize all pixels to 'off'
  Serial.begin(115200);
  // reserve 32 bytes for the inputString:
  pinMode(ledPin, OUTPUT);
}

void loop() {
  // print the string when a newline arrives:
  if (stringComplete) {
    stringComplete = false;
    cmdExecute();
    readData[1]=0;
    Serial.println(readData); // Подтверждение - команда выполнена
  }
  else {
    switch (prog) {
      case '3': { theaterChaseRainbow(param); break; }
      case '4': { rainbowCycle(param); break; }
      case '5': { sub1(param); break; }
      case '6': { sub2(param); break; }
//      case '7': { sub3(param); break; }
//      case '8': { sub4(param); break; }
    }
  }
}

void cmdExecute() {
    
    prog = readData[0];
    param = readData[1];
    switch (prog) {
      case 'r': { zmu();  break; }
      case 's': { zmu2(); break; }
      case 't': { zmu3(); break; }
      case 'u': { zmu4(); break; }
      case '1': { white(param); break; }
      case '2': { color(param); break; }
      case '3': { theaterChaseRainbow(param); break; }
      case '4': { rainbowCycle(param); break; }
      case '5': { sub1(param); break; }
      case '6': { sub2(param); break; }
//      case '7': { sub3(param); break; }
//      case '8': { sub4(param); break; }
      case 'c': { strip.clear(); strip.show(); break; }
    }
}

void sub1(uint8_t wait) {
// Напишите свой код
  
}

void sub2(uint8_t wait) {
// Напишите свой код
 
}

void zmu4() {
  TColor cl;
  TWord akk;
  uint8_t i,k;

  for(i=0; i<bandPass; i++) {
      cl.dw = pgm_read_dword(&colorTab[96*i/bandPass]);
      // Ваш код  
      // .....
      cl.dw = strip.Color(cl.r, cl.g, cl.b);
      for(k=0; k<LedtoColor; k++) strip.setPixelColor(i*LedtoColor+k, cl.dw);
      // Ваш код  
  }
  strip.show();
}

void zmu3() {
  TColor cl;
  TWord akk;
  uint8_t i,k,j,n;

  for(i=0; i<15; i++) {
      cl.dw = pgm_read_dword(&colorTab[96*i/15]);
      j=readData[i+2];
      akk.w = cl.r * j;
      akk.w = akk.b1 * akk.b1; 
      cl.r = akk.b1;
      akk.w = cl.g * j;
      akk.w = akk.b1 * akk.b1; 
      cl.g = akk.b1;
      akk.w = cl.b * j;
      akk.w = akk.b1 * akk.b1; 
      cl.b = akk.b1;
      cl.dw = strip.Color(cl.r, cl.g, cl.b);
      n=i*4;
      for(k=0; k<4; k++) {
        strip.setPixelColor(n+k, cl.dw);
        strip.setPixelColor(stripLed-(n+k)-1, cl.dw);
      }
  }
  strip.show();
}

void zmu2() {
  TColor cl;
  TWord akk;
  uint8_t i,k,j;

  for(i=0; i<bandPass; i++) {
      cl.dw = pgm_read_dword(&colorTab[96*i/bandPass]);
      j=readData[i+2];
      akk.w = cl.r * j;
      akk.w = akk.b1 * akk.b1; 
      cl.r = akk.b1;
      akk.w = cl.g * j;
      akk.w = akk.b1 * akk.b1; 
      cl.g = akk.b1;
      akk.w = cl.b * j;
      akk.w = akk.b1 * akk.b1; 
      cl.b = akk.b1;
      cl.dw = strip.Color(cl.r, cl.g, cl.b);
      for(k=0; k<LedtoColor; k++) strip.setPixelColor(i+k*bandPass, cl.dw);
  }
  strip.show();
}

void zmu() {
  TColor cl;
  TWord akk;
  uint8_t n,i,k,j;

  for(i=0; i<bandPass; i++) {
      cl.dw = pgm_read_dword(&colorTab[96*i/bandPass]);
      j=readData[i+2];
      akk.w = cl.r * j;
      akk.w = akk.b1 * akk.b1; 
      cl.r = akk.b1;
      akk.w = cl.g * j;
      akk.w = akk.b1 * akk.b1; 
      cl.g = akk.b1;
      akk.w = cl.b * j;
      akk.w = akk.b1 * akk.b1; 
      cl.b = akk.b1;
      cl.dw = strip.Color(cl.r, cl.g, cl.b);
      n=i*ledDist;
      for(k=0; k<LedtoColor; k++) strip.setPixelColor(n+k, cl.dw);
  }
  strip.show();
}

void white(uint8_t brigth) {
  uint8_t i;
  uint32_t c;

  c=strip.Color(brigth, brigth, brigth);
  for(i=0; i<stripLed; i++) strip.setPixelColor(i, c);
  strip.show();
}

void color(uint8_t colorNumber) {
  uint8_t i;
  TColor cl;

  if (colorNumber>95) colorNumber=95; 
  cl.dw = pgm_read_dword(&colorTab[colorNumber]);
  cl.dw = strip.Color(cl.r, cl.g, cl.b);
  for(i=0; i<stripLed; i++) strip.setPixelColor(i, cl.dw);
  strip.show();
}

void rainbow(uint8_t wait) {
  uint16_t i, j;

  for(j=0; j<256; j++) {
    for(i=0; i<strip.numPixels(); i++) {
      strip.setPixelColor(i, Wheel((i+j) & 255));
    }
    strip.show();
    delay(wait);
  }
}

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

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

//Theatre-style crawling lights.
void theaterChase(uint32_t c, uint8_t wait) {
  for (int j=0; j<10; j++) {  //do 10 cycles of chasing
    for (int q=0; q < 3; q++) {
      for (int i=0; i < strip.numPixels(); i=i+3) {
        strip.setPixelColor(i+q, c);    //turn every third pixel on
      }
      strip.show();

      delay(wait);

      for (int i=0; i < strip.numPixels(); i=i+3) {
        strip.setPixelColor(i+q, 0);        //turn every third pixel off
      }
    }
  }
}

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

      delay(wait);

      for (int i=0; i < strip.numPixels(); i=i+3) {
        strip.setPixelColor(i+q, 0);        //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) {
  WheelPos = 255 - WheelPos;
  if(WheelPos < 85) {
    return strip.Color(255 - WheelPos * 3, 0, WheelPos * 3);
  }
  if(WheelPos < 170) {
    WheelPos -= 85;
    return strip.Color(0, WheelPos * 3, 255 - WheelPos * 3);
  }
  WheelPos -= 170;
  return strip.Color(WheelPos * 3, 255 - WheelPos * 3, 0);
}

//  SerialEvent
void serialEvent() {
  uint8_t i;
  
  while (Serial.available()) {
    // get the new byte:
    char inChar = (char)Serial.read();
    if (inChar != char(254)) {
     inStr[inCounter++] = inChar;
     if (inChar == char(255)) {
       i=0;
       while (inStr[i]!=char(255)) {
         readData[i]=inStr[i];
         i++;
       }
       readData[i]=inStr[i];
       inCounter = 0;          // Устанавливаем счётчик принятых символов на начало входного буфера
       stringComplete = true;
    }
    } else inCounter = 0;      // Устанавливаем счётчик принятых символов на начало входного буфера
  }
}


Скетчи для беспроводного варианта:
Скетч для модуля подключаемого к компьютеру «COMtoRF.ino»:
Дополнительная информация

#include <SPI.h>        // Подключаем библиотеку для работы с шиной SPI
#include <nRF24L01.h>   // Подключаем файл настроек из библиотеки RF24
#include <RF24.h>       // Подключаем библиотеку для работы с nRF24L01+
RF24    radio(9, 10);   // Создаём объект radio для работы с библиотекой RF24, указывая номера выводов nRF24L01+ (CE, CSN)

char    rfData[22];     // Создаём массив для передачи данных
uint8_t rfCounter = 0;
char    serData[32];    // a string to hold incoming data
uint8_t serCounter = 0;
boolean stringComplete = false;

void setup(){
    Serial.begin(115200);
    radio.begin();                             // Инициируем работу nRF24L01+
    radio.setChannel(5);                       // Указываем канал передачи данных (от 0 до 127), 5 - значит передача данных осуществляется на частоте 2,405 ГГц (на одном канале может быть только 1 приёмник и до 6 передатчиков)
    radio.setDataRate     (RF24_1MBPS);        // Указываем скорость передачи данных (RF24_250KBPS, RF24_1MBPS, RF24_2MBPS), RF24_1MBPS - 1Мбит/сек
    radio.setPALevel      (RF24_PA_HIGH);      // Указываем мощность передатчика (RF24_PA_MIN=-18dBm, RF24_PA_LOW=-12dBm, RF24_PA_HIGH=-6dBm, RF24_PA_MAX=0dBm)
    radio.openWritingPipe (0x1234567890LL);    // Открываем трубу с идентификатором 0x1234567890 для передачи данных (на ожном канале может быть открыто до 6 разных труб, которые должны отличаться только последним байтом идентификатора)
}

void loop(){
  uint8_t i;
  
    if (rfCounter>0) {
      radio.write(&rfData[0],22);
      rfCounter=0;
      Serial.write(rfData,22);
    }
}

//  SerialEvent
void serialEvent() {
  uint8_t i;
  
  while (Serial.available()) {
    // get the new byte:
    char inChar = (char)Serial.read();
    if (inChar != char(254)) {
     if (inChar == char(255)) {
       for(i=0; i<22; i++) rfData[i]=serData[i];
       rfCounter = 22;
       serCounter = 0;          // clear the input string:
     }
     else {
      serData[serCounter++] = inChar;
      serCounter &= 0x1F;
     }
    } else serCounter = 0;      // clear the input string: 
  }
}


Скетч для модуля ленты «RFtoLED.ino»:

#include <SPI.h>                   // Подключаем библиотеку  для работы с шиной SPI
#include <nRF24L01.h>              // Подключаем файл настроек из библиотеки RF24
#include <RF24.h>                  // Подключаем библиотеку  для работы с nRF24L01+
#include <Adafruit_NeoPixel.h>

#define stripLed 120     // количество светодиодов в ленте
#define bandPass 17      // полос (групп светодиодов)
#define stripPin 2       // выход управления светодиодной лентой
#define ledDist 7
#define LedtoColor 7

// Parameter 1 = number of pixels in strip
// Parameter 2 = Arduino pin number (most are valid)
// 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)
Adafruit_NeoPixel strip = Adafruit_NeoPixel(stripLed, stripPin, NEO_GRB + NEO_KHZ800);

RF24      radio(9, 10);    // Создаём объект radio   для работы с библиотекой RF24, указывая номера выводов nRF24L01+ (CE, CSN)

const uint32_t PROGMEM
  colorTab[]={
      0xFF0000,0xFF1100,0xFF2200,0xFF3300,0xFF4400,0xFF5500,0xFF6600,0xFF7700,0xFF8800,0xFF9900,0xFFAA00,0xFFBB00,0xFFCC00,0xFFDD00,0xFFEE00,0xFFFF00,  //красный - жёлтый
      0xFFFF00,0xEEFF00,0xDDFF00,0xCCFF00,0xBBFF00,0xAAFF00,0x99FF00,0x88FF00,0x77FF00,0x66FF00,0x55FF00,0x44FF00,0x33FF00,0x22FF00,0x11FF00,0x00FF00,  //жёлтый — зелёный
      0x00FF00,0x00FF11,0x00FF22,0x00FF33,0x00FF44,0x00FF55,0x00FF66,0x00FF77,0x00FF88,0x00FF99,0x00FFAA,0x00FFBB,0x00FFCC,0x00FFDD,0x00FFEE,0x00FFFF,  //зелёный — циан (голубой)
      0x00FFFF,0x00EEFF,0x00DDFF,0x00CCFF,0x00BBFF,0x00AAFF,0x0099FF,0x0088FF,0x0077FF,0x0066FF,0x0055FF,0x0044FF,0x0033FF,0x0022FF,0x0011FF,0x0000FF,  //голубой — синий
      0x0000FF,0x1100FF,0x2200FF,0x3300FF,0x4400FF,0x5500FF,0x6600FF,0x7700FF,0x8800FF,0x9900FF,0xAA00FF,0xBB00FF,0xCC00FF,0xDD00FF,0xEE00FF,0xFF00FF,  //синий — пурпур (маджента)
      0xFF00FF,0xFF00EE,0xFF00DD,0xFF00CC,0xFF00BB,0xFF00AA,0xFF0099,0xFF0088,0xFF0077,0xFF0066,0xFF0055,0xFF0044,0xFF0033,0xFF0022,0xFF0011,0xFF0000}; //маджента — красный
      
typedef union{
    struct {
      uint8_t b,g,r,w;
    };
    uint32_t dw;
} TColor;

typedef union{
    struct {
      uint8_t b0,b1;
    };
    uint16_t w;
} TWord;      

char readData[22];           // Буфер команды
char prog = '3';
uint8_t param = 0;

void setup(){
    // initialize serial:
    Serial.begin(115200);
    strip.begin();
    strip.show(); // Initialize all pixels to 'off'

    radio.begin();                              // Инициируем работу nRF24L01+
//    radio.setAutoAck(false);

    radio.setChannel(5);                        // Указываем канал приёма данных (от 0 до 127), 5 - значит приём данных осуществляется на частоте 2,405 ГГц (на одном канале может быть только 1 приёмник и до 6 передатчиков)
    radio.setDataRate     (RF24_1MBPS);         // Указываем скорость передачи данных (RF24_250KBPS, RF24_1MBPS, RF24_2MBPS), RF24_1MBPS - 1Мбит/сек
    radio.setPALevel      (RF24_PA_HIGH);       // Указываем мощность передатчика (RF24_PA_MIN=-18dBm, RF24_PA_LOW=-12dBm, RF24_PA_HIGH=-6dBm, RF24_PA_MAX=0dBm)
    radio.openReadingPipe (1, 0x1234567890LL);  // Открываем 1 трубу с идентификатором 0x1234567890 для приема данных (на ожном канале может быть открыто до 6 разных труб, которые должны отличаться только последним байтом идентификатора)

    radio.startListening  ();                   // Включаем приемник, начинаем прослушивать открытые трубы
}

void loop(){

    if(radio.available()){        // Если в буфере имеются принятые данные, то получаем номер трубы, по которой они пришли, по ссылке на переменную pipe
      radio.read(&readData, 22);  // Приём команды
      cmdExecute();       
    }
    else {
      switch (prog) {
        case '3': { theaterChaseRainbow(param); break; }
        case '4': { rainbowCycle(param); break; }
        case '5': { sub1(param); break; }
        case '6': { sub2(param); break; }
//        case '7': { sub3(param); break; }
//        case '8': { sub4(param); break; }
      }
    }
}

void cmdExecute() {
    prog = readData[0];
    param = readData[1];
    switch (prog) {
      case 'r': { zmu();  break; }
      case 's': { zmu2(); break; }
      case 't': { zmu3(); break; }
      case 'u': { zmu4(); break; }
      case '1': { white(param); break; }
      case '2': { color(param); break; }
      case '3': { theaterChaseRainbow(param); break; }
      case '4': { rainbowCycle(param); break; }
      case '5': { sub1(param); break; }
      case '6': { sub2(param); break; }
//      case '7': { sub3(param); break; }
//      case '8': { sub4(param); break; }
      case 'c': { strip.clear(); strip.show(); break; }
    }
}

void sub1(uint8_t wait) {
// Напишите свой код
  
}

void sub2(uint8_t wait) {
// Напишите свой код
 
}

void zmu4() {
  TColor cl;
  uint8_t i,k;

  for(i=0; i<bandPass; i++) {
      cl.dw = pgm_read_dword(&colorTab[96*i/bandPass]);
      // Ваш код  
      // .....
      cl.dw = strip.Color(cl.r, cl.g, cl.b);
      for(k=0; k<LedtoColor; k++) strip.setPixelColor(i*LedtoColor+k, cl.dw);
      // Ваш код  
  }
  strip.show();
}

void zmu3() {
  TColor cl;
  TWord akk;
  uint16_t r,g,b;
  uint8_t i,k,j,n;

  for(i=0; i<15; i++) {
      cl.dw = pgm_read_dword(&colorTab[96*i/15]);
      j=readData[i+2];
      akk.w = cl.r * j;
      akk.w = akk.b1 * akk.b1; 
      cl.r = akk.b1;
      akk.w = cl.g * j;
      akk.w = akk.b1 * akk.b1; 
      cl.g = akk.b1;
      akk.w = cl.b * j;
      akk.w = akk.b1 * akk.b1; 
      cl.b = akk.b1;
      cl.dw = strip.Color(cl.r, cl.g, cl.b);
      n=i*4;
      for(k=0; k<4; k++) {
        strip.setPixelColor(n+k, cl.dw);
        strip.setPixelColor(stripLed-(n+k)-1, cl.dw);
      }
  }
  strip.show();
}

void zmu2() {
  TColor cl;
  TWord akk;
  uint16_t r,g,b;
  uint8_t i,k,j;

  for(i=0; i<bandPass; i++) {
      cl.dw = pgm_read_dword(&colorTab[96*i/bandPass]);
      j=readData[i+2];
      akk.w = cl.r * j;
      akk.w = akk.b1 * akk.b1; 
      cl.r = akk.b1;
      akk.w = cl.g * j;
      akk.w = akk.b1 * akk.b1; 
      cl.g = akk.b1;
      akk.w = cl.b * j;
      akk.w = akk.b1 * akk.b1; 
      cl.b = akk.b1;
      cl.dw = strip.Color(cl.r, cl.g, cl.b);
      for(k=0; k<LedtoColor; k++) strip.setPixelColor(i+k*bandPass, cl.dw);
  }
  strip.show();
}

void zmu() {
  TColor cl;
  TWord akk;
  uint16_t r,g,b;
  uint8_t n,i,k,j;

  for(i=0; i<bandPass; i++) {
      cl.dw = pgm_read_dword(&colorTab[96*i/bandPass]);
      j=readData[i+2];
      akk.w = cl.r * j;
      akk.w = akk.b1 * akk.b1; 
      cl.r = akk.b1;
      akk.w = cl.g * j;
      akk.w = akk.b1 * akk.b1; 
      cl.g = akk.b1;
      akk.w = cl.b * j;
      akk.w = akk.b1 * akk.b1; 
      cl.b = akk.b1;
      cl.dw = strip.Color(cl.r, cl.g, cl.b);
      n=i*ledDist;
      for(k=0; k<LedtoColor; k++) strip.setPixelColor(n+k, cl.dw);
  }
  strip.show();
}

void white(uint8_t brigth) {
  uint8_t i;
  uint32_t c;

  c=strip.Color(brigth, brigth, brigth);
  for(i=0; i<stripLed; i++) strip.setPixelColor(i, c);
  strip.show();
}

void color(uint8_t colorNumber) {
  uint8_t i;
  TColor cl;

  if (colorNumber>95) colorNumber=95; 
  cl.dw = pgm_read_dword(&colorTab[colorNumber]);
  cl.dw = strip.Color(cl.r, cl.g, cl.b);
  for(i=0; i<stripLed; i++) strip.setPixelColor(i, cl.dw);
  strip.show();
}

void rainbow(uint8_t wait) {
  uint16_t i, j;

  for(j=0; j<256; j++) {
    for(i=0; i<strip.numPixels(); i++) {
      strip.setPixelColor(i, Wheel((i+j) & 255));
    }
    strip.show();
    delay(wait);
  }
}

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

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

//Theatre-style crawling lights.
void theaterChase(uint32_t c, uint8_t wait) {
  for (int j=0; j<10; j++) {  //do 10 cycles of chasing
    for (int q=0; q < 3; q++) {
      for (int i=0; i < strip.numPixels(); i=i+3) {
        strip.setPixelColor(i+q, c);    //turn every third pixel on
      }
      strip.show();

      delay(wait);

      for (int i=0; i < strip.numPixels(); i=i+3) {
        strip.setPixelColor(i+q, 0);        //turn every third pixel off
      }
    }
  }
}

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

      delay(wait);

      for (int i=0; i < strip.numPixels(); i=i+3) {
        strip.setPixelColor(i+q, 0);        //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) {
  WheelPos = 255 - WheelPos;
  if(WheelPos < 85) {
    return strip.Color(255 - WheelPos * 3, 0, WheelPos * 3);
  }
  if(WheelPos < 170) {
    WheelPos -= 85;
    return strip.Color(0, WheelPos * 3, 255 - WheelPos * 3);
  }
  WheelPos -= 170;
  return strip.Color(WheelPos * 3, 255 - WheelPos * 3, 0);
}


Работа программ Радуга, МИКС, Двутавр:





Добавить в избранное +65 +147
+
avatar
  • Bolsen
  • 23 ноября 2017, 21:00
-66
+
avatar
  • wojda
  • 23 ноября 2017, 21:40
+18
вот взяли бы и написали!
+
avatar
  • Alex_74
  • 23 ноября 2017, 21:55
+38
Ему некогда — он комментарии только пишет
+
avatar
  • Bolsen
  • 24 ноября 2017, 09:25
-12
+
avatar
  • Alex_74
  • 24 ноября 2017, 14:15
+6
Вас не поняли :-)
+
avatar
  • Rokko
  • 23 ноября 2017, 21:01
+3
Вот такое бы только через Line вход.
Не всем компьютеры нужны.
+
avatar
+2
есть такая мелкасхема MSGEQ7
+
avatar
  • mk2002
  • 24 ноября 2017, 23:22
0
Да микросхема есть, но я вот уже давно бьюсь над реализацией и пока без успешно. Очень много напутанных схем и скретчей.
+
avatar
0
что там можно напутать? есть же библиотеки под нее и под софтовый шим на 6 каналов
+
avatar
  • mk2002
  • 25 ноября 2017, 13:34
0
В том-то и дело что все есть, но уже 4 микросхему не могу заставить работать.
+
avatar
0
я видел ролик, где автору прислали 10 нерабочих мелкасхем
вот думаю у меня наверное тоже такая
надо будет протестировать
+
avatar
  • mk2002
  • 27 ноября 2017, 10:13
0
Вообщем пришли еще 2 микросхемы, и о чудо! Все заработало!!!
+
avatar
0
Можно ссылочку на лот?
+
avatar
  • rx3apf
  • 28 ноября 2017, 00:14
0
Но и отзывах на этот лот тоже есть информация, что не работоспособны. Похоже, что это лотерея…
+
avatar
  • mk2002
  • 28 ноября 2017, 21:58
0
Ну значит мне повезло.
+
avatar
  • mk2002
  • 30 ноября 2017, 08:53
0
Не долго радовался! Одна уже сдохла.
+
avatar
  • rx3apf
  • 25 ноября 2017, 00:11
0
А она вообще у кого-нибудь работает? Судя по отзывам на ali — массово неработоспособны. Конечно, можно списать и на кривые руки, но что-то подозрительно много… Проще, наверное, написать чисто программный спектроанализатор. Взять за основу, к примеру, elm-chan.org/works/akilcd/report_e.html
+
avatar
  • realasd
  • 23 ноября 2017, 21:08
+10
С интересом прочитал обе части.
К сожалению с Ардуино мало знаком. Покупал как-то набор с Ардуино уно в комплекте с кучей датчиков, но к сожалению времени так и не смог выделить на изучение.
Очень хотел бы повторить ваш проект. Вы не поделитесь ссылками для таких как я, на все комплектующие? Какая лента нужна и на сколько светодиодов и прочее. Реально по поиску нашел подобную ленту, там такое разнообразие, и лента разных цветов, и просто светодиоды и прочее, прочее. Но это разнообразие не дает понимания что именно нужно приобрести. Не обязательно самое дешевое. Просто для понимания что именно нужно.
Спасибо.
+
avatar
  • juraspb
  • 24 ноября 2017, 10:26
+9
Я покупал там:
Лента
Arduino
Arduino
Радио модуль и плата адаптера (для квартиры хватит модуля без антенны)
Радио модуль
Радио модуль
Адаптер
+
avatar
  • realasd
  • 24 ноября 2017, 11:11
0
Спасибо, заказал. Придут — сразу сделаю. )
+
avatar
0
Молодец, но скетч можно было бы и под спойлер убрать.
+
avatar
  • znammut
  • 23 ноября 2017, 21:20
+1
вот бы не только под винду
+
avatar
  • Alex_74
  • 23 ноября 2017, 21:56
0
Под Wine интересно будет ли работать? Под линухом перехватывать аудиопоток вообще не проблема.
+
avatar
+2
хотелось бы еще исходники программы для windows PC.
ну и посмотрите как надо перехватывать аудио поток без установки всякого хлама на машину — elchupanibrei.livejournal.com/22303.html
+
avatar
  • juraspb
  • 23 ноября 2017, 22:11
0
Я пытался с микшера, но у меня не получилось. Может надо было устройство снести и переустановить, но я не стал. С виртуальным кабелем без проблем.
+
avatar
+2
Исходники буду? На C# писали?
+
avatar
  • juraspb
  • 24 ноября 2017, 11:03
0
В программе заложена возможность расширения и модернизации через изменение кода скетчей для arduino. Писал на delphi.
+
avatar
  • Deluks
  • 23 ноября 2017, 21:51
+1
Гражданин juraspb, а есть схемка подробная!? В той теме чет не особо понял что к чему! С андруно не сталкивался, но ради такого бы подружился =).
+
avatar
  • juraspb
  • 23 ноября 2017, 22:43
+6
Схема корректная. На плате arduino все цифровые выводы подписаны от D0 до D13. Соединяем D2 платы с Din ленты, +5V платы с +5V ленты, GND платы с GND ленты из проводных соединений всё. Подключаем USB кабелем arduino к ПК. Заливаем скетч (прошивку). Запускаем программу и наслаждаемся. :)
+
avatar
  • Deluks
  • 24 ноября 2017, 00:14
0
Как подключать все ясно, спасибо, а где модули брать, на которых собственно все и построено!?
+
avatar
  • juraspb
  • 24 ноября 2017, 10:25
+3
Я покупал там:
Лента
Arduino
Arduino
Радио модуль и плата адаптера (для квартиры хватит модуля без антенны)
Радио модуль
Радио модуль
Адаптер
+
avatar
  • Deluks
  • 24 ноября 2017, 12:13
0
Во, спасибо… =)
+
avatar
  • Zhenjko
  • 24 ноября 2017, 16:13
0
Надо учитывать что если длинную ленту подключать к ардуино и питать через USB то не потянет.
+
avatar
  • juraspb
  • 24 ноября 2017, 18:18
0
Не проблема. 5V ленты отсоединить от платы ардуино и запитать ленту отдельным источником 5V. Вместо 3 проводов нужны будут 4.
+
avatar
  • Deluks
  • 24 ноября 2017, 18:40
0
Это понятно, но веть и ардуину надо питать. =)
+
avatar
  • juraspb
  • 24 ноября 2017, 20:24
0
Питание контроллера остаётся от USB ПК.
+
avatar
0
Вот бы под Андроид софтину… а так респект!
+
avatar
  • X3Shim
  • 23 ноября 2017, 22:23
+15
Посмотрите демку из библиотечки FastLED (аналог вашей неопиксел, только вроде работает шустрее). Я на ней часы сделал. Ну и по приколу кроме часов саму демку запускал. Видео мое.

+
avatar
  • Fedor
  • 24 ноября 2017, 09:22
0
Не пойму, это что? Как будто в трубе.
+
avatar
  • Prays
  • 24 ноября 2017, 09:50
+1
Два стекла, между ними по кругу светодиоды.
+
avatar
  • X3Shim
  • 24 ноября 2017, 20:24
+1
по кругу в хитром профиле лента, сзади зеркало, спереди полупрозрачное зеркало.
pp.userapi.com/c638324/v638324252/223c5/FOhqoY5j_ZQ.jpg
pp.userapi.com/c637922/v637922252/2e526/8mfWy3otofg.jpg
pp.userapi.com/c637922/v637922252/2e78d/rVASNMMnL5I.jpg
+
avatar
  • Fedor
  • 24 ноября 2017, 20:48
0
Вот это спасибо. Классно!
+
avatar
0
Круто, а что за профиль? Напечатанный на принтере?
Более полное описание есть?
+
avatar
  • X3Shim
  • 24 ноября 2017, 21:24
0
Да, напечатан. Рисовал сам. Хитрость в том, что если просто наклеить ленту по кругу, то сбоку не будет видно часть светодиодов, а у меня видно хотя бы точки на передней поверхности.

pp.userapi.com/c638324/v638324252/2239e/6R4nLTbeT3M.jpg
pp.userapi.com/c638324/v638324252/223a7/Z5g_8Z1V5YY.jpg

Отдать модели не проблема. Но полного описания нет и требуется достаточно много работы при сборке, подгонке, склейке (не помещается целиком на принтер).
+
avatar
0
У меня и принтера — то нет, а сделать такое хочется
Имеет смысл найти в Москве компанию, которая такое напечатает, или будет запредельно дорого?
+
avatar
  • X3Shim
  • 24 ноября 2017, 21:56
0
зависит от качества сильно. Вообще я бы дешево это не печатал. Сложная форма, печаталось очень долго, да еще и пристрелочных вариантов много было.
+
avatar
0
Да на ютубе вроде полно примеров как собирать. Вот, вот, тут, и тут ещё, это навскидку…
+
avatar
  • X3Shim
  • 25 ноября 2017, 11:01
0
Да, и именно одно из этих видео сподвигло меня на рисование своего корпуса. Тут тоже есть дырочки, что бы сбоку было видно светодиоды.

www.youtube.com/watch?v=YErWfe0aTiQ

Только у меня лента 144 на метр. И светодиодов не 60 в часах, а 120.
+
avatar
+1
спорим у тебя механическая клавиатура?
+
avatar
  • skif31
  • 24 ноября 2017, 03:07
0
неверю
+
avatar
  • Brs
  • 23 ноября 2017, 23:07
+1
Спасибо, желание повторить теперь ещё больше)
+
avatar
0
а можно сделать полностью независимую от компа, чтобы звук с микрофона ловила?? соответственно регулировка чувствительности нужна…
+
avatar
  • X3Shim
  • 23 ноября 2017, 23:20
+1
ардуина сама по себе это уже не потянет.
+
avatar
  • DimaDSP
  • 24 ноября 2017, 00:07
+1
Я начал баловаться с MSGEQ7. Работа + некоторые жизненные сложности притормозили процесс. Может чуть позже допилю цветомузыку. Очень интересная микросхемка. Пару штук с али приехали.
+
avatar
  • Alex_74
  • 24 ноября 2017, 06:58
0
kazus.ru/shemes/showpage/0/1548/1.html тут правда анализатор спектра делают — но это почти одно и тоже.
+
avatar
-1
Двутавр 1 на мигалки ментовские похож, напрягает :)
+
avatar
  • Nikkor
  • 24 ноября 2017, 06:44
+1
Добрый день.
Ссылку пожалуйста сделайте в начале обзора на первую часть, чтобы по фэншую было.
+
avatar
  • Alex_74
  • 24 ноября 2017, 06:55
+1
А в первой на вторую :-)
+
avatar
  • Meister
  • 24 ноября 2017, 08:40
0
Вы большой, нет, просто огромный молодец!

Чуточку смущает только, что вы никак не защищаете саму ленту, хотя бы резистором DATA-линию. Или я невнимательно читал?
Вот стандартные рекомендации:
Protect your WS2812’s!
In addition to the hookup above we recommend the following additions to help you get the most out of your WS2812-based devices:
Add an In-Line Resistor On the Data Signal
Placing a small-ish resistor between your Arduino’s data output and the WS2812’s data input will help protect the data pin. A resistor between 220 and 470 Ω should do nicely.

A 330Ω resistor that could be used between the Arduino’s I/O pin and the WS2812’s data input pin.

Try to place the resistor as close to the WS2812 as possible.

Add a Big Smoothing Capacitor
Before connecting the WS2812 to a power source, connect a big capacitor from power to ground. A cap between 100µF and 1000µF should be good.
This cap will help to smooth out your power supply. The current draw of a WS2812 can vary wildly, and as current draw grows and shrinks it’ll be up to your power source to compensate. The cap will act as a “power reservoir” to store energy in case the supply dips.
Try to place this cap as close to your WS2812 as possible by placing it in parallel to the Vcc and GND pins.
+
avatar
  • juraspb
  • 24 ноября 2017, 11:27
0
В datasheet на WS2812 про резисторы ничего не сказано. Входы WS2812 высокоомные, максимальный входной ток 1uA, максимальная входная ёмкость 15pF — ничего особенного. Резистор 330Ом между выходом D2 платы arduino и входом Din ленты и конденсатор по питанию ленты лучше поставить, особенно если длинна проводов большая. У меня плата стоит непосредственно у ленты все проводники короткие и проблем не возникло.
+
avatar
  • rx3apf
  • 24 ноября 2017, 13:36
0
Да и рекомендации какие-то сомнительные. Резистор между выходом передатчика (MCU) и входом приемника (WS2812) нужен не для защиты, а для предотвращения «звона» при большой длине соединительной линии, иначе в принципе возможны сбои данных (и, как следствие, световые «артефакты»). Номинал — 68..100 Ом будет самое то. Ставить — со стороны передатчика.

Что же до конденсаторов — в приличном БП на выходе уже и без того установлена достаточно большая емкость. И уж тем более глупо выглядит «от 100 uF». 1000 — уже на что-то похоже.
+
avatar
0
Про конденсаторы они имеют в виду прямо на линию повесить, если провода длинные по питанию.
+
avatar
  • rx3apf
  • 24 ноября 2017, 15:34
0
Это, возможно, какой-то смысл и имеет, но если провода длинные и малого сечения, никакой конденсатор не устранит просадку питания на ленте и сопутствующее изменение яркости. Впрочем, 5-метровая лента и сама по себе имеет достаточно большое сопротивление, и без дублирования питающих проводников отдельным проводом яркость по-любому будет падать к концу ленты.
+
avatar
0
2812 по даташиту имеют стабилизатор тока через диоды, поэтому при незначительном падении напряжения яркость падать не будет. Но токи там очень даже — каждый диод до 60 мА на белом свете, это 3.6А/м для плотности диодов 60/м. Возможно, если подключить питание с двух концов, то середине и хватит.
+
avatar
  • SERG27
  • 24 ноября 2017, 16:39
-4
скоро без дуринки воду не спустим. тфу. :)
+
avatar
  • rx3apf
  • 24 ноября 2017, 16:43
0
А Вы можете предложить более дешевый способ связать WS2812 с PC?
+
avatar
  • SERG27
  • 24 ноября 2017, 16:49
-5
+
avatar
  • rx3apf
  • 24 ноября 2017, 16:55
0
А вот тут готов согласиться (частично). Компьютер дает гибкость и неограниченное разнообразие возможных эффектов, но в общем-то излишен. А вот отказаться от адресуемых источников света не получится, по-любому это будет в ущерб качеству, эпоха примитивных фильтровых ЦМУ ушла, а цена и удобство применения WS2812 (и других вариаций на ту же тему) почти вне конкуренции. Значит, как минимум микроконтроллер необходим. Ну, а что там будет крутиться — это второй вопрос…
+
avatar
  • SERG27
  • 24 ноября 2017, 17:11
-2
эпоха примитивных фильтровых ЦМУ ушла,
это по вашему. :) вам цветомузыка нужна, или еще что?
+
avatar
  • rx3apf
  • 24 ноября 2017, 17:21
+1
Из прошлой эпохи — не нужна. Мою самодельную «заиграли» почти сорок лет назад и никакого желания повторять конструкции на ту тему (аналоговые фильтры, тиристоры, ЛН с цветными светофильтрами) не возникло. А вот на современной базе, с цифровой фильтрацией — иногда руки чешутся…
+
avatar
  • KaDaBRa
  • 25 ноября 2017, 05:17
+2
А может это логичней на ESP8266 сделать и по вафле передавать сразу данные спектроанализатора?:)
+
avatar
  • juraspb
  • 25 ноября 2017, 08:41
+5
Что у меня под рукой было из того и собрал. Делал чисто для себя. Понравилось. Решил поделиться.
+
avatar
  • KaDaBRa
  • 26 ноября 2017, 04:35
0
Не-не, я вас не осуждаю, не поймите неправильно. Вы молодец, я сам пытаюсь собрать из кучи разных проектов что-то, лежит у меня ESP, ардуинки, WS2812 и все не могу понять, что же я себе хочу сделать :) А у вас отличная идея, которую можно взять за основу :)
+
avatar
  • Evg2nik
  • 25 ноября 2017, 19:00
0
тоже хотел это предложить. а если потом еще и развить идею, добавить умны рассвет, управление по wi-fi…
+
avatar
  • juraspb
  • 25 ноября 2017, 22:05
0
WIFI не годится, задержки неприемлемые для работы цветомузыкальных программ.
А так периферию нужную подключите, в скетч добавьте и будет вам счастье.
+
avatar
  • KaDaBRa
  • 26 ноября 2017, 04:36
0
1-3 мс это огромные задержки? Вы проверяли или предположение?
+
avatar
  • juraspb
  • 26 ноября 2017, 07:52
0
Реально до 2секунд. Ребёнку сделал машинку с управлением от ПК по WiFi управлять невозможно из за задержек.
+
avatar
0
Протокол то какой был? хттп небось? Надо использовать удп или мктт для низкой задержки.
+
avatar
  • juraspb
  • 26 ноября 2017, 15:49
0
Хотелось же и IP камеру по стандартным протоколам туда же подцепить. С IP камеры 3мс точно не получить если не писать свои низкоуровневые протоколы. На работе лет 15 назад писал для Альтеры процессор для связи модуля CCD линейки на 12000 элементов с ПК по сети, это далеко не 4 дня, а несколько не месяцев.
Основная цель всех моих работ заинтересовать моего ребёнка. Смотреть на ютубе Галилео, про машины, про технические новинки и т.п. ему нравится, а что то делать сам не хочет. Надо оторвать его от планшета.
+
avatar
0
Что-то вы всё вместе смешали, короткие команды управления и ужатый высокоскоростной поток с камеры…
Это 15 лет назад было месяцы, а сейчас можно взять обёртку матлаба, которой только подсовывай поток данных, а она его в UDP отправит…
И что значит процессор?
+
avatar
  • juraspb
  • 26 ноября 2017, 20:14
0
С матлабом не работал. Альтера это ПЛИС. И процессор там надо было собирать, например NIOS.
+
avatar
0
А корка эзернета не заведётся без особо умной обвязки, если ей нужно только на потоковую передачу работать и приём захардкоженных команд?
Мне правда интересно, т.к. я делал такое за пару дней с матлабом, а сейчас наверное придётся без него и хотелось бы обойтись без всяких nios-ов и miсroblaze-ов.
+
avatar
  • juraspb
  • 26 ноября 2017, 20:58
0
Чтобы UDP завёлся надо еще пару протоколов реализовывать, как минимум ARP.
Может сейчас уже и можно. ПЛИС вперёд хорошо ушли, памяти внутри выше крыши, если вы об этом.
Я вашей задачи не знаю.
+
avatar
0
Цель как раз минимальными силами поднять протокол без сишного кода и с минимумом высокоуровневых протоколов.
А для arp нужен процессор?
Памяти всегда мало, но тут не в этом сложность.
+
avatar
-1
Проще купить готовую ЦМУ, или контроллер, который не зависим от наличия винды, андроида и т.д., а нужен просто источник звука. Discolux, в ютубе видосов полно, есть и мои видосы там, ну и где купить, тоже не трудно будет найти.
+
avatar
  • juraspb
  • 25 ноября 2017, 22:17
0
Вас никто не заставляет это делать.
Бюджет у систем разный. 7900руб. только контроллер Discolux на 4 канала, против меньше чем 1500руб. вместе c лентой (2м 120 светодиодов) и профилями в моём. При этом у моей системы можно управлять каждым светодиодом в отдельности, а у Discolux только 4-мя группами.
Или вы Discolux рекламируете?
+
avatar
  • Evg2nik
  • 25 ноября 2017, 22:58
0
Зачем искать черную кошку в темной комнате? на дисколюкс я облизывался в прошлом году, но так и не купил. денег пожалел. Да и хочется все же свое, что б можно было пилить время от времени под себя.
+
avatar
0
Согласен, бюджет конечно не маленький на дисколюкс. Сам долго думал, а потом всё таки купил. Сам давно хотел намутить себе, но привязываться через ардуинку и комп не было желания. Тут уже конечно, кому что нужно.
+
avatar
0
Интересно, а чего так не реагировали в первой части изготовления? Я когда тут написал, потом поглядел начало, как делали и увидел видосы. Про бюджет, согласен, только есть одно но, это универсальность применения, а не привязанность к компу/ноутбуку. Хоть самому можно петь и будет она работать, ибо чуйка у микрофона очень хорошая. У меня и в машине стоит она, и дома.
+
avatar
  • aaan73
  • 27 ноября 2017, 10:39
0
За такую сумму можно купить ноут и встроить в корпус цветомузыки. Всё равно дешевле будет. А универсальность получится максимально достижимая… К тому же будет очень ремонтопригодная, в отличии от промышленной.
+
avatar
0
Что? Ноут за 5к руб покупать, что бы подключить ЦМУ? Это вы серьёзно пишите в 2к17 году? Ахахахах. Ну да, куда проще ноут купить, чем то, которое работает от любого источника звука. Каждому как говорится своё))
+
avatar
  • Evg2nik
  • 27 ноября 2017, 12:25
0
Он прав, б.у. ноут намного удобнее, функциональнее и универсальнее, входы у ноута есть, микрофон тоже.
А вот 7к за узкоспециализированную железку, себестоимость комплектующих которы копейки, а все остальное — жадность магазина и менеджеров…
+
avatar
0
Когда ты делаешь в подвесном потолке ленту светодиодную, что бы всё по феншую, по периметру, то подключаешь просто этот контроллер и питание, которое берёшь уже с проводки освещения, то ты не подключаешь больше не старые ноуты и т.д., не привязан к чему либо больше. Плюс ещё, можно взять маленький контроллер за 4к руб и сделать на 1-3 Ватт светодиодах(на кажую частоту канала, свой цвет)с линзами, которая уже эффективнее и лучше получается, чем светодиодная лента. Ну и плюс в том, что тут, только несколько режимов написано и если ты не знаешь, как и что написать, будешь довольствоваться только этими режимами ЦМУ. То, что в цене не дёшего, согласен, но в этом есть свой плюс ещё, что на выходе получаешь кучу режимов работы ЦМУ.
+
avatar
  • sepulka
  • 26 ноября 2017, 00:35
0
Титанический труд!
И, видимо с душой делалось!
Огромное спасибо!
+
avatar
  • DJMAX
  • 26 ноября 2017, 20:50
0
Классно всё!!! Автору зачёт.
Собрал. Заработало.
Зачем только 19 полос???
+
avatar
  • juraspb
  • 26 ноября 2017, 21:13
0
Объедините как вам нужно. Я пока точно не решил как делить. Я попробовал несколько вариантов и остановился на том:
— Передавать 20 полос;
— Объединять 20 полос на arduino.
В этом случае разработку программ можно вести только на arduino, ему для этого ресурсов хватит, а программу для ПК можно считать завершённой.
В реальности 20 полоса практически не работала и я её добавил к 19. Поэтому полос 19.
+
avatar
  • DJMAX
  • 26 ноября 2017, 21:22
0
Спасибо за ответ. Я ещё не волшебник)))) Я только учусь)))
Английский знаю, а что за сокращения в скетче--ещё не допёр))
Хочется своей головой дойти.
Тупо поменял на 6 полос и по 10 светодиодов)))
Вот тут у меня ума хватило)))
Теперь радуга на радугу похожа)))
А Вот дальше…
+
avatar
  • juraspb
  • 26 ноября 2017, 21:41
0
Весь код трогать не надо. Код работает. Например для изменения первой программы надо разобраться только в 1 подпрограмме и её менять

void zmu() {
  TColor cl;
  TWord akk;
  uint8_t n,i,k,j;

  for(i=0; i<bandPass; i++) {
      cl.dw = pgm_read_dword(&colorTab[96*i/bandPass]); // читаем цвет i-ой полосы
      j=readData[i+2]; // заносим в j - значение выхода i-ого фильтра 
      // умножаем каждую компоненту R, G, B на j
      akk.w = cl.r * j;
      akk.w = akk.b1 * akk.b1; 
      cl.r = akk.b1;
      akk.w = cl.g * j;
      akk.w = akk.b1 * akk.b1; 
      cl.g = akk.b1;
      akk.w = cl.b * j;
      akk.w = akk.b1 * akk.b1; 
      cl.b = akk.b1;
      cl.dw = strip.Color(cl.r, cl.g, cl.b); // Получаем значение цвета с учётом яркости
      n=i*ledDist; // Вычисляем позицию начиная с которой будем зажигать светики для i-ого канала
      for(k=0; k<LedtoColor; k++) strip.setPixelColor(n+k, cl.dw); // зажигаем LedtoColor светодиодов начиная с позиции n
  }
  strip.show();
}

В процессе умножения возводим результат в квадрат для улучшения визуализации (т.н. гамма).
+
avatar
  • DJMAX
  • 26 ноября 2017, 21:56
0
СПАСИБО!!!
Попробую разобраться)))
+
avatar
0
подскажите ленту обязательно резать при обычном подключении к ucb или будет светится столько сколько разрешено в скетче
+
avatar
  • juraspb
  • 29 ноября 2017, 21:36
+1
Будет светиться столько сколько разрешено.
+
avatar
  • Andrew89
  • 01 декабря 2017, 11:42
0
Добрый день статья супер, то что надо, автор молодец Респект. Возникла проблема не могу понять почему: все подключил только управляющий кабель к D3 припаял в скетче поменял, скетч загрузил, виртуал линейный выход сделал по умолчанию, репитер поставил чтоб линейный на выход давал динамики. Но все запускаю а при запуске программы пишет НЕТ СВЯЗИ, ком порт тоже стоит дрова стоят. Пожалуйста подскажите что делаю не так.
+
avatar
0
Все хорошо, но у меня не работает ваша программа виснет после попытки нажать любую кнопку, связанную со светомузыкальными программами. ПК перезагружал, в режиме совместимости и от имени администратора запускал. Windows 10x64 плата arduino leonardo питание ленты от блока питания
+
avatar
  • juraspb
  • 03 декабря 2017, 20:30
0
У меня тоже Windows 10x64.
Порт arduino выберите перед выбором режима.
Администратор не нужен.
+
avatar
  • 25051972
  • 05 декабря 2017, 15:00
0
количество диодов ограниченно только блоком питания? я правильно понимаю? ставлю в скетче сколько мне надо и все? можно еще пояснить для меню простыми словами вот эту настройку ,, число полос ЦМУ (используемых светодиодов),,
+
avatar
  • juraspb
  • 05 декабря 2017, 16:02
+1
1. Да.
2. Использоваться будет только stripLed
3. От ПК всегда передаётся 19, но можно использовать не все
4. ledDist = stripLed / bandPass — число светиков на полосу, но зажигать вы можете не все, а LedtoColor. Если LedtoColor=ledDist горят все. Если LedtoColor<ledDist горят не все, но при этом они равномерно распределены по всей ленте.
Например LedtoColor=3 ledDist=5
R R R _ _ G G G _ _ B B B _ _ и т.д., цвета указал условно.
При этом (при слабом источнике питания) можно указывать полную длину ленты, но использовать необходимое количество светиков.
+
avatar
  • alex_k
  • 09 декабря 2017, 15:33
0
Собрал по проводной схеме с дополнительным блоком питания, лента 2м 120 диодов, arduino uno. В скетче COMtoLED.ino прописал:
#define stripLed 120 // количество светодиодов в ленте
#define bandPass 15 // число полос ЦМУ (используемых светодиодов)
#define ledDist 8
#define LedtoColor 8

Нормально работает только программа с прямоугольным окном, в которой нет регулировки уровня звука на входе. Из последних версий, где квадратное окно, предпоследняя работает, но начинает жутко тормозить через пару минут работы цветомузыкальной программы. Самая последняя версия программы пишет хоть и пишет port opened, но на нажатие кнопок выбора цветомузыкальной или динамической программы ардуино никак не реагирует, и сама программа тоже начинает тормозить через некоторое время. Подскажите пожалуйста в чем может быть проблема? Использую Virtual audio cable 4.15, ОС windows 7 x64. Я бы пользовался и первой версией, но в ней очень не хватает регулировки уровня звука, приходится выкручивать громкость почти на минимум.
+
avatar
  • alex_k
  • 09 декабря 2017, 16:11
0
Залил свежий скетч, последняя версия заработала с ардуино, но программа по прежнему начинает тормозить через пару минут работы цветомузыкальной программы.
+
avatar
  • juraspb
  • 09 декабря 2017, 16:45
0
К новой программе нужен скетч из её архива. При установке полной яркости и стандартных цветов очень часто используется код 255, а в первой версии он использовался в качестве управляющего кода при обмене данных. В новой версии управляющие коды 254 и 253 поэтому новая программа не работает со старыми скетчами и наоборот. Программа по COM у меня работает стабильно.
Примечание для всех. Если программа не работает по RF или тормозит смените канал RF в скетчах COMtoRF и RFtoLED.

radio.setChannel(5); // RF канал от 0 до 127

Каналы в обоих скетчах должны совпадать.
+
avatar
  • alex_k
  • 09 декабря 2017, 17:13
0
Со скетчем разобрался, не заметил в шапке примечание. Попробую в windows 10, может там будет нормально работать.
+
avatar
  • juraspb
  • 09 декабря 2017, 17:33
0
Подключил по COM. Проблема есть. Пока не ясно почему. Программы у меня работают без сбоев, а вот на динамических программах если тронуть ползунок регулировки то программа виснет. Причина видно та же, что и у вас на 7.
В 10 при RF подключении, как у меня, всё работает без проблем.
Попытаюсь отловить сбой, но не быстро.
+
avatar
  • alex_k
  • 09 декабря 2017, 18:00
0
На десятке тоже самое. Начинает тормозить именно на цветомузыкальных программах после пары минут работы.
+
avatar
  • juraspb
  • 09 декабря 2017, 18:15
0
Свой тормоз я отловил. В COMtoLED не ввел команду 'p' от ползунка она и блокировала выполнение программы. Если в процессе передачи возникнет ошибочная команда она может блокировать выполнение программ.
Сможете поставить проверку в

void cmdExecute() {
    if (readData[0]=='p') {
     param = readData[1];
    }
    else {

     prog = readData[0];
     param = readData[1];

      switch (prog) {
      case 'r': { zmu();  break; }

изменить на

void cmdExecute() {
    if (readData[0]=='p') {
     param = readData[1];
    }
    else {
      switch (readData[0]) {
      case 'r': {prog = readData[0];param = readData[1];  zmu();  break; }

и так во всех остальных

case '..': {prog = readData[0];param = readData[1]; .....}

в этой подпрограмме.
Так мы уберём несуществующие команды.
Или через минут 20 скачайте архив, я исправлю и обновлю.
+
avatar
  • alex_k
  • 09 декабря 2017, 18:25
0
Ок, спасибо, позже попробую и отпишусь.
+
avatar
  • juraspb
  • 09 декабря 2017, 18:33
0
Обновил. Советы приветствуются.
+
avatar
  • alex_k
  • 09 декабря 2017, 20:09
0
К сожалению все тоже самое, может все-таки дело в самой программе CMU? Она работает некоторое время нормально, затем начинаются фризы, програма тормозит, лента тоже почти не мигает. Повторюсь, в первой версии все работает нормально.
+
avatar
  • juraspb
  • 09 декабря 2017, 21:37
0
Программа практически не менялась в части обмена и захвата. Один бит поменял.
Два варианта попробуем.
Первый (вернул бит).
Новая с битом а-ля 1
+
avatar
  • juraspb
  • 09 декабря 2017, 21:50
0
Прошлую ссылку убил. При считывании пишет вирус и антивирус сразу выругался.
Новая а-ля 1
+
avatar
  • juraspb
  • 09 декабря 2017, 22:13
0
Внешний источник должен подключаться только к +5V ленты. Arduino питается от USB ПК. Если вы соедините эти два питания возможны конфликты. Соединены только GND. Резистор 30-100Ом последовательно поставьте по цепи Din.

Я у себя включаю без внешнего источника. Ошибок нет и в старой и в новой.

Попробуйте без внешнего источника на меньшее число светодиодов. Будут зависания?
+
avatar
  • alex_k
  • 09 декабря 2017, 22:27
0
По питанию все так, общий только минус. Резистора нет. Попробую сделать как вы предлагаете.
+
avatar
  • alex_k
  • 09 декабря 2017, 22:30
0
Пробовал новую программу, тоже самое, сначала все работает отлично, затем «анализатор спектра» в программе начинает тормозить и лента тоже.
+
avatar
  • alex_k
  • 09 декабря 2017, 22:44
0
Кстати перезапуск программы CMU помогает до ее следующего зависания.
+
avatar
  • juraspb
  • 09 декабря 2017, 23:52
0
Ещё я размер пакетов уменьшил до 24 байт.
Вернул 32.
Как бы небольшая задержка.

Загрузку процессора ПК посмотрите.
+
avatar
  • alex_k
  • 10 декабря 2017, 00:11
0
Все так же, загрузка не более 20%. Пробовал и разные виртуальные кабели, на разном железе, все одинаково. Зато старая версия работает стабильно.
+
avatar
  • juraspb
  • 10 декабря 2017, 10:29
0
Последние две попытки
1. Программа для новой v2 версии скетчей
Версия 2
2. Версия 1 с регулировкой уровня.
Из моего архива. Вроде ничего до сего момента не менял. У себя не проверял. Скетчи брать ваши с версии 1. На сайте я обе версии за день до вашего письма сделал идентичными.
+
avatar
  • alex_k
  • 10 декабря 2017, 11:42
0
CMU_v3 работает отлично! Огромное Спасибо! Версию 1 с регулировкой пока не пробовал, но теперь в ней и смысла нет.
+
avatar
  • juraspb
  • 10 декабря 2017, 12:01
0
Замечательно.
Все промежуточные файлы удалил.
Архивы в статьях обновил.

На новогодних гирляндах динамические программы интересные увидите ссылки кидайте, добавлю в скетч.
+
avatar
0
Привет. Подскажи. В режиме МИКС светится только половина ленты, а в режиме радуга, диоды светятся два через два.

Вопрос по работе программы.
Можно, что бы программа запоминала COM порт и устройство вывода. Так же было бы удобно если бы она имела возможность скрываться в трее и следовательно можно ее было тогда кидать нормально в актозагрузку
+
avatar
0
Так как у меня после загрузки скетча, были проблемы (в режиме микс светилась только половина метровой ленты (60 диодов) и в режиме радуга диоды светились два через два).
Подправил скетч. Теперь работает как я хотел.
Может кому пригодится. yadi.sk/d/T_ORC6Yv3QUoo9
P.S. Отличий немного. Можно найти сравнением с оригинальным файлом.
+
avatar
  • juraspb
  • 10 декабря 2017, 19:33
0
Дополнение.
Сравнивайте подпрограммы скетчей RFtoLED и COMtoLED. У меня подключение по RF и в COMtoLED я могу не все исправления внести.
+
avatar
  • juraspb
  • 10 декабря 2017, 18:29
0
Я при написании задавал непосредственно количество светиков в моей ленте. Часть исправил на вычисляемые, часть нет. Поэтому и светилась половина ленты. Подпрограммы очень простые и не составит труда подправить. Я надеялся что человек который смог залить скетч разберётся.
И второе, придумать красивую программу времени может намного больше уйти чем у меня на написание программы и скетчей. Я надеюсь что в ком то проснётся желание что то добавить для себя и поделится. Все возможности для этого есть. Если дальше будет желание у кого добавлю кнопок. Сохранение номера COM сделаю.
+
avatar
  • alex_k
  • 10 декабря 2017, 11:16
0

На 2м14с начинаются тормоза. Лента начинает мигать с такой же частотой и постоянно засвечена 13 полоса (3 справа цвет).
На 13 секунде

Если закрыть программу, то лента начинает светиться нормально.
+
avatar
  • alex_k
  • 10 декабря 2017, 11:16
0
Это про старые версии, новую сейчас попробую
+
avatar
  • demanik
  • 13 декабря 2017, 19:12
0
Автору респект.
Прикрутил к такой гирлянде:

Вопрос: какое назначение этого блока в программе?

Предложение добавить к программе в динамических эффектах установку максимальной яркости, и в статических цветах ползунок регулировки яркости.
+
avatar
  • juraspb
  • 13 декабря 2017, 19:47
0
В программах начиная с 4 можно менять цвет программы 1, 2… 5 в зависимости от количества цветов в программе. В 6 программе можно менять темп каждого цвета. В ваших скетчах (если соберётесь написать) с 7 по 12 вы можете использовать их по своему усмотрению. Главное что есть возможность передать несколько цветов и параметров в скетч.
+
avatar
  • djsignal
  • 14 декабря 2017, 15:13
+1
Ссылка на программу и скетч (в начале статьи) почему то не работает ((. Не могли бы Вы обновить — оччччень уж хочется попробовать сиё деяние )).
+
avatar
  • juraspb
  • 14 декабря 2017, 15:38
+1
+
avatar
0
Почему то по этой ссылке интерфейс отличается от того что на скринах, нет кнопки «новая», 5 вкладок. Вы еще раз переделали или всеже в архиве устаревшая версия?
+
avatar
  • juraspb
  • 22 декабря 2017, 14:16
+1
В архиве новая версия. Больше динамических программ 55 готовых (+48 пользовательских) + установка цвета ленты. Цветомузыкальную пользовательскую программу я убрал, большинству пользователей она мешает. Можно переделать одну из имеющихся.
Если кто напишет свою хорошую цветомузыкальную подпрограмму присылайте мне, я добавлю её в программу для всех.
Статью обновлять не буду, нет времени.
+
avatar
  • djsignal
  • 14 декабря 2017, 15:45
0
Огромное Вам Спасибо — буду пробовать!
+
avatar
  • paaevv
  • 17 декабря 2017, 19:06
+3
СПАСИБО ТЕБЕ ДРУЖИЩЕ ЗА цветомузыку.
Лучшая разработка года. Не знаю где за тебя голосовать. 1000 голосов.
Спаяли в школе к Новому году, работает от компа- вещь.
Двутавр — супер.
Детям нравится.
СПАСИБО.
+
avatar
  • 25051972
  • 22 декабря 2017, 14:50
0
прислали ленту начал пробовал на нано Atmega 328 моргающий диод работает при записи цветомузыки пишет ошибка компиляции, что я делаю не так? статус начинающий )))
+
avatar
  • juraspb
  • 22 декабря 2017, 15:50
+1
Библиотеки:
— Adafruit_NeoPixel
и
— RF24 (для беспроводного варианта)
поставьте.
+
avatar
  • 25051972
  • 22 декабря 2017, 18:20
0
Спасибо все заработало! но возник новый вопрос программа не такая как на фото почему? у вас цветомузыкальные, динамические а по ссылке музыкальные и бегущие огни
+
avatar
  • juraspb
  • 22 декабря 2017, 21:49
0
Вам ехать или шашечки?
+
avatar
  • Masildos
  • 23 декабря 2017, 08:55
0
При отсутствии сигнала, в режиме цветомузыки, диоды слегка светятся — это подсветка или так не должно быть?
Авто перебор всех бегущих режимов не планируете?
+
avatar
  • juraspb
  • 23 декабря 2017, 11:44
+2
Да это подсветка.
Авто перебор сделаю как время будет.
Вы сами можете в скетче, например по 99 программе, сделать перебор всех программ.
+
avatar
  • paaevv
  • 25 декабря 2017, 21:03
0
Подскажите, как отредактировать бегущую сине-зеленую строку? (Дежурный режим когда нет сигнала, когда просто подключено питание), в скетче для 30 светодиодов.
+
avatar
  • juraspb
  • 25 декабря 2017, 21:38
+1
uint8_t prog = 25;
Номер программы 25 измените на номер программы которая вам больше нравится.

Для 30 светодиодов установите
#define stripLed 30
#define bandPass 15 // bandPass * LedtoColor = 15 * 2 = 30 stripLed
#define LedtoColor 2
#define ledDist 2
+
avatar
  • paaevv
  • 26 декабря 2017, 20:30
0
Получилось, Спасибо.
Можно ли реализовать бегущую строку по 1-му светику, затем 2,3,4,5.
А если с реверсом, то супер конечно. Спасибо. С Наступающим Новым годом!
+
avatar
  • paaevv
  • 27 декабря 2017, 09:57
0
Какой номер программы Радуга Т.
Спасибо.
+
avatar
  • juraspb
  • 28 декабря 2017, 07:28
+1
241 или 242
+
avatar
  • paaevv
  • 29 декабря 2017, 00:35
+2
СПАСИБО.
Сегодня в школе на Новогоднем утреннике, работала лента 120 светодиодов. Все очень замечательно.
Автору респект и большущее уважение. Работали через usb. Худрук, дети учителя в экстазе от такого цветового волшебства.
Особенно порадовала цветомузыка. После советских 3-х канальных — большущий прогресс.
Просто и гениально.
В сети много чего разного, здесь самое то.
juraspb, если найдется немного времени, поделитесь, есть ли возможность реализовать бегущую строку по одному светодиоду, затем 2,3,4,5. А если с реверсом, то супер конечно.
Как уменьшить яркость свечения ленты в дежурном режиме — Радуга Т-242.
Спасибо. С Наступающим Новым годом!
[email protected]
+
avatar
  • juraspb
  • 29 декабря 2017, 19:04
+2
Пока править нет времени.
Если у вас кружок информатики в школе есть дайте детям скетч подправить.
Есть дети интересующиеся и очень продвинутые.
Там всё достаточно просто.
Программы сделаны в виде отдельных подпрограмм.
Будут вопросы отвечу.

А так будет время подправлю.
+
avatar
+1
Классно всё работает. Автору огромное спасибо!!! Только не могу понять, почему у меня по ссылке onedrive.live.com/?authkey=%21AOwMBlP82aS3Pxk&id=82E10B7C9F666F78%21105&cid=82E10B7C9F666F78 устанавливается программа с другим интерфейсом ,
а не такой

Пробовал несколько раз. Не пойму, в чём дело.
Подскажите, пожалуйста.
Заранее благодарю.
+
avatar
  • juraspb
  • 29 декабря 2017, 21:15
+1
Убрал чтобы убрать вопросы почему старые скетчи не работают.
В новой версии больше функций и возможностей для расширения.
+
avatar
  • paaevv
  • 29 декабря 2017, 20:34
0
Раньше была ссилка на предыдущую программу.
Автор ее убрал.
smsirkutsk, Вы умеете править скетчи?
Есть небольшая просьба.
Спасибо.
Можно писать на [email protected]
+
avatar
  • juraspb
  • 29 декабря 2017, 21:56
+2
Накапливающаяся строка не очень смотрится. Когда горит 1 светик темно, когда горят все светло. Большие перепады по яркости.

Накидал по быстрому, программы 60..64. Должны работать.
Полностью не проверял поэтому в общий доступ не выкладываю.

COMtoLED
+
avatar
  • paaevv
  • 29 декабря 2017, 22:52
0
Работает, все ОК.
СПАСИБО,
+
avatar
  • Evgenik
  • 31 декабря 2017, 18:09
0
Подскажите, в чем может быть проблема? залил скетч, подключил по схеме, запустил программу на ПК, порт открыт, виртруальный порт тоже настроен… в программе на компе прыгают гистограммы в такт музыке. а управлять еспшкой не получается ((( не реагирует ни на что. крутит красно-зеленые бегущие полосы и все. ничего не понимаю, вот что с ней не так?
+
avatar
  • juraspb
  • 31 декабря 2017, 18:59
0
Красный и зелёный это программа по умолчанию. Проверьте работу переключения программ бегущих огней. Если они переключаются то связь есть. Если нет то проверяйте соединение. ESP у меня нет и отличий esp от ардуинки я не знаю.
+
avatar
  • Anum
  • 29 декабря 2017, 22:15
+1
Спасибо за отличный проект не много помучился с подключением с не той стороны ленты din с do перепутал но разобрался все работает через audio repeatr virtual audio cable.
+
avatar
  • paaevv
  • 04 января 2018, 05:16
+1
Предложение добавить к программе в динамических эффектах установку максимальной яркости, и в статических цветах ползунок регулировки яркости.
+
avatar
  • paaevv
  • 04 января 2018, 11:22
+1
Как в программа 242 уменьшить яркость свечения светодиодов?
Спасибо большое.
+
avatar
  • juraspb
  • 07 января 2018, 00:30
0
Регулировку яркости делать не буду. При изменении яркости меняется цветовой тон.
Версию 4 выложенную на сайте корректировать больше не буду. Вы её можете использовать как есть, изменять и дополнять.
Для поддержавших проект скину ссылку на версию 5.
Версия 5 включает 6 цветомузыкальных программ, и 56 динамических, а так же cохранение параметров установленных для каждой из программ.
+
avatar
  • paaevv
  • 07 января 2018, 05:32
0
Спасибо. Но как же нам с другого государства поддержать Ваш проект.
Очень уж класная вещь. С уважением Анатолий [email protected]
Может для школы сделаете скидку.
УДАЧИ ВАМ.
+
avatar
  • juraspb
  • 07 января 2018, 11:42
+1
Я не прошу конкретную сумму. Каждый может помочь на сумму которая ему не обременительна.
На страничке о программе указано как можно помочь. Это работает из любой страны.
Можно даже на телефон кинуть, он совпадает с реквизитами QIWI.
Я честно поработал. Проект по моему получился. Много предложений от читателей добавил в программу.
+
avatar
  • paaevv
  • 07 января 2018, 16:17
0
Уже час пытаюсь перевест но…



пробую на мобилку с Украины



Вот блин…
+
avatar
  • paaevv
  • 07 января 2018, 21:25
0
С Украины пробуем всеми возможными средствами.
cardshop.com.ua/
На qiwi пока невозможно, жаль.
Может перевести каким-либо родственникам в Украине?
+
avatar
  • DigiBoy
  • 06 января 2018, 15:02
0
Огромное спасибо!!! Все работает. Отличный проект выходного дня «под ключ»… (заодно спасение души от зомбоящика и тела от оливье)))))
По железу: адаптер для радиомодуля плюс ардуинку покупать не рационально, на aliexpress можно просто купить платку Nano v.3 с нормальным источником 3.3 В на борту, например от RobotDyn.
По программе: если для управления и воспроизведения музыки использовать только компьютер, то для раздачи аудио сигнала лучше воспользоваться советом от pikabu.ru/story/odnovremennyiy_vyivod_zvuka_na_2_ustroystva_5218139
В нашем случае, под Windows10, активируем стереомикшер в качестве устройства записи и в качестве его выхода выбираем виртуальный аудиокабель… далее динамики/наушники/… воспроизводят музыку, лента работает.
+
avatar
  • paaevv
  • 07 января 2018, 23:02
0
Мужики, беру на себя ответственность прокоментировать последнюю 5 разработку juraspb.
Ребята-вещь. С большущим сожалением не могу никак отблагодорить автора геиальной и простой для повторения разработки.
Поверьте по сравнению с 4 версией небо и земля.
Щиро дякую.
+
avatar
  • juraspb
  • 10 января 2018, 21:30
0
Ребята с Украины Вас там так запрессовали в сторону России дальше некуда. Ещё два варианта для тех ребят с Украины кто хочет помочь проекту

yandex money: money.yandex.ru/to/41001598825682
или
webmoney: R395409105606

Ссылку на версию 5 запрашивайте лично. Мне просто интересно сколько человек повторяют проект. (и в России и на Украине)
Я по любому всем кину ссылку, даже без помощи, но с ней у меня желания развивать версию 5 будет больше.
+
avatar
  • alex_k
  • 17 января 2018, 14:09
0
Юрий, поделитесь пожалуйста ссылкой на пятую версию.
+
avatar
  • JekaNn
  • 10 января 2018, 19:20
0
У меня скачивает только 4 версию, дайте плиз ссыль на 5ю
+
avatar
  • juraspb
  • 10 января 2018, 21:17
+1
Кинул ссылку.
Надеюсь на поддержку проекта.
+
avatar
0
Здравствуйте. Можно ли получить пятую версию.
Проекту помог как мог :)
+
avatar
+1
Добрый вечер, Всем следящим за проектом. 5 версия ШЕДЕВРАЛЬНА — БОМБА, ВЗРЫВ ВИЗУАЛЬНОГО КАЙФА. Не поленитесь киньте автору хоть сколько то финансов, у кого есть возможность киньте больше — Оно того стоит. Автор сотворил Чудо и делится с Вами, проявите уважение и отблагодарите его и думаю он придумает еще какое то чудо, но это для меня 5 версия ЭСТЕТИЧЕСКИЙ ОРГАЗМ — те кто любит слушать музыку Кайфонут. juraspb Ты Творец великого кайфа по крайней мере для меня. Слов не хватает на сколько это выглядит красиво и так тонко и качественно настроено. ЛЮДИ ПОДДЕРЖИТЕ АВТОРА — ЭТО ЭЙФОРИЯ КРАСОЧНОСТИ.
juraspb всего самого хорошего, позитивного, гармоничного и всего всего, это бэнгер в програмном мире, вдохновения и и нескончаемый океан благодарностей тебе. Спасибо тебе за ЭЙФОРИЮ!!!
+
avatar
0
Честно говоря, с изрядной долей скептицизма отношусь к подобным, восторженным, комментариям. Но тут вынужден с Вами согласиться. Действительно, 5 версия хороша'!
+
avatar
  • juraspb
  • 15 января 2018, 17:39
0
Перехваливаете.
+
avatar
0
Нифига. Я на «МАГИИ» реально залип!
Лента приклеена на задней стенке монитора, был «Амбилайт», перешил Ардуину в цветомузыку. Получилось не очень пока не включил «МАГИЮ». На другие режимы теперь даже не смотрю.
Вот только после перезагрузки компа режим сбрасывается на дефолтный.
+
avatar
0
Тоже на магии залипаю.
+
avatar
  • paaevv
  • 10 января 2018, 22:30
0
Ребята с Украины Вас там так запрессовали в сторону России дальше некуда. ???????????????????????????????????????????????????????????????????????
+
avatar
  • juraspb
  • 11 января 2018, 21:51
0
paypal нет,
webmoney нет,
qiwi нет,
вы где живете в КНДР.
+
avatar
+1
Вчера получил от Юрия (надеюсь, что не ошибся с именем))) пятую версию. Цветомузыка и правда очень хороша. Спасибо огромное за ваш труд.
Если бы ещё как-то от компа избавиться, да прикрутить управление от Bluetoth (типа RemoteXY))))
+
avatar
+1
А можно сделать, чтобы при регулировки темпа «бегушек», ползунок регулятора работал инверсно. Т.е. чем правее, тем быстрее темп. Мне кажется, что так было бы логичней.
И ещё, чтобы при переключении режимов ползунок регулятора оставался в предыдущем состоянии. А то неудобно, приходится при каждом переключении режима возвращать регулятор в предыдущее состояние, если хочешь сохранить темп или уровень. Причём он иногда сохраняет положение, а иногда устанавливается на средний уровень.
+
avatar
  • JekaNn
  • 13 января 2018, 16:28
0
У меня в 5й версии очень часто отваливается порт в программе, кто знает почему?
+
avatar
0
За все время пользования программой, порт никогда не отваливался.
И кстати, что подразумевается под отваливанием?
Может у Вас ардуинка отваливается, а не порт в программе?
+
avatar
  • JekaNn
  • 15 января 2018, 15:54
0
Возможно вы правы, как это исправить?
+
avatar
  • juraspb
  • 15 января 2018, 17:38
+1
Попробуйте использовать другой порт, другой кабель, другую ардуинку для выявления неисправной части. Идите от меньших затрат к большим. А дальше по обстоятельствам.
+
avatar
  • Alex_P4
  • 15 января 2018, 16:38
0
Отличная штука! Повторил работает отлично! Хочу сделать её в корпусе от телевизора Samsung 39 дюймов (битая матрица) матрицу выкинуть. оставить только поляризатор.
+
avatar
  • Alex_P4
  • 15 января 2018, 17:01
0
Интересно бы пятую увидеть в работе. Куда поддержать проект?
+
avatar
  • JekaNn
  • 15 января 2018, 18:14
0
yandex money: money.yandex.ru/to/41001598825682
или
webmoney: R395409105606
+
avatar
  • Alex_P4
  • 15 января 2018, 18:27
0
Помню видел где то. В самой же программе есть)). поддержал чуток. PayPal
+
avatar
  • juraspb
  • 15 января 2018, 19:14
0
Спасибо.
+
avatar
  • sepulka
  • 16 января 2018, 14:57
0
И я чуть чуть добавил.
Успехов в творчестве!
Пусть «Муза» Вас не покидает!
+
avatar
  • juraspb
  • 16 января 2018, 20:29
0
Для всех пользователей версии 5 обновил архив до 5.5.
1. Заменил Сказку.
2. Добавил Магию реверс (по просьбе).
3. Добавил почту для связи (по просьбе).

Скетч RF версии проверен, работает. В скетч COMtoLED изменения перенёс должно работать (не проверял). Если будут проблемы пишите проверю.
+
avatar
0
Пока не добавил библиотеку IRremote — не заработало.
+
avatar
  • juraspb
  • 16 января 2018, 22:06
0
ИК пока ещё не отладил, а отключить забыл.
+
avatar
  • solaris
  • 16 января 2018, 21:49
0
Поддержал проект. Удачи!
Это мой первый проект. Есть мануал для новичков: какие библиотеки, программы скачать и установить? СПС
+
avatar
  • juraspb
  • 16 января 2018, 22:06
0
Спасибо.
+
avatar
0
Если я пользователь 5-й версии, то как мне получить обновления программы? И почту?
+
avatar
  • juraspb
  • 17 января 2018, 10:27
0
Открываете страничку о программе и нажимаете кнопочку <Загрузить последнюю версию программы>.
В 4 версии обновлений нет.
+
avatar
0
Режимы в контекстном меню не совпадают с режимами в окне. (Остались от 5 версии)
+
avatar
  • juraspb
  • 18 января 2018, 20:20
0
Скетчи перешейте.
+
avatar
0
Перешил, поставил 5.6

Всего 6 режимов в трее. Если нажать на «Магия» включается «Сказка».
+
avatar
  • juraspb
  • 18 января 2018, 21:39
0
Спасибо. Про это меню я забыл. Подправлю.
+
avatar
  • juraspb
  • 18 января 2018, 22:32
0
Подправил.
+
avatar
  • sepulka
  • 16 января 2018, 21:21
0
Можно ли подавать аудиосигнал на линейный вход звуковой карты?
Как это оговорить в настройках?
+
avatar
  • juraspb
  • 16 января 2018, 22:08
0
Разрешите линейный вход в настройках звуковых устройств ПК и выберите линейный вход в программе CMU.
+
avatar
  • sepulka
  • 16 января 2018, 21:59
0
Что то у меня не получается одновременно цветомузыка.
Или «цвет» или «музыка».
+
avatar
  • juraspb
  • 16 января 2018, 22:31
0
1. Включите микшер в настройках звуковых устройств.
2. В свойствах микшера укажите прослушивать на… Например: динамики ПК.
3. Выберите микшер в программе CMU.

Примечание: при выборе для воспроизведения некоторых устройств в микшере, у меня это выходное устройство 2D FHD LG TV-C (телевизор LG), дополнительный выход микшера не работает. В этом случае используйте виртуальный аудио кабель.
+
avatar
  • sepulka
  • 16 января 2018, 22:33
0
На Win-7 получается подавать звук на линейный вход, а на Win-XP — никак.
Видимо какие то «хвосты» от программ «улучшайзеров» остались.
+
avatar
  • paaevv
  • 18 января 2018, 19:31
0
В UNO работает паршиво, все режимы нарушены.
Микс работает как стробоскоп и т.д.
+
avatar
  • juraspb
  • 18 января 2018, 20:30
0
Скетчи перешейте. При добавлении новых программ нумерацию подвинул.

И обновитесь. Только что залил новую версию.
Чуть подновил первые четыре цветомузыкальные подпрограммы. Динамику уменьшил. Меньше мельтешение.
Можно поиграться с динамикой в параметрах.
#define fallspeed 15 (от 1(очень медленно) до 128(быстро))
+
avatar
  • paaevv
  • 18 января 2018, 20:51
0
Пробуем, спасибо.
+
avatar
  • paaevv
  • 18 января 2018, 20:07
0
Поддержал!!!
+
avatar
  • Alex_P4
  • 19 января 2018, 04:49
+1
Заметил что цветомузыка работает только от левого канала. Баланс на правый выкрутил все потухло. Стоит Virtual Audio Cable 4.15
в настройках включен стерео микшер.
+
avatar
  • paaevv
  • 20 января 2018, 15:14
-1
Ваша разработка действительно то, что давно уже было нужно всем меломанам.
До этого, я не часто слушал музыку с помощью компа, с Вашей разроботкой-реально завис. Особенно класно смотрится лирическая музыка, класика.
Вот интересная статейка о влиянии музыки и цвета на состояние человека.
Современные тенденции цветомузыки
В век информационных технологий широко распространены цветомузыкальные визуализаторы. Это специальные мультимедийные программы, которые в момент воспроизведения на экране компьютера или любого цифрового гаджета, строят по определённому алгоритму обработки звукового сигнала узоры, фигуры и прочие цветовые абстракции.
В современной светомузыкальной аппаратуре соответствие цвета звуку строится по такому традиционному принципу разделения частотного диапазона звука на каналы (соответствие необязательное, просто традиционно сложившееся):
красный — диапазон до 20-400 Гц;
оранжевый — диапазон от 400 до 800 Гц;
жёлтый — диапазон от 800 до 1600 Гц;
зелёный — от 1600 до 3000 Гц;
голубой — в 3000 – 8000 Гц;
синий — 8000 – 12000 Гц;
фиолетовый — 12000 – 20000 Гц
В физиологии влияния цвета и музыке открыли немало интересного. Например, при монотонных звуках глаза лучше видят зелено-голубые тона, а оранжево-красные различаются хуже; с нарастанием громкости чувствительность глаз к зелёным цветам увеличивается, а к красным – уменьшается.
Именно для усиления эмоционального воздействия на слушателя применяется синхронизация звука, яркости света и его цветовой гаммы. Проводились многочисленные эксперименты с цветомузыкальным сопровождением занятий как детей, так и взрослых. Например, уроки физкультуры в сочетании со средствами аудиовизуального воздействия способствовали повышению двигательной активности и точности выполнения действий, и в итоге повышается уровень мотивации занимающихся для выполнения физических упражнений.
3.3. Выводы
Как мы выяснили с вами из второй части, посвящённой исследованию влияния звука в совокупности с воздействием цвета и света на сознание и здоровье человека, можно определить основные рекомендации для гармонизации как психического, так и физиологического состояния человека:
целенаправленное применение музыки и световых импульсов, может оказывать эффективное управляющее (мотивирующее) воздействие на показатели физической активности и координации;
избегайте аудиовизуальных воздействий, способных вызвать у вас сильные дискомфортные состояния, если это произошло, то нужно нормализовать состояние в спокойной обстановке и оградить себя от подобного воздействия в будущем;
влияние цвета в сочетании с музыкой имеет мощный кумулятивный эффект на сознание;
создавайте цветовой и музыкальный фон в вашем доме и офисе в соответствии с принципами гармонии, что очень быстро отразится позитивными переменами в вашей жизни;
каждому музыкальному направлению соответствует свой стиль одежды, который выбирают меломаны;
использование гармонично влияющей классической музыки в сочетании с эволюционными цветами интерьера или одежды, способны вдохновлять на позитивные перемены в жизни.
Статья полностью-https://ayfaar.ru/articles/vliyanie_zvukov_muzyki_i_cveta_na_samosoznanie_i_zdorove_cheloveka

Програмка приложения, поверх всех окон, бывает полезно для нашей цветомузыки.
blog.rasks.ru/deskpins-programma-poverh-vseh-okon-always-on-top

P.S. Дружище, как бы уменьшить все-таки яркость в сказке и 2-х магиях. Глазкам больно-детки смотрят.
В сказке кстати движок никак не реагирует ни на что.
Спасибо за 5.6.
Удачи.
+
avatar
  • paaevv
  • 21 января 2018, 23:51
+2
ЯРКОСТЬ РЕГУЛИРУЕТСЯ.
Восхитительно, БОЖЕСТВЕННО.
С П А С И Б О.
Не плохо было бы сделать так, чтобы визуализация в программе соответсвовала бы рисунку на ленте (в музыкальных).
Но это я наверное загнул…
Мне кажется проект был бы завершенным, если бы программы (бегущие) пользователь сам смог проектировать с помощью кнопочек…

РЕБЯТА, МУЖИКИ, АВТОР СКИНУЛ версию 5.7 НАЛЕТАЙ.
Не забудьте благодарить, Юрий (juraspb) -ЧЕЛОВЕЧИЩЕ!
+
avatar
  • juraspb
  • 22 января 2018, 13:41
0
С яркостью не очень хорошо получается. В первой версии это было. Индикаторы колоночки лучше смотрятся.
+
avatar
  • paaevv
  • 22 января 2018, 14:24
0
Первую не застал, скинте ссылку.
Яркость можно поубавить, скажем максимум 100-150.
Тогда будет плавнее регулировка, без скачков напряжения.
Она нужна т.к. лента может быть перед пользователем, скажем перед монитором, когда часто смотришь тяжело для зрения, слишком ярко.
А с регулировкой-то что надо.
+
avatar
  • juraspb
  • 22 января 2018, 15:53
0
Яркость запоминается.

Внешний вид первых версий был такой.
Программы версии 1 у меня уже нет. Удалил.
+
avatar
  • parem
  • 20 января 2018, 18:25
0
хочу подключить по 2 варианту, пытаюсь записать скетчи COMtoRF и RFtoLED120, выдает «exit status 1 Ошибка компиляции для платы Arduino Nano.», скетч COMtoLED прошивается нормально. Библиотеки RF24 и SerialFlow, добавил, что я делаю не так?
+
avatar
  • juraspb
  • 20 января 2018, 20:59
0
Библиотеку Adafruit_NeoPixel и IRremote добавьте.
В последней версии я часть кода для ИК добавил, но пока ещё не отладил.
+
avatar
  • parem
  • 20 января 2018, 21:08
0
разобрался, надо было установить библиотеку IRremote
+
avatar
  • sepulka
  • 22 января 2018, 22:18
0
У меня последняя версия выдает ошибку:

Arduino: 1.6.7 (Windows XP), Плата:«Arduino Nano, ATmega328P»

E:\Program Files\Arduino\libraries\RobotIRremote\src\IRremoteTools.cpp:5:16: error: 'TKD2' was not declared in this scope

int RECV_PIN = TKD2; // the pin the IR receiver is connected to

^

exit status 1
Ошибка компиляции.
+
avatar
  • juraspb
  • 23 января 2018, 11:12
0
Переустановите библиотеку IRRemoute.
+
avatar
  • sepulka
  • 23 января 2018, 13:01
+1
Да, спасибо, помогло.

В «музыкальных» яркость регулируется.

В «бегущих» темп регулируется, а яркость — нет.
+
avatar
  • paaevv
  • 23 января 2018, 21:19
0
sepulka Регулируется и в «бегущих».
Пробуй, классно получается.

juraspb Юрий — действительно профи. Человек много работает, и наверное времени не хватает.
Но согласитесь, было бы не плохо сделать так, чтобы визуализация в программе соответсвовала бы рисунку на ленте (в музыкальных), а (бегущие) пользователь сам смог проектировать с помощью кнопочек…
Скажем, по 1 светику по 2,3,4....., выбор цвета, реверс, сохранение и т.д.
И хотя я далеко не программист, но с точки зрения пользователя, хотелось бы как то так.
Я наверное загнул уже второй раз…

Если Вы sepulka согласны, жмите стрелку вверх.
Автор, наверное, ждет большей консолидации любителей его творения.
+
avatar
0
Настройка это хорошо, но нужно больше встроенных эффектов.
Автор уже предлагал самим делать программы (правда в скетче), так никто вроде и не пошевелился.
+
avatar
  • paaevv
  • 23 января 2018, 21:58
0
Я лично, чайник, в этом деле, не стыжусь, но Вы правы, можно было бы и пошевелится знающим, и наделать море скетчей.
Проект заслуживает на совершенствование, а возможно и серийное производство.
Автору респект.
+
avatar
+2
Для цветомузыки нужны не просто эффекты, а нужны эффекты которые будут смотреться.
Для раздела «бегущий» я автору скинул набор готовых эффектов. (порядка 20 эффектов). Скажем так как иллюминация для развлечения гостей или детей наверное неплохо бы смотрелась.Особенно если украсить (как некоторые делают) комнату или балкон (по периметру).
Автор проекта уловил ту мысль и идею которая всем была нужна. Нужно было что то простое и функциональное.А самое главное для ПК (настройка с компа и управление). Кому сейчас хочется городить устройство, которым нельзя управлять мышкой или телефоном (по BT)
+
avatar
  • paaevv
  • 24 января 2018, 05:39
0
Можно посмотреть Ваши эффекты.([email protected]).
Спасибо.
+
avatar
  • juraspb
  • 23 января 2018, 22:15
+4
Спасибо за поддержку. Примеры посмотрел.
Выложил новую версию.
Сделал перебор программ бегущих огней. Это я думаю на текущий момент нужнее. Ставим галочку и программы меняются по случайному алгоритму.
Пока беру паузу.
+
avatar
+1
надеюсь пауза будет недолгой и в скором времени будут новые версии программы с новыми функциями.
+
avatar
  • solaris
  • 23 января 2018, 22:50
+1
1. Кнопка «Порхающий огонь» — два раза. Вторая работает, как «Стробоскоп».
2. Порхающий был очень инетерсен в вер. 5.6, кажется: выбираешь основной постоянный цвет и жмешь «Порхающий огонь» — цветные огоньки, вспыхивая ярким белым светом, гаснут, словно перегорели.) Очень красиво. Можно вернуть? Было бы супер, если после «перегорания» последнего цветного огонька, лента вновь зажигалась каким-нибудь новым цветом и снова постепенно «перегорала».
Спасибо.
+
avatar
  • juraspb
  • 24 января 2018, 16:32
0
И у меня все программы, включая цветомузыкальные, реализуются в скетчах. Я выбрал ардуино именно поэтому. Это очень простая среда для пользователей любого уровня. Я надеялся, что коллективом мы быстро наполним прошивку красивыми программами.
+
avatar
0
Повесил такую штуку на карниз 3 метра (90 светодиодов), с версией 5.7 почти идеально, сигнал подаю на virtual audio cable 4.50 (audio repeater настроил на подачу сигнала на Realtek HD) все аудио сигналы с компа поступают на CMU и на колонки. У китайцев заказал Sp106e попробую, что за зверь.
+
avatar
0
Доброго времени суток. Юрий, последняя версия просто улет Все отлично есть пожелания, но он них позже, тут и без меня нажелали
К общим советам: ардуино поставилось на 10 сом. И программа не видела. Решилось заменой ком порта на ком 1
+
avatar
  • paaevv
  • 27 января 2018, 15:23
0
Мужики, давай раздуплятся, слишком длинная пауза…
+
avatar
  • juraspb
  • 02 февраля 2018, 08:09
+1
5.9
+
avatar
0
не компелирует последний скетч, подсобите плиз только начинаю разбираться
+
avatar
  • juraspb
  • 02 февраля 2018, 08:09
0
Библиотеку IRRemote установите.
+
avatar
0
все ок разобрался была битая библиотека ir
+
avatar
0
все работает кроме режимов магия, он работает сек 10 затем зависает, больше ардуинка с пк не управляется до переподключения ардуинки
+
avatar
0

помогите, не компилит последний скетч
+
avatar
0
Скечт залил.Но теперь прога к ком-порту не подключается.Помогите.
+
avatar
  • paaevv
  • 06 февраля 2018, 17:11
+1
1. Переустановите (добавте если нет) библиотекуIRRemoute
2. При заливке скетча выйдите из программы Музыкальные огни.
3. У Вас аудиовход-МИКРОФОН, а нужно выбрать стереомикшер.
+
avatar
0
Можно ссылку на правильную библиотеку.
+
avatar
  • paaevv
  • 06 февраля 2018, 18:49
0
+
avatar
  • juraspb
  • 06 февраля 2018, 20:29
+1
Спасибо за помощь.
Добавил ещё 10,11,12 динамические программы. Версию не менял.
На цветомузыкальные пока времени нет.
+
avatar
  • paaevv
  • 06 февраля 2018, 21:04
0
Неделю не обновлял — полетела ардуинка (bootloader).
Пока прошил-вышло 2 новых версии.
5.9 — Полет нормальный.
11 программа — класс, по больше б таких симетричных с двух сторон навстречу.
Спасибо.
Заразительная штука.
Заметил, что во время движения ползунка регулировки яркости (влево-вправо) резко, броском увеличивается яркость.
Излечимо?
Может быть это только у меня.
+
avatar
0
Все сделал.Заливка без ошибок, ком 11.Прога ком 11 не видит.Лента хаотично мигает.Заливал скетч адалайт, все работает.Прога амбибокс ком-порт 11 видит и работает.Куда копать?
+
avatar
  • juraspb
  • 06 февраля 2018, 20:18
0
Может у вас 11 порт амбибокс занят в фоновом режиме.
+
avatar
0
Похоже выше 10 порта прога не поддерживает.?
+
avatar
  • juraspb
  • 07 февраля 2018, 11:57
0
Проверю.
+
avatar
  • paaevv
  • 07 февраля 2018, 00:00
0
juraspb как сделать, чтобы по умолчанию во время загрузки подключалась программа из музыкальных (Ну скажем ДВУТАВР)
В последнем скетче
uint8_t prog = 29
Какой номер программы ДВУТАВР или Центавр
Спасибо.
+
avatar
  • juraspb
  • 07 февраля 2018, 11:55
+1
При закрытии программы запоминается работающая программа. Запуск выполняется именно с неё. Если последняя программа была цветомузыкальная и есть аудио подключение, то она и запустится. Если нет аудио подключения то запускается динамическая по умолчанию записанная в
uint8_t prog = 29 от 0 до 29
uint8_t subprog = 0 от 0 до 7

Цветомузыкальные программы
uint8_t prog = 30
uint8_t subprog = 0 — радуга
= 1 — микс

= 10 — сказка
+
avatar
  • paaevv
  • 07 февраля 2018, 13:24
0
Спасибо.
+
avatar
  • Masildos
  • 07 февраля 2018, 20:12
0
Скетч компилируется и заливается, вроде всё работает, но каждый раз вылазит такое сообщение. Библиотеки все последней версии.
i101.fastpic.ru/big/2018/0207/cb/8ffbae985293f47a275ce87327a7cdcb.jpg
+
avatar
  • paaevv
  • 07 февраля 2018, 21:55
0
Что такое subprog, и на что эта строка влияет.
+
avatar
  • juraspb
  • 08 февраля 2018, 11:46
+1
На вкладке бегущие два числовых спина для выбора номера программы.
Первый спин меняется от 0 до 29 — номер программы.
Второй спин меняется от 0 до 7 — номер подпрограммы (subprog).
subprog — в основном (кроме 0 и 29) меняет цвет
0 — красный
1- желтый

7 — перебор цветов.
Итого по китайскому исчислению (12+1)*8=104 программы.
В китайских контроллерах светодиодных лент (например SP105E)
240 (заявленных программ) / 2 (изменение направления) / 8 (изменение цвета) = 15 (типов программ).
+
avatar
  • paaevv
  • 09 февраля 2018, 05:43
0
Спасибо.
Как бы сделать так чтобы и Ваша разработка работала без компа.
Ну хотя бы, бегущие.
Пример:


www.getchip.net/posts/122-ehffektor-s-vykhodom-na-umnuyu-lentu-ws2812/

А может быть и музыкальные как то прикрутить, но тогда уже подключение к линейному выходу.
+
avatar
  • juraspb
  • 09 февраля 2018, 15:05
+1
Она может работать. IR приёмник к D3 подключите и с ИК пульта можно управлять. Только коды надо прописать от вашего пульта. Я уже давно вставил IRremote, но отладить и сделать настраиваемой под любой пульт времени пока нет.
Если есть желание подключите IR приёмник, загрузите пару примеров с чтением посылок. Узнаете коды кнопок вашего пульта и пропишите в скетч так как вам удобно.
Менять надо
prog — номер программы
subprog — номер подпрограммы
param — темп или уровень
brightness — яркость
Код в программе тестовый, из другого моего проекта, меняется param и subprog (коды от моего пульта)

void processResult(unsigned long code) {

  switch(code)  {
    case 0xFF906F:
      if (param>0) param--;
      break;
    case 0xFFA857:  
      if (param<30) param++;
      break;
    case 0xFF9867:  //><  
      subprog++;
      subprog &= 7;
      break;
    case 0xFF6897: param = 0; break; //0
    case 0xFF30CF: param = 1; break; //1
    case 0xFF18E7: param = 2; break; //2
    case 0xFF7A85: param = 3; break; //3
    case 0xFF10EF: param = 4; break; //4
    case 0xFF38C7: param = 5; break; //5
    case 0xFF5AA5: param = 6; break; //6
    case 0xFF42BD: param = 7; break; //7
    case 0xFF4AB5: param = 8; break; //8
    case 0xFF52AD: param = 9; break; //9
  } 
  param=paramTabl[param];
}
+
avatar
  • paaevv
  • 10 февраля 2018, 11:53
0
ОК
+
avatar
  • paaevv
  • 10 февраля 2018, 12:54
0
Коды пульта считал с помощью библиотеки IRrecvDemo
switch(code) {
case 0xFF1AE5:
if (param>0) param--;
break;
case 0xFF9A65:
if (param<30) param++;
break;
case 0xFFA25D: //><
subprog++;
subprog &= 7;
break;
case 0xFF9867: param = 0; break; //0
case 0xFF2AD5: param = 1; break; //1
case 0xFFAA55: param = 2; break; //2
case 0xFF926D: param = 3; break; //3
case 0xFF0AF5: param = 4; break; //4
case 0xFF8A75: param = 5; break; //5
case 0xFFB24D: param = 6; break; //6
case 0xFF38C7: param = 7; break; //7
case 0xFFB847: param = 8; break; //8
case 0xFF7887: param = 9; break; //9
}
param=paramTabl[param];
}

вставил в скетч, прошил.
Не управляется пультом.
IR оставил на 11 выводе.
Пробовал и на д3.
Не управляет.

+
avatar
  • paaevv
  • 13 февраля 2018, 20:20
0
Че то все заныкались…
Автор, где Вы?
Может обновимся чуток.
+
avatar
  • juraspb
  • 13 февраля 2018, 20:56
+2
К концу недели.
+
avatar
  • paaevv
  • 13 февраля 2018, 21:03
0
Здорово, ждем с нетерпением.
Удачи.
+
avatar
  • edd
  • 16 февраля 2018, 23:47
+1
У кого проблема с реализацией на ESP8266 — оказывается, esp не знает про void serialEvent(), нужно ссылаться на него из void loop(). А вместо #include <IRremote.h> (который для AVR) — #include <IRremoteESP8266.h> и #include <IRrecv.h>, если необходимо ИК управление. И заработало!
Связь между двумя ESP8266 по телнету из примера WiFiTelnetToSerial. Сигнал передаётся раз пять в секунду, цветомузыка не резвая, но картинка, всё же, воспринимается чётко и соответствует звукам. А для динамики вовсе ни каких ограничений. И ещё можно управлять через ВЕБ (если по телнету тишина ) хоть со смартфона из браузера. Моргалка замирает на несколько секунд пока грузится страничка, но после работает как надо — команды отрабатывает и данные обратно передаёт без задержек.

Автору — благодарность за труды!
+
avatar
0
Автор здравствуйте. Все крайне замечательно… даже вроде с настройками разобрался виртуального кабеля и cmu. Но вот лента вроде просто своей жизнью живет. В такт музыке не маргает. Если правильно понял, в программе аудио репитир завернул звук с динамиков компа на виртуальный аудио кабель. В MCU аудиовыход сделал на виртуальный кабель… и Ничего. горит как хочет. И еще вопросик, мне кажется в аудио репиторе стоитт нажать старт. начинает бегать микшер, хотя ничто не играет. Спасибо…
+
avatar
0
Автор здравствуйте. Все крайне замечательно… даже вроде с настройками разобрался виртуального кабеля и cmu. Но вот лента вроде просто своей жизнью живет. В такт музыке не маргает. Если правильно понял, в программе аудио репитир завернул звук с динамиков компа на виртуальный аудио кабель. В MCU аудиовыход сделал на виртуальный кабель… и Ничего. горит как хочет. И еще вопросик, мне кажется в аудио репиторе стоитт нажать старт. начинает бегать микшер, хотя ничто не играет. Спасибо…
+
avatar
  • juraspb
  • 23 марта 2018, 08:15
0
На вкладке музыкальные цветные индикаторы уровня работают?
Если работают то регулировкой уровня (верхний ползунок) добейтесь максимального охвата динамического диапазона.
Цветные индикаторы не должны уходить за верхнюю границу изображения или находится в нижней части изображения.
Настройте так чтобы в пиках отдельные индикаторы доходили до верхней границы и будет вам счастье, если конечно схема собрана правильно.
+
avatar
0
После перезагрузки, индикаторы бегают… Отрегулировал по вашим рекомендациям. Такие вопросы, на кнопках магия свечение яркое, хорошее. а на двутавр-центавр, оч тусклое, на радуга и микс вообще нет, так же ползунки, или шпарят или немного поднимаются ну а на радуге вочти не видно. Значение верхнего ползунка уже 233. От чего зависят значения цветных индикаторов в MCU. Я так понимаю ардуинка и лента полностью зависят и работают от MCU. Вопросы только к этой програмке. А сейчас вот, после 10 минут, на Двутавре, полоски хорошо пляшут а лента вообще молчит. Может от какого либо переполнения буфера данных?..
+
avatar
0
Добрый день.Всех с проздником.Собрал схему с радиомодулем, залил скеч поздней версии.Вроде как работает, но при переключении режимов иногда зависает.Залил последнюю прошивку перестало работать. Сигнал идёт а приёма нет, эффекты идут. В чём причина?
+
avatar
0
Что-то проект замер. Уважаемый juraspb а возможна ли реализация управления D1 mini без радиомодулей, по встроенному каналу WIFI?
+
avatar
  • paaevv
  • 19 августа 2018, 13:22
0
juraspb отзовитесь.
Мужики, может кто то усовершенствовал, добавил новые эфекты, поделитесь. Спасибо
+
avatar
  • juraspb
  • 19 августа 2018, 20:18
0
Будет проект на STM32 с программой под Android.
Обе программы готовы. Оформлю выложу статью и сайт.
Прототип сайта доступен (не всегда) по адресу 94.19.142.66.
Только сперва надо ремонт в комнате ребёнка закончить.