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

Как регулировать яркость WS2812b?


-=FISHER=-

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

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

Для того, чтобы значения переданных вами цветов стали активными должна быть выдержана пауза в передаче в течении 50мкс.

Эта пауза нужна для обновления ВСЕЙ ленты. А я отправляю посылку всего лишь на один светодиод, тут никаких пауз не нужно. Я читал документацию.

Мы все учились по-немногу, чему-нибудь и как-нибудь...

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

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

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

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

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

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

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

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

Плохо читали!

823772284_.JPG.d556757abf9ec83a1f50afc4ae5f0d77.JPG

Покажите пожалуйста, где вы видите паузу в передаче первых 24 бит?

Изменено пользователем -=FISHER=-

Мы все учились по-немногу, чему-нибудь и как-нибудь...

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

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

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

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

Абсолютно не важно на сколько светодиодов вы передаете данные, условие для зажигания должны быть соблюдены! Если на один то будьте добры выдержать паузу что бы он зажегся.

Сергей.

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

17 минут назад, -=FISHER=- сказал:

Эта пауза нужна для обновления ВСЕЙ ленты.

эта пауза нужна для обновления тех светодиодов для которых была передана посылка, а сколько их будет 1 или нацать без разницы

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

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

эта пауза нужна для обновления тех светодиодов

#include "main.h"

int main(void)
{
    SPI_ini();
    SPI_SendByte(0xDB); //ЗЕЛЁНЫЙ
    SPI_SendByte(0x5C); //КРАСНЫЙ
    SPI_SendByte(0xB3); //СИНИЙ
    _delay_us(50);
    while (1) 
    {

    }
}

Хорошо, сделал вот так)) ничего не изменилось.

Мы все учились по-немногу, чему-нибудь и как-нибудь...

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

Я нашел как минимум одну ошибку в инициализации SPI, исправил, теперь инициализация выглядит вот так:

void SPI_ini(void)
{
    SPI_DDR|=SPI_pins; //ножки SPI на выход
    PORTB&=~((1<<2)|(1<<3)|(1<<5)); //низкий уровень
    SPCR|=(1<<SPE)|(1<<MSTR); //включим шину, объявим ведущим
    SPSR|=(1<<SPI2X);
}

Это при условии, что МК настроен на 8 МГц.

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

угадать

В каких именно? Все используемые функции описаны на предыдущей странице.

@IMXO Не могу понять, как я должен выставить 8 МГц частоты SPI.

02.03.2020 в 17:45, ARV сказал:

SPI настраивается на 8 МГц (кварц 16 МГц).

Не могу понять, как я могу при кварце 16 МГц, настроить частоту SPI на 8...

Изменено пользователем -=FISHER=-

Мы все учились по-немногу, чему-нибудь и как-нибудь...

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

@IMXO image.png.dfc5031a4c45e9dc57ac83096e640d0d.png

Вот что получается при 16 МГц, 8 МГц никак не получить. Поправьте пожалуйста.

Изменено пользователем -=FISHER=-

Мы все учились по-немногу, чему-нибудь и как-нибудь...

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

Я видимо изначально неправильно понял эту таблицу, и в итоге чтобы настроить частоту SPI на 8 МГц, инициалиация будет выглядеть следующим образом, правильно?

void SPI_ini(void)
{
	SPI_DDR|=SPI_pins; //ножки SPI на выход
	PORTB&=~((1<<2)|(1<<3)|(1<<5)); //низкий уровень
	SPCR|=(1<<SPE)|(1<<MSTR); //включим шину, объявим ведущим
	SPSR|=(1<<SPI2X); //частота SPI 16/2 = 8 МГц
}

Я изменил функцию отправки следующим образом и теперь у меня начали загораться светодиоды. Только почему -то независимо от того, какой байт я передаю. У меня они светят БЕЛЫМ, то есть все цвета по максимуму...

void SPI_SendByte(uint8_t byte)
{
	for(uint8_t mask=0x80; mask; mask >>=1)
	{
		SPDR = byte & mask ? WS2812_BIT_1 : WS2812_BIT_0;
		while (!(SPSR & (1 << SPIF)));
	}
}

