Привет. Проблема такая-работают только первые 6 светодиодов. Я вырезал неработающий первый диод и припаял ленту -не работает. Сама подсветка реагирует на экран-цвета меняет,только первые 6 диодов. В режиме подсветки работают те же диоды только одним цветом. Ошибок не выдает. Напряжение на выходе ленты-5 вольт как и на входе, цепь не разомкнута.Что делать-вариантов уже нету,спасите пожалуйста( Лента 2 метра, 92 диода
Скрытый текст
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>
028
029/*
030 Управление лентой на WS2812 с компьютера + динамическая яркость
031 Создано не знаю кем, допилил и перевёл AlexGyver <a href="http://alexgyver.ru/" title="http://alexgyver.ru/" rel="nofollow">http://alexgyver.ru/</a>
Сборка светодиодной ленты на WS2812B
в Песочница (Q&A)
Опубликовано
Привет. Проблема такая-работают только первые 6 светодиодов. Я вырезал неработающий первый диод и припаял ленту -не работает. Сама подсветка реагирует на экран-цвета меняет,только первые 6 диодов. В режиме подсветки работают те же диоды только одним цветом. Ошибок не выдает. Напряжение на выходе ленты-5 вольт как и на входе, цепь не разомкнута.Что делать-вариантов уже нету,спасите пожалуйста( Лента 2 метра, 92 диода
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>
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
050int new_bright, new_bright_f;
051unsigned long bright_timer, off_timer;
052
053#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; // флаг состояния ленты
058
059void 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
079void 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
089void 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) {
103waitLoop: while (!Serial.available()) check_connection();;
104 if (prefix == 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.r = r;
132 leds.g = g;
133 leds.b = b;
134 }
135 FastLED.show(); // записываем цвета в ленту
136}