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

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

Друзья помогите разобраться.

Приобрел управляемые диоды WS2812 многим уже известные.

Поиски доступных для новичка исходников результатов не дали. Сталкивался с скечами для Ардуино, библиотеками NeoPixel.

Во первых не забрался, во-вторых принципиально хочу сообразить всё это на на своей плате на Attiny или Atmege.

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

Только начал разбираться с ШИМом. Думал тут чтото подобное.

Помогите новичку с самого простого.

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

@Mishany Такое ощущение что я нашел ошибку в коде. В void Set_Effect_2(void) temp[s-i][j]=led_on[j]; // Тут случайно не так temp[s+i][j]=led_on[j];/  должно быть для создания массива?

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

Сравнительное тестирование аккумуляторов EVE Energy и Samsung типоразмера 18650

Инженеры КОМПЭЛ провели сравнительное тестирование аккумуляторов EVE и Samsung популярного для бытовых и индустриальных применений типоразмера 18650. 

Для теста были выбраны аккумуляторы литий-никельмарганцевой системы: по два образца одного наименования каждого производителя – и протестированы на двух значениях тока разряда: 0,5 А и 2,5 А. Испытания проводились в нормальных условиях на электронной нагрузке EBD-USB от ZKEtech, а зарядка осуществлялась от лабораторного источника питания в режиме CC+CV в соответствии с рекомендациями в даташите на определенную модель. Подробнее>>

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

Новый аккумулятор EVE серии PLM для GSM-трекеров, работающих в жёстких условиях (до -40°С)

Компания EVE выпустила новый аккумулятор серии PLM, сочетающий в себе высокую безопасность, длительный срок службы, широкий температурный диапазон и высокую токоотдачу даже при отрицательной температуре. 

Эти аккумуляторы поддерживают заряд при температуре от -40/-20°С (сниженным значением тока), безопасны (не воспламеняются и не взрываются) при механическом повреждении (протыкание и сдавливание), устойчивы к вибрации. Они могут применяться как для автотранспорта (трекеры, маячки, сигнализация), так и для промышленных устройств мониторинга, IoT-устройств. Подробнее параметры и результаты тестов новой серии PLM по ссылке.

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

Литиевые батарейки и аккумуляторы от мирового лидера  EVE в Компэл

Компания Компэл, официальный дистрибьютор EVE Energy, бренда №1 по производству химических источников тока (ХИТ) в мире, предлагает продукцию EVE как со склада, так и под заказ. Компания EVE широко известна в странах Европы, Америки и Юго-Восточной Азии уже более 20 лет. Недавно EVE была объявлена поставщиком новых аккумуляторных элементов круглого формата для электрических моделей «нового класса» компании BMW.

Продукция EVE предназначена для самого широкого спектра применений – от бытового до промышленного. Подробнее>>

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

Передача 8 бит по спи как раз укладывается в период одного бита ws, передавая одно из двух значений по спи - ws распознает еденицу либо ноль, получается для зажигания одного диода надо отправить последовательность из 24байт в спи ws их воспримет как 24 бита по 8 бит на цвет.

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

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

не думал что все так плохо.... Стоит наверное начать с изучения СИ, потом почитать даташиты на МК, что бы понять как они устроены, разобрать основные шины данных UART\SPI\I2C\1-wire

  • SPI Status Register – SPSR
  • Bit 7 – SPIF: SPI Interrupt Flag
  • When a serial transfer is complete, the SPIF Flag is set. An interrupt is generated if SPIE in
  • SPCR is set and global interrupts are enabled. If SS is an input and is driven low when the SPI is
  • in Master mode, this will also set the SPIF Flag. SPIF is cleared by hardware when executing the
  • corresponding interrupt Handling Vector. Alternatively, the SPIF bit is cleared by first reading the
  • SPI Status Register with SPIF set, then accessing the SPI Data Register (SPDR).
Изменено пользователем Mishany
Ссылка на комментарий
Поделиться на другие сайты

@Mishany Да некоторые моменты из СИ еще не понятны, но это решаемо с помощью интернета. Мое программирование когда-то давно закончилось на бэйсике, но логика то в голове осталась. Вот исходя логики пытаюсь эмитировать на бумаге ход выполнения программы.

Минуя все воиды с описаниями функций перехожу на войд маин, где крутиться цикл самой программы:

int main(void)
{
    SPI_MasterInit();
    while(1)
    {
//     off_strip();
//     _delay_ms(100);
    Set_Effect_2();

 

То-есть программа лезет в функцию эффектов в которой во временный массив загоняются значения эффекта:

for (s=0; s<t; s++)        //strip-длина ленты
    {
        for (i=0; (i<=s); i++)
        {

            for (j=0;j<3;j++)
            {
                if (i<longh)    //longh-длина эффекта
                {
                    temp[s+i][j]=led_on[j];//задвигаем массив эффекта во временный массив   
                }
                else
                {
                    temp[s+i][j]=led_off[j];//задвигаем led_off во временный массив
                }
            }

        SPI_Write();//отправляем что собрали на ленту
        delay(8+(strip-t));

 

И тут у меня есть вопрос. Во временный массив

temp[0][0] попадает led_on[0]

temp[0][2] попадает led_on[1]

temp[0][2] попадает led_on[2]

 

И больше про Led_on в программе ни слова. Только в самом начале описывается переменная unsigned char led_on[3]={255,255,255};

И при отправке временного массива в SPI_Write происходит сравнение:

if ((temp[n][j]&a)==0)            // что есть сравнение led_on[0..2] и a  == 0

 

Вот тут я не понимаю для чего led_on[0..2]. Может тут какие-то значения пропущены???

 

 

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

в led_on[] храниться белый цвет

//вывод временного массива на ленту
void SPI_Write(void)				
{
	unsigned char a;
	unsigned char j,i,n;
for (n=0; n<strip; n++)			//strip=20 диодов длина ленты
{
	

	for (j=0; j<3; j++)			//первым выставляется G (Hi->Low), потом R и B
	{
		a = 0x80;				//сравниваем каждый бит
		for (i=0;i<8;i++)			//передача 8 бит цвета из подготовленного массива temp
		{
			if ((temp[n][j]&a)==0)
			{
				SPDR = 224;//0xE0 0.37us 0	//ноль
			}
			else
			{
				SPDR = 252;//0xFC 0.75us 1 //единица
			}
			while(!(SPSR & (1<<SPIF)));
			a=a>>1;
		}
	}
}
}

что тут может быть не понятно? Учите СИ, битовые поля, битовые маски, многомерные массивы

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

  • 3 месяца спустя...

Выше @Mishany привел примерчик реализации обмена по SPI с WS2812 - не смотря на то, что идея на поверхности и мне самому приходила в голову, я почему-то уперся в работу по прерываниям и, само собой, требования протокола не смог выполнить. А его пример вдохновил меня на другой подход, и вот что вышло:

Скачать видео
Скачать видео
Скачать видео

Это первый положительный результат. Основа - atmega32 (просто она есть в наличии, реально можно упихать и в atmega8), немного модифицированная библиотека FFT от Chan-а и 32 штуки WS2812 на выходе. В начале и конце работает фоновая подсветка (при тишине, не обращайте внимание на гул - это вентилятор системника на горизонте).

К сожалению, правила ютуба не позволяют выложить со звуком видео с ритмичной музыкой типа Boney M или Rock'n'Roll, на которой зрелищность заметно выше. Ну и качество видео не отражает реального эффекта в полной мере...

Но мне все равно нравится :) 

Изменено пользователем ARV

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

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

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

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

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

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

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

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

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

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

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

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