Адресная светодиодная лента загорается белым и не реагирует
- Войдите на сайт для отправки комментариев
Лента 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 вроде бы...
Короче говоря, проверьте правильность инициализации ленты.
нуда, прописал:
Только вот по частоте не пойму как настроить. Библиотека сама должна делать? На сайте библиотеки указано, что можно указывать частоту при инициализации, пример:
void setup() { FastLED.addLeds<APA102, DATA_PIN, CLOCK_PIN, RGB, DATA_RATE_MHZ(12)>(leds, NUM_LEDS); }но в файле библиотеки у функции (метода, как правильно в ардуине, не запомнил) инициализации нет других переменных, чем эти (выше в строке которые).
Лента точно на 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. Насколько я понимаю, здесь что-то пины переопределены и еще что-то. Вообще, это можно починить или совсем все плохо? Куда копать?
Пробовал примеры из библиотеки, тоже все ошибки выходят разные. Покупать нормальную ардуино?
In file included from C:\Arduino\libraries\FastLED\platforms/avr/fastled_avr.h:6:0, from C:\Arduino\libraries\FastLED\platforms.h:32, from C:\Arduino\libraries\FastLED\FastLED.h:52, from C:\Arduino\libraries\FastLED\FastLED.cpp:2: C:\Arduino\libraries\FastLED\platforms/avr/clockless_trinket.h:76:0: warning: "D3" redefined #define D3(ADJ) DINT(T3,ADJ) ^ In file included from C:\Arduino\hardware\WAV\avr\variants\lgt8fx8e/pins_arduino.h:37:0, from C:\Arduino\hardware\WAV\avr\cores\lgt8f/Arduino.h:225, from C:\Arduino\libraries\FastLED\led_sysdefs.h:43, from C:\Arduino\libraries\FastLED\FastLED.h:41, from C:\Arduino\libraries\FastLED\FastLED.cpp:2: c:\arduino\hardware\wav\avr\variants\standard\pins_arduino.h:84:0: note: this is the location of the previous definition #define D3 3 /* PD3 */ ^ C:\Arduino\libraries\FastLED\FastLED.cpp: In member function 'void CFastLED::delay(long unsigned int)': C:\Arduino\libraries\FastLED\FastLED.cpp:132:9: error: 'yield' was not declared in this scope yield();Привет. Проблема такая-работают только первые 6 светодиодов. Я вырезал неработающий первый диод и припаял ленту -не работает. Сама подсветка реагирует на экран-цвета меняет,только первые 6 диодов. В режиме цветомузыки работают те же диоды только одним цветом. Ошибок не выдает. Напряжение на выходе ленты-5 вольт как и на входе, цепь не разомкнута.Что делать-вариантов уже нету,спасите пожалуйста(
001include <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>028029/*030Управление лентой на WS2812 с компьютера + динамическая яркость031Создано не знаю кем, допилил и перевёл AlexGyver <a href="http://alexgyver.ru/" title="http://alexgyver.ru/" rel="nofollow">http://alexgyver.ru/</a>0322017033*/034//----------------------НАСТРОЙКИ-----------------------035#define NUM_LEDS 92 // число светодиодов в ленте036#define DI_PIN 13 // пин, к которому подключена лента037#define OFF_TIME 10 // время (секунд), через которое лента выключится при пропадаании сигнала038#define CURRENT_LIMIT 2000 // лимит по току в миллиамперах, автоматически управляет яркостью (пожалей свой блок питания!) 0 - выключить лимит039040#define START_FLASHES 1 // проверка цветов при запуске (1 - включить, 0 - выключить)041042#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//----------------------НАСТРОЙКИ-----------------------049050intnew_bright, new_bright_f;051unsignedlongbright_timer, off_timer;052053#define serialRate 115200 // скорость связи с ПК054uint8_t prefix[] = {'A','d','a'}, hi, lo, chk, i;// кодовое слово Ada для связи055#include <FastLED.h>056CRGB leds[NUM_LEDS];// создаём ленту057boolean led_state =true;// флаг состояния ленты058059voidsetup()060{061FastLED.addLeds<WS2812, DI_PIN, GRB>(leds, NUM_LEDS);// инициализация светодиодов062if(CURRENT_LIMIT > 0) FastLED.setMaxPowerInVoltsAndMilliamps(5, CURRENT_LIMIT);063064// вспышки красным синим и зелёным при запуске (можно отключить)065if(START_FLASHES) {066LEDS.showColor(CRGB(255, 0, 0));067delay(500);068LEDS.showColor(CRGB(0, 255, 0));069delay(500);070LEDS.showColor(CRGB(0, 0, 255));071delay(500);072LEDS.showColor(CRGB(0, 0, 0));073}074075Serial.begin(serialRate);076Serial.print("Ada\n");// Связаться с компом077}078079voidcheck_connection() {080if(led_state) {081if(millis() - off_timer > (OFF_TIME * 1000)) {082led_state =false;083FastLED.clear();084FastLED.show();085}086}087}088089voidloop() {090if(AUTO_BRIGHT) {// если включена адаптивная яркость091if(millis() - bright_timer > 100) {// каждые 100 мс092bright_timer = millis();// сброить таймер093new_bright = map(analogRead(6), 0, BRIGHT_CONSTANT, MIN_BRIGHT, MAX_BRIGHT);// считать показания с фоторезистора, перевести диапазон094new_bright = constrain(new_bright, MIN_BRIGHT, MAX_BRIGHT);095new_bright_f = new_bright_f * COEF + new_bright * (1 - COEF);096LEDS.setBrightness(new_bright_f);// установить новую яркость097}098}099if(!led_state) led_state =true;100off_timer = millis();101102for(i = 0; i <sizeofprefix; ++i) {103waitLoop:while(!Serial.available()) check_connection();;104if(prefix[i] ==Serial.read())continue;105i = 0;106gotowaitLoop;107}108109while(!Serial.available()) check_connection();;110hi =Serial.read();111while(!Serial.available()) check_connection();;112lo =Serial.read();113while(!Serial.available()) check_connection();;114chk =Serial.read();115if(chk != (hi ^ lo ^ 0x55))116{117i = 0;118gotowaitLoop;119}120121memset(leds, 0, NUM_LEDS *sizeof(structCRGB));122for(uint8_t i = 0; i < NUM_LEDS; i++) {123byter, g, b;124// читаем данные для каждого цвета125while(!Serial.available()) check_connection();126r =Serial.read();127while(!Serial.available()) check_connection();128g =Serial.read();129while(!Serial.available()) check_connection();130b =Serial.read();131leds[i].r = r;132leds[i].g = g;133leds[i].b = b;134}135FastLED.show();// записываем цвета в ленту136}В таком виде это -> к автору
smesher - во-первых, вываливать такую портянку простым текстом в форум - это прямо-таки верх неуважения к участникам. Вряд ли хоть кто-нибудь после этого захочет помочь по сути вопроса. И извинений тут мало - надо переделать как положено.
Во-вторых, в начале приведенного кода стоит копирайт Алекса Гивера - крутого блоггера, но, к сожалению, весьма посредственного программиста. Местное сообщество предпочитает с его творениями не связываться по причине низкого качества, так что обращайтесь к нему лично -когда звезды встанут благоприятно - он отвечает на вопросы.
Это мой первый форум,переделал в нужном виде, ошибки пропали после полного сноса этого кода. Но появились новые проблемы, которые я описал в тексте выше
Извините,уже исправился
а памяти хватает? Что пишет АрдуиноИДЕ после компиляции на тему размера прошивки и использования RAM?
Я вырезал неработающий первый диод и припаял ленту -не работает.
А лента, случайно, не сегментами режется?
Да, один сегмемент-один светодиод,вроде как

