Администрация форума не несёт ответственности за достоверность информации и оставляет за собой право редактировать или в особых случаях даже удалять посты без предупреждения. Спасибо за понимание.

Программирование ATMEL в BASCOM.

Информация о пользователе

Привет, Гость! Войдите или зарегистрируйтесь.



WS2812

Сообщений 1 страница 24 из 24

1

Кто работал или работает с WS2811/WS2812?
Интернет особо не помог.

0

2

Глянул. Все вроде бы так же, как и WS2801.
Удерживаем паузу 50 мкс - это будет сигнал сброса. После этого сдвигаем 24 бита в МСХ. Они защелкнутся в первой МСХ.  Если подключены несколько шт, то следующие 24 бита будут для второй МСХ и т.д. до поступления сигнала сброса.

0

3

Там протокол, отличный от SPI.
1 и 0 кодируется разными временными интервалами.
Причём задержки очень маленькие, в пределах нескольких тактов контроллера.
Нужно будет на АСМе писать.
Вот нашёл на АСМе, но как это на Баскомовский АСМ перевести?
http://sourceforge.net/p/abavr/lib/ci/e … 1/WS2811.h

0

4

Прикольная микра/лед. :cool:  Надо прикупить.

0

5

Ещё прикольнее светодиоды со встроенной микрой:
Они бывают 30, 60, 120 штук на метр.

http://bilder2.eazyauction.de/ktelektronic/artikelbilder/5076.jpg
http://propaneandelectrons.com/uploads/normal/1365043483809-WS2812.jpg
http://rgb-123.com/wp-content/uploads/2013/08/WS2811vsWS2812b-1024x541.jpg
https://encrypted-tbn3.gstatic.com/images?q=tbn:ANd9GcQPSJhY8XL4yKLbzhpp98kCJVpUvF2QSwp230x7233KKFZ3d7RT9w

0

6

Да, извиняюсь, сразу и не заметил. Пошерстил инет и мне показалось, что это лишняя головная боль.
Вот здесь можно про нее прочесть. http://bleaklow.com/ Правда статья энтузиазма не добавляет.  o.O
Мне кажется проще использовать WS2801.

0

7

Ага, прикольно.

0

8

Цена ws2812 уже вызывает интерес! Есть у кого на работки? Хочется температурный градусник во всё окно, на Aliexpress они уже по 5-6р. за штуку. :glasses:

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

Для просмотра скрытого текста - войдите или зарегистрируйтесь.

0

9

Ещё не пробовал, но нашел библиотеку - 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

А это вот рассчёт на 100штук для памятки:
http://s5.uploads.ru/t/dtPfZ.jpg

0

10

Ev3658 написал(а):

Ещё не пробовал, но нашел библиотеку

Этот библиотека баскома https://avrhelp.mcselec.com/rb_selectchannel.htm
Она входит в состав дистрибутива.

0

11

Да, штатная либа, давняя тема:



Ну и итог игрщь (уже где-то тут выкладывал):

+1

12

И я на ней делал:

+1

13

Всё, переварил.
Вообщем после инициализации резервируется массив, количество светодиодов * на кол-во цветов. У меня 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

0

14

Ну да, причем т.к. используется и так массив, то в принципе ненужно его ещё раз создавать/дублировать, можно его же перечитывать (если задача простая).

0

15

А вот непростая, бегущая строка нужна с шагом в пиксель, регистры у меня зигзагом подключения разрешением 32х6 точек. - 192 пикселя.
Наверно проще свою отправку массива сделать, так память можно будет с экономить...а хотя нет, скорость отправки должна быть стабильной.

0

16

Там же есть сдвиговые операции типа "RB_SHIFTLEFT", не подходят?

0

17

RDW написал(а):

...сдвиговые операции типа "RB_SHIFTLEFT", не подходят?

Нет, если бы перепаять, то подойдут, у меня змейкой расположены, да и если спаять не змейкой, то всё равно длинное слово придётся выводить с подгрузкой, а тут уже надобность в сдвиге отпадает.

0

18

Ну, тогда классика (свой массив/область памяти, где ведём обсчет).

0

19

RDW написал(а):

Ну, тогда классика (свой массив/область памяти, где ведём обсчет).


Так всё-же есть  :glasses:  - Rb_color светодиод , один , 3 байта цвета

0

20

Кстати, меня тут вчера подвесила одна идея, есть же просто чипы для светодиодов с этим же протоколом (с чего всё начиналось), можно попробовать его приспособить для других задач, скажем для передачи и управления другими устройствами, скажем два канала серв и один управление лазером. :D

0

21

Не, такое ответственное доверять, я тут поглядел в динамической индикации, глюки редко - но бывают.

0

22

RDW написал(а):

скажем два канала серв

Им нужна частота 50 Гц, а у этих микросхем она скорее всего другая.

0

23

Ev3658 написал(а):

я тут поглядел в динамической индикации, глюки редко - но бывают

Не замечал, может где накосячил с отправкой потока?

Пётр написал(а):

Им нужна частота 50 Гц, а у этих микросхем она скорее всего другая.

Скорее всего да, но надо померить у конкретного чипа.

0

24

RDW написал(а):

Не замечал, может где накосячил с отправкой потока?...

Китай-сборка, одно сопротивление было не припаяно )))

0