Перейти к содержанию

Глеб Уласов

Members
  • Постов

    1
  • Зарегистрирован

  • Посещение

Сообщения, опубликованные Глеб Уласов

  1. Привет. Проблема такая-работают только первые 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}

     

     

×
×
  • Создать...