Да, один сегмемент-один светодиод,вроде как
зачем тогда что-то обратно припаивать?
Для начала уменьшите в скетче число диодов. скажем, до 20. Вдруг поможет?
А дальше этим скетчем на 20 диодов попробуйте подключиться к ленте в разных местах - скажем к 10 диоду, потом двадцатому. потом тридцатому и тд - может где-то заоаботает?
А разве нельзя прозвонить по одному светодиоду?
Можно,по показаниям мультиметра-они все рабочие. Но эти мультиметры не подсвечиваются мультиметром(
Но эти мультиметры не подсвечиваются мультиметром(
Чего?
чушь написал, эти светодиоды не подсвечиваются мультиметром
Они должны светиться при подаче напряжения. Если у Вас нет мультиметра для прозвонки диодов, то можно звонить просто батарейкой 1,5В. Только полярность не перепутать.
"Лента “умная” и управляется по специальному цифровому протоколу. Это означает, что если просто воткнуть в ленту питание не произойдет ровным счётом ничего, то есть проверить ленту без управляющего контроллера нельзя." У меня лента ws2812b. Первая мысль была подсветить их, но не удалось(
Никогда не имел дело с этими "умными" лентами. Может быть к лучшему) Не хочется быть дурнее какой-то ленты)
"Лента “умная” и управляется по специальному цифровому протоколу. Это означает, что если просто воткнуть в ленту питание не произойдет ровным счётом ничего, то есть проверить ленту без управляющего контроллера нельзя." У меня лента ws2812b. Первая мысль была подсветить их, но не удалось(
Можно простым скетчем проверить работоспособность ленты и схемы в целом.
Каким скетчем?
Ахах,все может быть)) Я даже преподавателя в институте с ней достал, но он ничего дельного не подсказал, кроме как вырезать диод и запаять другой,но я думал он предложит более изящные методы чтоли, но увы(
Каким скетчем?
#include "FastLED.h" // How many leds in your strip? #define NUM_LEDS 1 // For led chips like Neopixels, which have a data line, ground, and power, you just // need to define DATA_PIN. For led chipsets that are SPI based (four wires - data, clock, // ground, and power), like the LPD8806 define both DATA_PIN and CLOCK_PIN #define DATA_PIN 3 #define CLOCK_PIN 13 // Define the array of leds CRGB leds[NUM_LEDS]; void setup() { // Uncomment/edit one of the following lines for your leds arrangement. // FastLED.addLeds<TM1803, DATA_PIN, RGB>(leds, NUM_LEDS); // FastLED.addLeds<TM1804, DATA_PIN, RGB>(leds, NUM_LEDS); // FastLED.addLeds<TM1809, DATA_PIN, RGB>(leds, NUM_LEDS); // FastLED.addLeds<WS2811, DATA_PIN, RGB>(leds, NUM_LEDS); // FastLED.addLeds<WS2812, DATA_PIN, RGB>(leds, NUM_LEDS); // FastLED.addLeds<WS2812B, DATA_PIN, RGB>(leds, NUM_LEDS); FastLED.addLeds<NEOPIXEL, DATA_PIN>(leds, NUM_LEDS); // FastLED.addLeds<APA104, DATA_PIN, RGB>(leds, NUM_LEDS); // FastLED.addLeds<UCS1903, DATA_PIN, RGB>(leds, NUM_LEDS); // FastLED.addLeds<UCS1903B, DATA_PIN, RGB>(leds, NUM_LEDS); // FastLED.addLeds<GW6205, DATA_PIN, RGB>(leds, NUM_LEDS); // FastLED.addLeds<GW6205_400, DATA_PIN, RGB>(leds, NUM_LEDS); // FastLED.addLeds<WS2801, RGB>(leds, NUM_LEDS); // FastLED.addLeds<SM16716, RGB>(leds, NUM_LEDS); // FastLED.addLeds<LPD8806, RGB>(leds, NUM_LEDS); // FastLED.addLeds<P9813, RGB>(leds, NUM_LEDS); // FastLED.addLeds<APA102, RGB>(leds, NUM_LEDS); // FastLED.addLeds<DOTSTAR, RGB>(leds, NUM_LEDS); // FastLED.addLeds<WS2801, DATA_PIN, CLOCK_PIN, RGB>(leds, NUM_LEDS); // FastLED.addLeds<SM16716, DATA_PIN, CLOCK_PIN, RGB>(leds, NUM_LEDS); // FastLED.addLeds<LPD8806, DATA_PIN, CLOCK_PIN, RGB>(leds, NUM_LEDS); // FastLED.addLeds<P9813, DATA_PIN, CLOCK_PIN, RGB>(leds, NUM_LEDS); // FastLED.addLeds<APA102, DATA_PIN, CLOCK_PIN, RGB>(leds, NUM_LEDS); // FastLED.addLeds<DOTSTAR, DATA_PIN, CLOCK_PIN, RGB>(leds, NUM_LEDS); } void loop() { // Turn the LED on, then pause leds[0] = CRGB::Red; FastLED.show(); delay(500); // Now turn the LED off, then pause leds[0] = CRGB::Black; FastLED.show(); delay(500); }Благодарствую,но есть пару вопросов в ситу моей неосведомленности не недостаточных знаний.
#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
просьба по шапке сильно не бить.