Сейчас ещё заметил такой интересный факт, что даже если я обе константы выставлю равными НУЛЮ, то всё равно будут гореть все три цвета в пикселе...Единственное что верно отображается это количество зажженых пикселей, которое равно количеству отправленных по SPI байт делённое на 3.

#define WS2812_BIT_0 0 // Константа для формирования импульса "0" для WS2812

#define WS2812_BIT_1 0 // Константа для формирования импульса "1" для WS2812

Изменено пользователем -=FISHER=-

Мы все учились по-немногу, чему-нибудь и как-нибудь...

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

24 минуты назад, -=FISHER=- сказал:

Вся надежда на вас(((

Я понял, был косяк в инициализации SPI. Я не включил бит CPHA в регистре SPCR.

Мы все учились по-немногу, чему-нибудь и как-нибудь...

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

Если подключить логически анализатор то вы увидите что код написанный на С выполняется дольше чем нужно. И во временные рамки протокола вам не попасть!!! Сам пробовал.....

Единственный и нормальный выход из ситуации использовать стороннюю библиотеку. 

Прикрепил файл. Библиотека маленькая и понятная. Я её использую и по логическому анализатору все четко по временным рамкам.

 

light_ws2812_AVR.rar

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

3 минуты назад, LEVV2006 сказал:

И во временные рамки протокола вам не попасть!!!

Не соглашусь с Вами, потому что у меня всё заработало как надо, а ошибка была в инициализации SPI.

 

Мы все учились по-немногу, чему-нибудь и как-нибудь...

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

44 минуты назад, LEVV2006 сказал:

Если подключить логически анализатор то вы увидите что код написанный на С выполняется дольше чем нужно. И во временные рамки протокола вам не попасть!!! Сам пробовал.....

действительно он выполняется дольше, а в них и не нужно попадать.  прием бита начинается с фронта импульса , чтение состояния бита происходит через 0,6мкс (в середине бита) , сколько времени будет пауза не критично , главное чтобы это время не привесило 50мкс. 

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

Когда я писал алгоритм на С у меня была проблема с первым светодиодом. Он всегда загорался разным цветом, а остальные горели нормально......

Вот я и искал библиотеку.

Хорошо что у вас заработало сразу!

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

02.03.2020 в 01:02, ARV сказал:

Да, чуть не забыл: яркость в моём сообщении "математическая", для глаза это будет совсем не в 2 раза меньше... А с учётом того, что эти светодиоды при 0x010101 уже очень ярко светят белым, то и подавно...

Добрый вечер! А есть какие-то ориентиры, я вот хочу допустим изобразить эффект метеора с плавно затухающим хвостом, для 16 пиксельного кольца, на какое значение я должен каждый раз убавлять яркость чтобы добиться такого эффекта, подскажите пожалуйста.

 

И ещё вопрос, реально ли используя модель RGB (без конвертации из HSV) добиться такого перебора цветов как вот в этом эффекте, так называемом Rainbow Rotation?

 

Мы все учились по-немногу, чему-нибудь и как-нибудь...

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

28.03.2020 в 21:20, -=FISHER=- сказал:

А есть какие-то ориентиры, я вот хочу допустим изобразить эффект метеора с плавно затухающим хвостом

В моих эффектах удовлетворительный "хвост" получался просто уменьшением яркости в 2 раза. Первый светодиод светится на яркость 0xFF, второй 0x7F, третий 0x3F и так далее.

28.03.2020 в 21:20, -=FISHER=- сказал:

реально ли используя модель RGB (без конвертации из HSV) добиться такого перебора цветов как вот в этом эффекте

Разумеется!

Радуга получается вот по такому графику:

rainbow.png.7e94b8fc0ff3235452a6e4a1352974a3.png

По горизонтали - условные "шаги изменения цвета". Как видите, выделено 6 сегментов, внутри которых меняется только одна составляющая, а две остальные неизменны и равны либо 0, либо 0xFF. Вам остается лишь вычислить, с каким шагом изменять уровень цветовой составляющей, чтобы все 6 этапов укладывались ровно в количество ваших светоидодов, и тогда "радуга" у вас замкнется в кольцо. Ну а вращение её - дело техники: просто смещение точки остчета...

Я прошу прощения за молчание в теме: мне выписали 20 суток ареста, то есть был забанен на 20 суток.

 

Если забанить всех, кто набрался смелости думать независимо, здорово будет на форуме - как на кладбище: тишина, птички поют...

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

5 минут назад, ARV сказал:

Я прошу прощения за молчание в теме: мне выписали 20 суток ареста, то есть был забанен на 20 суток.

Это очень печально...С возвращением! :)

21 минуту назад, ARV сказал:

Разумеется!

И тут я Вас немного не дождался и нашел примеры красивой радуги в нескольких палитрах модели HSV. При наличии готовой библиотеки конвертации из HSV в RGB, работать с этой палитрой становится гораздо удобнее.

Вот пример функции, которая реализует эффект RAINBOW ROTATION.

Скрытый текст

 for(i=0; i<LED_COUNT; i++)
 {
 	HSV.H=64;
  	HSV.S=255;
  	HSV.V=(i * (16 / LED_COUNT));
 					
 	hsv2rgb(&HSV, &RGB, RAINBOW); //последний аргумент это как раз палитра
 					
 	pixels[(i + position) % LED_COUNT].r=RGB.R;
 	pixels[(i + position) % LED_COUNT].g=RGB.G;
 	pixels[(i + position) % LED_COUNT].b=RGB.B;
 }
 ws2812_show();
 position++;
 position %= LED_COUNT;
 _delay_ms(50);	

 

 

Мы все учились по-немногу, чему-нибудь и как-нибудь...

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

1 час назад, -=FISHER=- сказал:

И тут я Вас немного не дождался и нашел примеры красивой радуги в нескольких палитрах модели HSV.

@ARV Вот кстати в итоге что у меня получилось. Демо-видео так сказать.

 

 

Мы все учились по-немногу, чему-нибудь и как-нибудь...

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

Поздравляю вас! :) 

Если забанить всех, кто набрался смелости думать независимо, здорово будет на форуме - как на кладбище: тишина, птички поют...

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

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

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

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

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

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

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

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

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

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

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

    • Какие доводы имеете против принципа разумной достаточности? Михайло Василич на сей предмет сказал бы: "В электронику уже затем вникать следует, чтобы легче было без неё обходиться"
    • Во-первых, усилитель от нагрузки 48 Ом может возбудиться, во-вторых звук будет искаженный за счет высокого сопротивления источника. Надо такую схемку применить (если усилитель рассчитан на нагрузку 4 Ом:
    • Постараюсь не сильно. Но пнуть в нужном направлении надо. Такое безобразие надо срочно исправлять.   В таком виде - разве что любителям головоломок и ребусов. Вы более запутанно и небрежно схемы не пробовали рисовать?  Вот на такой "схеме" и то лучше видно, что с чем соединено: На схемах электрических принципиальных все элементы обозначаются в виде УГО (Условных Графических Изображений). И схема рисуется как минимум с соблюдением основных правил, чтобы всем понятно было. Ну ладно, ГОСТы - это сложно. Но хотя бы что-то популярное на эту тему почитайте (ссылка).
    • для автогенераторов? У Амелиных речь идет об усилителях, подаче на их  вход сигнала синусоиды и т.д. Про автогенераторы что-то ничего не нашел. Книга 2013 г. Может, можно нагрузить источник sine на какой-нибудь резистор, никуда к автогенератору не подключать (общим будет только общий провод) и далее смотреть анализ искажений? Покажет ли Microcap правду после такого обмана? 
    • Доброй ночи. Столкнулся с неожиданной трудностью.  Косой мост.  На затворе транзистора такая картинка( синий- напряжение на коллекторе, желтый- напряжение на затворе), в момент включения ключа.  Предположительно, на полке Миллера, так быть не должно. RC цепи между истоком и стоком не помогают, в затворной цепи, так же. Верхний ключ немного сильнее греется нижнего, при этом осциллограммы на затворах идентичные. Подскажите пож., куда смотреть? STW26nm60n.pdf     KosoyR50.asc
    • Для этого надо как минимум схему схему приложить.  Без неё все ваши изыскания не имеют никакой практической ценности. Мало ли какая хрень с какими ошибками у вас собрана. Можно только догадываться, что у вас сетевой полумост. Но вообще-то и это не факт...
×
×
  • Создать...