ARDUINO Цветомузыка на Arduino. Обсуждение проекта

Сергейка

✩✩✩✩✩✩✩
4 Ноя 2018
2
0
проверь приходит ли питание на на последний светодиод, возможно нет общего минуса с ардуино и лентой или сигнальный провод отпал.
Спасиб за совет, проверил, на самом конце ленты питание есть (4,86 вольт), проверил на всякий случай на самом первом 5,06 вольт. Уточню еще что ленты 3 метра, блок питания на 2 Ампера. Уже передернул все провода по новой для исключения слабого контакта, сбрасывал прошивку на заводскую и по новой залил, ничего не меняется. Все же первый раз то все работало хорошо, значит схема собрана верно...
 

Meatus

✩✩✩✩✩✩✩
13 Окт 2018
59
4
вопрос не в тему но каким образом можно проверить адресную ленту на работоспособность? перепробовал все скейчи из архива arduino но не один не запустился и лента так и не загорелась все режимы перепробовал в FastLed
справка лента 5 метров 60 светодиодов на метр
 

Meatus

✩✩✩✩✩✩✩
13 Окт 2018
59
4
@Meatus, без мультиметра в электронике никуда
купил мультиметр. питание на вход 4,88 и в конце ленты 4,77

залил вот этот скейч но лента до сих пор молчит

C++:
#define PIN 13        // пин DI
#define NUM_LEDS 300   // число диодов
#include "Adafruit_NeoPixel.h"
Adafruit_NeoPixel strip = Adafruit_NeoPixel(NUM_LEDS, PIN, NEO_GRB + NEO_KHZ800);
void setup() {
  strip.begin();
  strip.setBrightness(50);    // яркость, от 0 до 255
  strip.clear();                          // очистить
  strip.show();                           // отправить на ленту
}
void loop() {
  // заливаем трёмя цветами плавно
  for (int i = 0; i < NUM_LEDS / 3; i++ ) {   // от 0 до первой трети
    strip.setPixelColor(i, 0xff0000);     // залить красным
    strip.show();                         // отправить на ленту
    delay(100);
  }
  for (int i = NUM_LEDS / 3; i < NUM_LEDS * 2 / 3; i++ ) {   // от 1/3 до 2/3
    strip.setPixelColor(i, 0x00ff00);     // залить зелёным
    strip.show();                         // отправить на ленту
    delay(100);
  }
  for (int i = NUM_LEDS * 2 / 3; i < NUM_LEDS; i++ ) {   // от 2/3 до конца
    strip.setPixelColor(i, 0x0000ff);     // залить синим
    strip.show();                         // отправить на ленту
    delay(100);
  }
  delay(1000);
  // заливаем белым
  for (int i = 0; i < NUM_LEDS; i++ ) {   // всю ленту
    strip.setPixelColor(i, 0xffffff);     // залить белым
    strip.show();                         // отправить на ленту
    delay(10);
  }
  delay(1000);
  // заливаем чёрным
  for (int i = 0; i < NUM_LEDS; i++ ) {   // всю ленту
    strip.setPixelColor(i, 0x000000);     // залить чёрным
    strip.show();                         // отправить на ленту
    delay(10);
  }
  delay(1000);
  // включаем случайные диоды жёлтым
  for (int i = 0; i < 50; i++ ) {         // 50 раз
    strip.setPixelColor(random(0, NUM_LEDS), 0xffff00);     // залить жёлтым
    strip.show();                         // отправить на ленту
    delay(500);
  }
}
 

KOHb

★✩✩✩✩✩✩
25 Окт 2018
119
16
купил мультиметр. питание на вход 4,88 и в конце ленты 4,77

залил вот этот скейч но лента до сих пор молчит

C++:
#define PIN 13        // пин DI
#define NUM_LEDS 300   // число диодов
#include "Adafruit_NeoPixel.h"
Adafruit_NeoPixel strip = Adafruit_NeoPixel(NUM_LEDS, PIN, NEO_GRB + NEO_KHZ800);
void setup() {
  strip.begin();
  strip.setBrightness(50);    // яркость, от 0 до 255
  strip.clear();                          // очистить
  strip.show();                           // отправить на ленту
}
void loop() {
  // заливаем трёмя цветами плавно
  for (int i = 0; i < NUM_LEDS / 3; i++ ) {   // от 0 до первой трети
    strip.setPixelColor(i, 0xff0000);     // залить красным
    strip.show();                         // отправить на ленту
    delay(100);
  }
  for (int i = NUM_LEDS / 3; i < NUM_LEDS * 2 / 3; i++ ) {   // от 1/3 до 2/3
    strip.setPixelColor(i, 0x00ff00);     // залить зелёным
    strip.show();                         // отправить на ленту
    delay(100);
  }
  for (int i = NUM_LEDS * 2 / 3; i < NUM_LEDS; i++ ) {   // от 2/3 до конца
    strip.setPixelColor(i, 0x0000ff);     // залить синим
    strip.show();                         // отправить на ленту
    delay(100);
  }
  delay(1000);
  // заливаем белым
  for (int i = 0; i < NUM_LEDS; i++ ) {   // всю ленту
    strip.setPixelColor(i, 0xffffff);     // залить белым
    strip.show();                         // отправить на ленту
    delay(10);
  }
  delay(1000);
  // заливаем чёрным
  for (int i = 0; i < NUM_LEDS; i++ ) {   // всю ленту
    strip.setPixelColor(i, 0x000000);     // залить чёрным
    strip.show();                         // отправить на ленту
    delay(10);
  }
  delay(1000);
  // включаем случайные диоды жёлтым
  for (int i = 0; i < 50; i++ ) {         // 50 раз
    strip.setPixelColor(random(0, NUM_LEDS), 0xffff00);     // залить жёлтым
    strip.show();                         // отправить на ленту
    delay(500);
  }
}
У тебя 300 диодов, выше ты писал что у тебя ардуино нано, для наны многовато 300 диодов. у тебя скомпилироваться не должно даже.
 

