Кто работал или работает с WS2811/WS2812?
Интернет особо не помог.
WS2812
Сообщений 1 страница 24 из 24
Поделиться12013-12-02 11:16:37
Поделиться22013-12-02 13:35:32
Глянул. Все вроде бы так же, как и WS2801.
Удерживаем паузу 50 мкс - это будет сигнал сброса. После этого сдвигаем 24 бита в МСХ. Они защелкнутся в первой МСХ. Если подключены несколько шт, то следующие 24 бита будут для второй МСХ и т.д. до поступления сигнала сброса.
Поделиться32013-12-02 13:41:10
Там протокол, отличный от SPI.
1 и 0 кодируется разными временными интервалами.
Причём задержки очень маленькие, в пределах нескольких тактов контроллера.
Нужно будет на АСМе писать.
Вот нашёл на АСМе, но как это на Баскомовский АСМ перевести?
http://sourceforge.net/p/abavr/lib/ci/e … 1/WS2811.h
Поделиться42013-12-02 18:11:06
Прикольная микра/лед.
Надо прикупить.
Поделиться52013-12-02 18:17:58
Ещё прикольнее светодиоды со встроенной микрой:
Они бывают 30, 60, 120 штук на метр.



Поделиться62013-12-02 18:37:51
Да, извиняюсь, сразу и не заметил. Пошерстил инет и мне показалось, что это лишняя головная боль.
Вот здесь можно про нее прочесть. http://bleaklow.com/ Правда статья энтузиазма не добавляет.
Мне кажется проще использовать WS2801.
Поделиться72013-12-02 18:39:23
Ага, прикольно.
Поделиться82017-10-27 23:55:38
Цена ws2812 уже вызывает интерес! Есть у кого на работки? Хочется температурный градусник во всё окно, на Aliexpress они уже по 5-6р. за штуку.
Поделиться92017-10-28 00:32:21
Ещё не пробовал, но нашел библиотеку - http://rghost.ru/6rlDXz6KL
И код использования:
Код:'------------------------------------------------------------------------------- ' rainbow_ws2812_Knightrider.bas ' based on sample from Galahat '------------------------------------------------------------------------------- $regfile = "m88pdef.dat" $crystal = 8000000 $hwstack = 40 $swstack = 16 $framesize = 32 $lib "Rainbow.lib" Config Rainbow = 1 , Rb0_len = 8 , Rb0_port = Portb , Rb0_pin = 0 ' ^ connected to pin 0 ' ^------------ connected to portB ' ^-------------------------- 8 leds on stripe ' ^------------------------------------- 1 channel 'Global Color-variables Dim Color(3) As Byte R Alias Color(_base) : G Alias Color(_base + 1) : B Alias Color(_base + 2) 'CONST Const Numleds = 8 '----[MAIN]--------------------------------------------------------------------- Dim N As Byte Rb_selectchannel 0 ' select first channel R = 50 : G = 0 : B = 100 ' define a color Rb_setcolor 0 , Color(1) ' update leds Rb_send Do For N = 1 To Numleds -1 Rb_shiftright 0 , Numleds 'shift to the right all leds except the last one Waitms 100 Rb_send Next For N = 1 To Numleds -1 Rb_shiftleft 0 , Numleds 'shift to the left all leds except the last one Waitms 100 Rb_send Next Waitms 500 'wait a bit Loop
Поделиться102017-10-28 12:16:35
Ещё не пробовал, но нашел библиотеку
Этот библиотека баскома https://avrhelp.mcselec.com/rb_selectchannel.htm
Она входит в состав дистрибутива.
Поделиться112017-10-29 13:36:18
Да, штатная либа, давняя тема:
Ну и итог игрщь (уже где-то тут выкладывал):
Поделиться122017-10-29 19:04:53
И я на ней делал:
Поделиться132018-04-20 17:56:07
Всё, переварил.
Вообщем после инициализации резервируется массив, количество светодиодов * на кол-во цветов. У меня 192 штуки 2х цветных светодиода:
Config Rainbow = 1 , Rgb = 3 , Rb0_len = 192 , Rb0_port = Portb , Rb0_pin = 0
Далее для вывода мне понравилось использовать:
Rb_color P , 1 , Color(1)
Где P - номер светодиода, 1 - выбрать 1 светодиод (можно сразу много после него) и массив цвета.
Можно сразу сделать картинку без вывода на светодиоды в памяти.
Чтоб вывести в светодиоды, надо выполнить:
Rb_send
На всякий случай ништяка цветовая, для упращения цветоности, почти как в ZX Spectrum ))):
Dim Color(3) As Byte
Dim R As Byte At Color(1) Overlay
Dim G As Byte At Color(2) Overlay
Dim B As Byte At Color(3) Overlay
Select Case Led
Case 1: 'Морская волна
R = 0 : G = 255 : B = 255
Case 0 'Чёрный
R = 0 : G = 0 : B = 0
Case 2: 'Голубой
R = 0 : G = 0 : B = 255
Case 3: 'фуксин
R = 255 : G = 0 : B = 255
Case 4: 'серый
R = 128 : G = 128 : B = 128
Case 5: 'зелёный
R = 0 : G = 128 : B = 0
Case 6: 'Ярко-зелёный
R = 0 : G = 255 : B = 0
Case 7: 'Тёмнобордовый
R = 128 : G = 0 : B = 0
Case 8: 'Тёмно-синий
R = 0 : G = 0 : B = 128
Case 9: 'Оливковый
R = 128 : G = 128 : B = 0
Case 10: 'Фиолетовый
R = 128 : G = 0 : B = 128
Case 11: 'Красный
R = 255 : G = 0 : B = 0
Case 12: 'Серебрянный
R = 192 : G = 192 : B = 192
Case 13: 'серо-злёный
R = 0 : G = 128 : B = 128
Case 14: 'Белый
R = 255 : G = 255 : B = 255
Case 15: 'Желтый
R = 255 : G = 255 : B = 0
End SelectПоделиться142018-04-20 18:28:09
Ну да, причем т.к. используется и так массив, то в принципе ненужно его ещё раз создавать/дублировать, можно его же перечитывать (если задача простая).
Поделиться152018-04-21 09:49:55
А вот непростая, бегущая строка нужна с шагом в пиксель, регистры у меня зигзагом подключения разрешением 32х6 точек. - 192 пикселя.
Наверно проще свою отправку массива сделать, так память можно будет с экономить...а хотя нет, скорость отправки должна быть стабильной.
Поделиться162018-04-21 21:03:46
Там же есть сдвиговые операции типа "RB_SHIFTLEFT", не подходят?
Поделиться172018-04-23 11:18:05
...сдвиговые операции типа "RB_SHIFTLEFT", не подходят?
Нет, если бы перепаять, то подойдут, у меня змейкой расположены, да и если спаять не змейкой, то всё равно длинное слово придётся выводить с подгрузкой, а тут уже надобность в сдвиге отпадает.
Поделиться182018-04-23 11:59:01
Ну, тогда классика (свой массив/область памяти, где ведём обсчет).
Поделиться192018-04-24 12:11:17
Ну, тогда классика (свой массив/область памяти, где ведём обсчет).
Так всё-же есть
- Rb_color светодиод , один , 3 байта цвета
Поделиться202018-04-24 12:25:29
Кстати, меня тут вчера подвесила одна идея, есть же просто чипы для светодиодов с этим же протоколом (с чего всё начиналось), можно попробовать его приспособить для других задач, скажем для передачи и управления другими устройствами, скажем два канала серв и один управление лазером. 
Поделиться212018-04-26 20:42:09
Не, такое ответственное доверять, я тут поглядел в динамической индикации, глюки редко - но бывают.
Поделиться222018-04-27 11:16:31
скажем два канала серв
Им нужна частота 50 Гц, а у этих микросхем она скорее всего другая.
Поделиться232018-04-27 14:32:38
я тут поглядел в динамической индикации, глюки редко - но бывают
Не замечал, может где накосячил с отправкой потока?
Им нужна частота 50 Гц, а у этих микросхем она скорее всего другая.
Скорее всего да, но надо померить у конкретного чипа.
Поделиться242018-04-27 23:27:47
Не замечал, может где накосячил с отправкой потока?...
Китай-сборка, одно сопротивление было не припаяно )))
