2017-01-03 2 views
0

У меня есть Arduino с WS2812 подключили к нему, питание от USB на моем компьютере, и я пытаюсь запустить следующий код:Arduino держит сбой

#include <FastLED.h> 

#define NUM_LEDS 144 
#define DATA_PIN 6 
#define LED_TYPE WS2812B 
#define COLOR_ORDER GRB 

CRGB leds[NUM_LEDS]; 

void setup() { 
    FastLED.addLeds<LED_TYPE, DATA_PIN, COLOR_ORDER>(leds, NUM_LEDS); 
    FastLED.show(); 
} 

void loop() { 
    for(int dot = 0; dot < NUM_LEDS; dot++) { 
    fill_solid(leds, NUM_LEDS, CRGB::Red); 
    leds[dot] = CRGB::Black; 
    leds[dot] = CRGB::Blue; 
    FastLED.show(); 
    leds[dot] = CRGB::Red; 
    delay(30); 
    } 
} 

void setAll() { 

    FastLED.show(); 
} 

Что это делает наборы все светодиоды на красный, затем проходят через каждый, выключая его, затем на синий, а затем обратно на красный.

По какой-то причине он получает X количество светодиодов, а затем падает. В результате сбоев я имею в виду, что Arduino отключается от компьютера, но Arduino остается включенным со светодиодной полосой.

Любые идеи? Это настоящий Uno.

Также. Если я подключу светодиод к выходу 3.3v, анимация будет работать нормально, но светодиод мигает черным цветом и не заполняет синюю часть.

+0

Пока не ясно, что это проблема программного обеспечения. Сейчас нет сайта Arduino stackexchange? Попробуйте. –

ответ

1

Я никогда не использовал NeoPixels, поэтому я не уверен в этом, но я уверен, что это решит вашу проблему.

Прежде всего, ваша программа. Я не думаю, что он делает то, что, по вашему мнению, должен делать. Попробуйте использовать этот цикл, вместо этого:

void loop() 
{ 
    fill_solid(leds, NUM_LEDS, CRGB::Red); 
    FastLED.show(); 
    delay(100); 


    for(int dot = 0; dot < NUM_LEDS; dot++) 
    { 
     leds[dot] = CRGB::Black; 
     FastLED.show(); 
     delay(100); 

     leds[dot] = CRGB::Blue; 
     FastLED.show(); 
     delay(100); 

     leds[dot] = CRGB::Red; 
     FastLED.show(); 
     delay(100); 
    } 
} 

и удалить функцию SetAll, поскольку она бесполезна.

Попробуйте этот код с NUM_LEDS, установленным в 5, и он должен работать.

Теперь основная проблема: действительно ли вы используете 144 светодиода, питаемые от USB? Я предлагаю вам прочитать this link о включении неопикселей. В частности, часть, заявляющая, что при полной яркости каждый неопиксель рисует 60 мА. Выполняя математику, 144 неопикселя рисуют максимум 8.64A, поэтому вам нужен блок питания 5V 10A для питания всех их! USB с 5V 0.5A будет просто закрываться, когда вы попытаетесь включить их, тем самым давая вам странное поведение.

Уменьшите количество светодиодов, которые вы используете (максимум 7), или используйте внешний источник питания. И по внешнему я не имею в виду использование дросселя ствола на ардуине, но подключите 5V 10A (или больше усилителей) к полосе неопикселя, затем заземляющий и проводник данных к ардуину (не + 5v) и включите ардуино через порт USB: он должен работать.

UPDATE:

Согласно беседы с автором, проблема была действительно источник питания

+0

OK - Я попробую это, однако я попаду в проблему. У меня есть 5U Breadboard PSU, и моя мощность светодиода подключена к 5V +, а затем мои данные и земля в мой Arduino. 5V идет к светодиодам, они не загораются. – K20GH

+0

@ K20GH Каков максимальный ток макета блока? Вы подключили заземление блока питания к земле светодиодов и ардуино?Вы отправили команды для включения светодиодов? – frarugi87

+0

Его блок питания 12 В 3А. Пока я знаю, этого недостаточно, чтобы осветить всю полоску, я бы хотя бы ожидал, что некоторые из светодиодов загорятся. Я подключил его следующим образом: PSU 5v -> LED. PSU GRD -> Arduino GRD. LED GRD -> Arduino GRD. Когда я это делаю, светодиод на моем блоке питания выходит из предложения о том, что где-то есть что-то короткое? – K20GH

0

Техническое описание от adafruit https://cdn-shop.adafruit.com/datasheets/WS2812.pdf говорит, что вам нужен источник питания от 6 до 7 вольт, но USB cannot provide more than 5v, я предполагаю, что авария arduino, потому что он не может найти достаточную мощность.

Можете ли вы попробовать использовать внешний источник питания?

+0

Я не думаю, что это вопрос власти. Я могу запускать любые демонстрации FastLED или NeoPixel абсолютно спокойно в течение нескольких часов подряд без каких-либо проблем. Также - светодиоды, которые мне нужны 5v – K20GH

Смежные вопросы