KOHb

★✩✩✩✩✩✩
25 Окт 2018
119
16
компилируется и ошибки не выдает
а 120 диодов нано потянет?
попробуй этот код. только номер порта поменяй
C++:
// Подключаем библиотеку Adafruit NeoPixel.
#include "Adafruit_NeoPixel.h"

// Указываем, какое количество пикселей у нашей ленты.
#define LED_COUNT 30

// Указываем, к какому порту подключен вход ленты DIN.
#define LED_PIN 6

// Создаем переменную strip для управления нашей лентой.
Adafruit_NeoPixel strip = Adafruit_NeoPixel(LED_COUNT, LED_PIN, NEO_GRB + NEO_KHZ800);

void setup()
{
  // Инициализируем ленту.
  strip.begin();
}

void loop()
{
  // Включаем все светодиоды.
  for (int i = 0; i < LED_COUNT; i++)
  {
    strip.setPixelColor(i, strip.Color(255, 0, 0)); // Красный цвет.
  }
  // Передаем цвета ленте.
  strip.show();
  // Ждем 500 мс.
  delay(500);
  // Выключаем все светодиоды.
  for (int i = 0; i < LED_COUNT; i++)
  {
    strip.setPixelColor(i, strip.Color(0, 0, 0)); // Черный цвет, т.е. выключено.
  }
  // Передаем цвета ленте.
  strip.show();
  // Ждем 500 мс.
  delay(500);
}
 

Meatus

✩✩✩✩✩✩✩
13 Окт 2018
59
4
попробуй этот код. только номер порта поменяй
C++:
// Подключаем библиотеку Adafruit NeoPixel.
#include "Adafruit_NeoPixel.h"

// Указываем, какое количество пикселей у нашей ленты.
#define LED_COUNT 30

// Указываем, к какому порту подключен вход ленты DIN.
#define LED_PIN 6

// Создаем переменную strip для управления нашей лентой.
Adafruit_NeoPixel strip = Adafruit_NeoPixel(LED_COUNT, LED_PIN, NEO_GRB + NEO_KHZ800);

void setup()
{
  // Инициализируем ленту.
  strip.begin();
}

void loop()
{
  // Включаем все светодиоды.
  for (int i = 0; i < LED_COUNT; i++)
  {
    strip.setPixelColor(i, strip.Color(255, 0, 0)); // Красный цвет.
  }
  // Передаем цвета ленте.
  strip.show();
  // Ждем 500 мс.
  delay(500);
  // Выключаем все светодиоды.
  for (int i = 0; i < LED_COUNT; i++)
  {
    strip.setPixelColor(i, strip.Color(0, 0, 0)); // Черный цвет, т.е. выключено.
  }
  // Передаем цвета ленте.
  strip.show();
  // Ждем 500 мс.
  delay(500);
}
тоже самое ничего не происходит тента молчит
на самой arduino мерцает диод L
 

Wan-Derer

★★★★★✩✩
Команда форума
31 Июл 2018
2,037
406
Москва
wan-derer.ru
@Meatus, очень мало доходит до ленты. Возьми питающие провода потолще: 0.75 кв мм минимум и припаяй как следует. И конденсатор электролитический непосредственно к контактам ленты добавь.
 

KOHb

★✩✩✩✩✩✩
25 Окт 2018
119
16
@Meatus, а зачем 100в 10мФ и куда он подключен?
Желательно фото получше. Собери на макетке.
 

Dimon68

✩✩✩✩✩✩✩
8 Ноя 2018
5
0
Здравствуйте! собрал цветомузыку,всё работает нормально,но только без музыки лента постоянно горит синим цветом,пульт ещё не пришёл с китая,собрал с кнопкой...Можно как то решить эту проблему ,что бы лента не горела синим цветом?
 

KOHb

★✩✩✩✩✩✩
25 Окт 2018
119
16
Здравствуйте! собрал цветомузыку,всё работает нормально,но только без музыки лента постоянно горит синим цветом,пульт ещё не пришёл с китая,собрал с кнопкой...Можно как то решить эту проблему ,что бы лента не горела синим цветом?
byte EMPTY_BRIGHT = 30; // яркость "не горящих" светодиодов (0 - 255)
ставь = 0
всёж написано...
 

KOHb

★✩✩✩✩✩✩
25 Окт 2018
119
16
все равно не горит лента уменьшил ленту до 120 диодов и результат прежний
поменяй порт уменьши количество диодов до 60.

есль пельцем тыкать в оголенный провод от di ленты диоды начинают гореть?
 

Wan-Derer

★★★★★✩✩
Команда форума
31 Июл 2018
2,037
406
Москва
wan-derer.ru
@Meatus, подай на ленту питание напрямую с БП, зачем эти бесконечные шлейфы? Ленту-то той стороной припаял?