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

Сборка светодиодной ленты на WS2812B


Рекомендуемые сообщения

Реклама: ООО ТД Промэлектроника, ИНН: 6659197470, Тел: 8 (800) 1000-321

6 минут назад, IMXO сказал:

не посредственно то, что подразумевает адрес , номер исполнительного устройства

Давайте так. Вернемся к определению адресации, одно из значений которого "метод идентификации местоположения объекта". Вы можете обратиться к любому из 10 последовательно включенных WS2812B? Думаю да. Значит Вы можете идентифицировать любой из них.

Я думаю, что это просто вопрос терминологии!

А если прикрутить к ним тот же интерфейс в виде библиотеки, то вопрос вообще отпадет!

Ссылка на комментарий
Поделиться на другие сайты

20% скидка на весь каталог электронных компонентов в ТМ Электроникс!

Акция "Лето ближе - цены ниже", успей сделать выгодные покупки!

Плюс весь апрель действует скидка 10% по промокоду APREL24 + 15% кэшбэк и бесплатная доставка!

Перейти на страницу акции

Реклама: ООО ТМ ЭЛЕКТРОНИКС, ИНН: 7806548420, info@tmelectronics.ru, +7(812)4094849

Выбираем схему BMS для корректной работы литий-железофосфатных (LiFePO4) аккумуляторов

 Обязательным условием долгой и стабильной работы Li-FePO4-аккумуляторов, в том числе и производства EVE Energy, является применение специализированных BMS-микросхем. Литий-железофосфатные АКБ отличаются такими характеристиками, как высокая многократность циклов заряда-разряда, безопасность, возможность быстрой зарядки, устойчивость к буферному режиму работы и приемлемая стоимость. Но для этих АКБ, также как и для других, очень важен контроль процесса заряда и разряда, а специализированных микросхем для этого вида аккумуляторов не так много. Инженеры КОМПЭЛ подготовили список имеющихся микросхем и возможных решений от разных производителей. Подробнее>>

Реклама: АО КОМПЭЛ, ИНН: 7713005406, ОГРН: 1027700032161

А если значение переменной это адрес переменной?  Указатель на саму себя, рекурсия давайте это все не адресация это цифры)

А в и тоге все это интерфейс управления!)

Изменено пользователем 1m0rta1
Ссылка на комментарий
Поделиться на другие сайты

4 минуты назад, IMXO сказал:

думаю что нет

Хорошо. Давайте по-другому. У Вас есть массив из 10 24-х битных ячеек, который Вы регулярно шлете по шине в сторону линейки из 10 WS2812b. Вы сможете путем изменения параметров одной из них изменить цвет этой ячейки?

Надеюсь что да. Ну и что, что это не прямая адресация?!

Изменено пользователем kotwlf
Ссылка на комментарий
Поделиться на другие сайты

1 минуту назад, IMXO сказал:

нет не прямая

Все верно, совершенно не прямая! Но адресация есть?

Да, по сути, будет перезаписан весь массив от 1 до N-1, но это просто вопрос реализации!

1 минуту назад, 1m0rta1 сказал:

у них адрес цвет

У них адрес - это порядковый номер в массиве 24-х битных переменных цвета.

Ссылка на комментарий
Поделиться на другие сайты

1 минуту назад, 1m0rta1 сказал:

если шин 10

Пишется элементарная процедура с 3 входными значениями(X,Y,RGB), которая приводит отображение в матрице в соответствие с необходимым.

Ссылка на комментарий
Поделиться на другие сайты

Только что, kotwlf сказал:

Но адресация есть?

нет. для ds18b20,  еще тысячи МС последовательного доступа адресация  есть. для WS2812b его нет

ЗЫ пошли по второму кругу, не вижу смысла повторятся

Ссылка на комментарий
Поделиться на другие сайты

адрес = цвет =)

Но ТС советую брать блок питания рассчитанный на все линейки по напряжению как советует производитель и по току в 2 раза больше, а ток на линейки уменьшить на 30 %)

Изменено пользователем 1m0rta1
Ссылка на комментарий
Поделиться на другие сайты

  • 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}

 

 

Ссылка на комментарий
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.
Примечание: Ваш пост будет проверен модератором, прежде чем станет видимым.

Гость
Unfortunately, your content contains terms that we do not allow. Please edit your content to remove the highlighted words below.
Ответить в этой теме...

×   Вставлено с форматированием.   Восстановить форматирование

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

Загрузка...
  • Последние посетители   0 пользователей онлайн

    • Ни одного зарегистрированного пользователя не просматривает данную страницу
×
×
  • Создать...