Адресная светодиодная лента загорается белым и не реагирует
- Войдите на сайт для отправки комментариев
Лента WS2811 на 60 диодов 12В. Подключаю к Arduino Nano v3. Сигнальный провод кидаю на цифровой порт.
Пробовал разные скетчи, и маленькие (простенькие) и большие. но проблема остается.
Питание подаю к плате через usb, питание на ленту с БП на 12В (мощность большая). Сигнальный провод через резистор на 220 Ом. Библиотека FastLed.
Когда включаю все, то лента просто горит белым, ни на что не реагирует. Расставил в функции скетча вывод данных в монитор порта для проверки работоспособности кода. По кнопке все переключается (программы, яркость, вкл/выкл и т.д.), но лента так и горит.
Если отключить сигнальный провод от платы и включить USB и БП, то лента не горит. Как только подключаю провод к плате, так сразу она белая. И не гаснет.
Если попробовать после отключения провода и питания, после включения питания дотронуться до провода, то одна секция ленты (3 светодиода) горят белым. Если касаться разных секций, то бывает загорится еще каким-то цветом.
Есть еще одно замечание: в настройках скетча указываю скорость обмена днанных 9600 ( Serial.begin(9600);), то в мониторе порта нужно указывать 2400, иначе иероглифы. Может ли быть проблема в частоте?
Например, тут: https://github.com/FastLED/FastLED/wiki/Chipset-reference указано, что частота передачи 800kbps, а PWM Rate = 400Hz.
Еще в библиотеке FastLed нашел изменение частоты, типа: FastLED.addLeds<APA102,7,11,RGB,DATA_RATE_MHZ(10)>(leds,NUM_LEDS);
Но при компиляции кода выдает ошибку, да и в коде библиотеки нет данных про частоту. Как такое понять?
Даже попробовал сделать простой скетч: https://github.com/FastLED/FastLED/wiki/Basic-usage
включение и выключение 1-го светодиода, потом бегущий светодиод... все равно загорается вся лента и все. В мониторе прослеживается вкл-выкл, диод на плате тоже мигает... а лента не хочет правильно реагировать.
Уже сутки мурыжу. В ардуино новичок, поэтому не знаю куда копать.
Лента точно на 12В расчитана?
Похоже у вас не на 16МГц а на 4х работает.
А если пример blink загрузить - с какой частотой мигает?
При работе с библиотекой FastLED надо правильно инициализировать ленту. Во втором вашем сообщении указана лента APA102. В этом месте у вас должно быть WS2811. Да, и частота работы у 2811 ниже, чем у остальных - 400 КГц, а по дефолту в библиотеке стоит 800 вроде бы...
Короче говоря, проверьте правильность инициализации ленты.
Питание подаю к плате через usb, питание на ленту с БП на 12В (мощность большая). Сигнальный провод через резистор на 220 Ом.
Земли Ардуины и ленты соединили?
Земли Ардуины и ленты соединили?
Да, соеденина.
При работе с библиотекой FastLED надо правильно инициализировать ленту. Во втором вашем сообщении указана лента APA102. В этом месте у вас должно быть WS2811. Да, и частота работы у 2811 ниже, чем у остальных - 400 КГц, а по дефолту в библиотеке стоит 800 вроде бы...
Короче говоря, проверьте правильность инициализации ленты.
нуда, прописал:
Только вот по частоте не пойму как настроить. Библиотека сама должна делать? На сайте библиотеки указано, что можно указывать частоту при инициализации, пример:
но в файле библиотеки у функции (метода, как правильно в ардуине, не запомнил) инициализации нет других переменных, чем эти (выше в строке которые).
Лента точно на 12В расчитана?
ну да, вот такая: https://ru.aliexpress.com/item/WS2811-DC-12-30-60-M-WS2811/32854262667.html
на ней тоже написано на 12В.
На сайте, правда еще написано, что чип 2811ic, т.е. еще буквы дополнительные. Может быть это что-то другое немного? Хотя на фото чипа просто 2811.
Похоже у вас не на 16МГц а на 4х работает.
А если пример blink загрузить - с какой частотой мигает?
интвервал, между загоранием примерно 4 секунды :)
Такая: https://ru.aliexpress.com/item/WAVGAT-Nano-Mini-USB-Nano-3-0/32868170637.html
Може в настройках чего-то не то я делаю?
Я указал:
Процессор: Atmega 328P (old bootloader)
Программатор: AVRISP mkII
Процессор old bootreolader, потому что иначе ошибку при загрузке выдает.
Для вавгада нужен специальный аддон в ide, иначе чудить он будет по полной.
Для вавгада нужен специальный аддон в ide, иначе чудить он будет по полной.
Тыкните, пожалуйста, что конкретно установить и, желательно, как. Какой аддон?
http://arduino.ru/forum/apparatnye-voprosy/obzor-klona-megi328-lgt8f328p
Смотрим самый первый пост
http://arduino.ru/forum/apparatnye-voprosy/obzor-klona-megi328-lgt8f328p
Смотрим самый первый пост
Скачал у поставщика update: https://drive.google.com/file/d/10gwrG9uTDwaEO-7EudsmBkfgdcyrcABI/view
Залил в документы/arduino все папки. В IDE появилась плата wavgat nano v.3. Но при компиляции куча ошибок.
Хотя, другой скетч залил, все ОК. Видимо что-то в скетче. Спасибо!
Подскажите, пожалуйста, что за ошибки теперь с библиотекой FastLed? Про что они? Выходят именно с этой платой Wavgat. Насколько я понимаю, здесь что-то пины переопределены и еще что-то. Вообще, это можно починить или совсем все плохо? Куда копать?
Пробовал примеры из библиотеки, тоже все ошибки выходят разные. Покупать нормальную ардуино?
Привет. Проблема такая-работают только первые 6 светодиодов. Я вырезал неработающий первый диод и припаял ленту -не работает. Сама подсветка реагирует на экран-цвета меняет,только первые 6 диодов. В режиме цветомузыки работают те же диоды только одним цветом. Ошибок не выдает. Напряжение на выходе ленты-5 вольт как и на входе, цепь не разомкнута.Что делать-вариантов уже нету,спасите пожалуйста(
001
include <bitswap.h>
002
#include <chipsets.h>
003
#include <color.h>
004
#include <colorpalettes.h>
005
#include <colorutils.h>
006
#include <controller.h>
007
#include <cpp_compat.h>
008
#include <dmx.h>
009
#include <FastLED.h>
010
#include <fastled_config.h>
011
#include <fastled_delay.h>
012
#include <fastled_progmem.h>
013
#include <fastpin.h>
014
#include <fastspi.h>
015
#include <fastspi_bitbang.h>
016
#include <fastspi_dma.h>
017
#include <fastspi_nop.h>
018
#include <fastspi_ref.h>
019
#include <fastspi_types.h>
020
#include <hsv2rgb.h>
021
#include <led_sysdefs.h>
022
#include <lib8tion.h>
023
#include <noise.h>
024
#include <pixelset.h>
025
#include <pixeltypes.h>
026
#include <platforms.h>
027
#include <power_mgt.h>
028
029
/*
030
Управление лентой на WS2812 с компьютера + динамическая яркость
031
Создано не знаю кем, допилил и перевёл AlexGyver <a href="http://alexgyver.ru/" title="http://alexgyver.ru/" rel="nofollow">http://alexgyver.ru/</a>
032
2017
033
*/
034
//----------------------НАСТРОЙКИ-----------------------
035
#define NUM_LEDS 92 // число светодиодов в ленте
036
#define DI_PIN 13 // пин, к которому подключена лента
037
#define OFF_TIME 10 // время (секунд), через которое лента выключится при пропадаании сигнала
038
#define CURRENT_LIMIT 2000 // лимит по току в миллиамперах, автоматически управляет яркостью (пожалей свой блок питания!) 0 - выключить лимит
039
040
#define START_FLASHES 1 // проверка цветов при запуске (1 - включить, 0 - выключить)
041
042
#define AUTO_BRIGHT 1 // автоматическая подстройка яркости от уровня внешнего освещения (1 - включить, 0 - выключить)
043
#define MAX_BRIGHT 255 // максимальная яркость (0 - 255)
044
#define MIN_BRIGHT 50 // минимальная яркость (0 - 255)
045
#define BRIGHT_CONSTANT 500 // константа усиления от внешнего света (0 - 1023)
046
// чем МЕНЬШЕ константа, тем "резче" будет прибавляться яркость
047
#define COEF 0.9 // коэффициент фильтра (0.0 - 1.0), чем больше - тем медленнее меняется яркость
048
//----------------------НАСТРОЙКИ-----------------------
049
050
int
new_bright, new_bright_f;
051
unsigned
long
bright_timer, off_timer;
052
053
#define serialRate 115200 // скорость связи с ПК
054
uint8_t prefix[] = {
'A'
,
'd'
,
'a'
}, hi, lo, chk, i;
// кодовое слово Ada для связи
055
#include <FastLED.h>
056
CRGB leds[NUM_LEDS];
// создаём ленту
057
boolean led_state =
true
;
// флаг состояния ленты
058
059
void
setup
()
060
{
061
FastLED.addLeds<WS2812, DI_PIN, GRB>(leds, NUM_LEDS);
// инициализация светодиодов
062
if
(CURRENT_LIMIT > 0) FastLED.setMaxPowerInVoltsAndMilliamps(5, CURRENT_LIMIT);
063
064
// вспышки красным синим и зелёным при запуске (можно отключить)
065
if
(START_FLASHES) {
066
LEDS.showColor(CRGB(255, 0, 0));
067
delay(500);
068
LEDS.showColor(CRGB(0, 255, 0));
069
delay(500);
070
LEDS.showColor(CRGB(0, 0, 255));
071
delay(500);
072
LEDS.showColor(CRGB(0, 0, 0));
073
}
074
075
Serial
.begin(serialRate);
076
Serial
.print(
"Ada\n"
);
// Связаться с компом
077
}
078
079
void
check_connection() {
080
if
(led_state) {
081
if
(millis() - off_timer > (OFF_TIME * 1000)) {
082
led_state =
false
;
083
FastLED.clear();
084
FastLED.show();
085
}
086
}
087
}
088
089
void
loop
() {
090
if
(AUTO_BRIGHT) {
// если включена адаптивная яркость
091
if
(millis() - bright_timer > 100) {
// каждые 100 мс
092
bright_timer = millis();
// сброить таймер
093
new_bright = map(analogRead(6), 0, BRIGHT_CONSTANT, MIN_BRIGHT, MAX_BRIGHT);
// считать показания с фоторезистора, перевести диапазон
094
new_bright = constrain(new_bright, MIN_BRIGHT, MAX_BRIGHT);
095
new_bright_f = new_bright_f * COEF + new_bright * (1 - COEF);
096
LEDS.setBrightness(new_bright_f);
// установить новую яркость
097
}
098
}
099
if
(!led_state) led_state =
true
;
100
off_timer = millis();
101
102
for
(i = 0; i <
sizeof
prefix; ++i) {
103
waitLoop:
while
(!
Serial
.available()) check_connection();;
104
if
(prefix[i] ==
Serial
.read())
continue
;
105
i = 0;
106
goto
waitLoop;
107
}
108
109
while
(!
Serial
.available()) check_connection();;
110
hi =
Serial
.read();
111
while
(!
Serial
.available()) check_connection();;
112
lo =
Serial
.read();
113
while
(!
Serial
.available()) check_connection();;
114
chk =
Serial
.read();
115
if
(chk != (hi ^ lo ^ 0x55))
116
{
117
i = 0;
118
goto
waitLoop;
119
}
120
121
memset(leds, 0, NUM_LEDS *
sizeof
(
struct
CRGB));
122
for
(uint8_t i = 0; i < NUM_LEDS; i++) {
123
byte
r, g, b;
124
// читаем данные для каждого цвета
125
while
(!
Serial
.available()) check_connection();
126
r =
Serial
.read();
127
while
(!
Serial
.available()) check_connection();
128
g =
Serial
.read();
129
while
(!
Serial
.available()) check_connection();
130
b =
Serial
.read();
131
leds[i].r = r;
132
leds[i].g = g;
133
leds[i].b = b;
134
}
135
FastLED.show();
// записываем цвета в ленту
136
}
В таком виде это -> к автору
smesher - во-первых, вываливать такую портянку простым текстом в форум - это прямо-таки верх неуважения к участникам. Вряд ли хоть кто-нибудь после этого захочет помочь по сути вопроса. И извинений тут мало - надо переделать как положено.
Во-вторых, в начале приведенного кода стоит копирайт Алекса Гивера - крутого блоггера, но, к сожалению, весьма посредственного программиста. Местное сообщество предпочитает с его творениями не связываться по причине низкого качества, так что обращайтесь к нему лично -когда звезды встанут благоприятно - он отвечает на вопросы.
Это мой первый форум,переделал в нужном виде, ошибки пропали после полного сноса этого кода. Но появились новые проблемы, которые я описал в тексте выше
Извините,уже исправился
а памяти хватает? Что пишет АрдуиноИДЕ после компиляции на тему размера прошивки и использования RAM?
Я вырезал неработающий первый диод и припаял ленту -не работает.
А лента, случайно, не сегментами режется?
Да, один сегмемент-один светодиод,вроде как
Да, один сегмемент-один светодиод,вроде как
зачем тогда что-то обратно припаивать?
Для начала уменьшите в скетче число диодов. скажем, до 20. Вдруг поможет?
А дальше этим скетчем на 20 диодов попробуйте подключиться к ленте в разных местах - скажем к 10 диоду, потом двадцатому. потом тридцатому и тд - может где-то заоаботает?
А разве нельзя прозвонить по одному светодиоду?
Можно,по показаниям мультиметра-они все рабочие. Но эти мультиметры не подсвечиваются мультиметром(
Но эти мультиметры не подсвечиваются мультиметром(
Чего?
чушь написал, эти светодиоды не подсвечиваются мультиметром
Они должны светиться при подаче напряжения. Если у Вас нет мультиметра для прозвонки диодов, то можно звонить просто батарейкой 1,5В. Только полярность не перепутать.
"Лента “умная” и управляется по специальному цифровому протоколу. Это означает, что если просто воткнуть в ленту питание не произойдет ровным счётом ничего, то есть проверить ленту без управляющего контроллера нельзя." У меня лента ws2812b. Первая мысль была подсветить их, но не удалось(
Никогда не имел дело с этими "умными" лентами. Может быть к лучшему) Не хочется быть дурнее какой-то ленты)
"Лента “умная” и управляется по специальному цифровому протоколу. Это означает, что если просто воткнуть в ленту питание не произойдет ровным счётом ничего, то есть проверить ленту без управляющего контроллера нельзя." У меня лента ws2812b. Первая мысль была подсветить их, но не удалось(
Можно простым скетчем проверить работоспособность ленты и схемы в целом.
Каким скетчем?
Ахах,все может быть)) Я даже преподавателя в институте с ней достал, но он ничего дельного не подсказал, кроме как вырезать диод и запаять другой,но я думал он предложит более изящные методы чтоли, но увы(
Каким скетчем?
Благодарствую,но есть пару вопросов в ситу моей неосведомленности не недостаточных знаний.
#define NUM_LEDS 1 - указываем количество светодиодов в ленте(92)
#define DATA_PIN 3 - указываем пин, откуда данны поступают с МК на ленту на Din?(13)
#define CLOCK_PIN 13 - не понимаю, что указывается в этом месте, там должна быть земля?
далее нужно разкомментить одну строку, где находится мой тип ленты
// FastLED.addLeds<WS2812B, DATA_PIN, RGB>(leds, NUM_LEDS)
и закомментить
FastLED.addLeds<NEOPIXEL, DATA_PIN>(leds, NUM_LEDS);
По идее, да, но можно попробовать и в исходном, виде примера из библиотеки. Должен мигать первый пиксель как мне кажется красным.
Про 13 пин не знаю, пробовал год назад на 125 пикселей эту библиотеку, с одним выводом на данные.
Не, 13 пин это для других лент нужен.
Сработало, мигал зеленым почему то нулевой пиксель,при изменении числа в скобках будет меняться пиксель, но после 6 пикселя и до конца лента не мигает. Значит схема сама рабочая, но что то не то с лентой(
Сработало, мигал зеленым почему то нулевой пиксель,при изменении числа в скобках будет меняться пиксель, но после 6 пикселя и до конца лента не мигает. Значит схема сама рабочая, но что то не то с лентой(
Значит надо попробовать подключится, без обрезаний к пикселям выше и проверить ленту дальше. Зелёный - порядок наверное иной, не RGB , а GRB . В другой библиотеке просто менял местами буквы в строке инициализации ленты.
Хотя наверно плюс питания после 6 лучше подрезать, от греха подальше.
Я бы эти шесть живых отрезал, а дальше начал подключать и рубить по одному неработающие.
То ТС, прежде чем резать, пробегитесь с тестером по питанию всей ленты (прямо на диодах) и внимательно светики осмотрите, может кверх ногами какой залепили.
Аа,думаешь местами катод с анодом перепутали? Тогда скол должен быть в другой стороне
Аа,думаешь местами катод с анодом перепутали? Тогда скол должен быть в другой стороне
Я от восточных братьев, жду чего угодно. Тохас (тухес) имеется и причина для нее должна быть.
Тохас (тухес) имеется.
ОФФТОП: Тухес, тухес... на идиш говорили больше 1000 лет ;)))
Как говорится "Большой тухес - это тоже нахес"
а отдельный топик создать было лень?
Да это мой первый форум, даже не знал,как его создать,да и подумал, что топик ради этой "маленькой "проблемы нет смысла создавать...
здравствуйте. надеюсь ветка не дохлая. купил нану на мс сн340 и ленту ws2811 на 5В, 5 штук с гнездами и штеккерами.
хотелось бы сделать хаотичное помаргивание белого с голубоватым цветом как молния как будто в облаке
скетч есть neo pixel
просьба по шапке сильно не бить.