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

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

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

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



WS2812B

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

1

кто-нибудь работал с этими адресными светодиодами? в теории, есть библиотека Rainbow, но она только для 2.0.7.9
а без нее только через SPI? на портале световых эффектов есть пример с адресуемой лентой, но там другой чип

0

2

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

кто-нибудь работал с этими адресными светодиодами? в теории, есть библиотека Rainbow, но она только для 2.0.7.9а без нее только через SPI? на портале световых эффектов есть пример с адресуемой лентой, но там другой чип

А вот это не поможет http://arduino.on.kg/podklyuchenie-adre … -k-Arduino ?
Тоже поглядываю на эту ленту, но руки пока не дошли...

0

3

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

есть библиотека Rainbow

А есть и другой вариант.

0

4

Nord
там ардуина, а я в их операторах ни в зуп ногой. ардуиньих примеров-то куча...
max
кроме различных мануалов на немецко-фашистком там нет ничего. в смысле - самой либы нет

0

5

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

Nordтам ардуина, а я в их операторах ни в зуп ногой. ардуиньих примеров-то куча...

Я тоже в ардуинах "ноль", но там даны временнЫе характеристики пакета, за это можно зацепиться.

0

6

Nord
да они и в даташите есть, только как их соблюсти такие?

0

7

Давно похожая тема возникала: Эффекты на WS2812

0

8

RDW
гм. ну раз исходники не выкладываете - то хоть поделитесь как управляли пикселем? а то красивых роликов понавыкладывали а нам страдать :)
мне для начала просто наловчиться код в пиксель передавать, без извратов и сложносочиненных эффектов

0

9

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

Nordда они и в даташите есть, только как их соблюсти такие?

Первое, что приходит на ум - таймеры, но, думаю, что это не лучший вариант...

Второе - использовать "эмуляторы" на Ассемблере, вызывая их подпрограммами.
Для "0", "1" и стоп-бита свои...
Его NOP более "стабилен, чем Wait и Delay  у Баскома.

0

10

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

в смысле - самой либы нет

Rainbow1.21.lib

0

11

max
сенкс!

0

12

при попытке скомпилировать код из даташита Баском ругается именно на строки в библиотеке. что-то типа

Error : 222   Line :  -112   Illegal character [expected ), got 'e' [((250 * 1e-9) /(1 / _xtal) - 2)]]  , in File : C:\PROGRAM FILES (X86)\MCS ELECTRONICS\BASCOM-AVR\LIB\RAINBOW1.21.LIB
Error : 222   Line :  -112   Illegal character [expected ), got 'e' [((1 * 1e-6) /(1 / _xtal) - 8)]]  , in File : C:\PROGRAM FILES (X86)\MCS ELECTRONICS\BASCOM-AVR\LIB\RAINBOW1.21.LIB
Error : 222   Line :  -112   Illegal character [expected ), got 'e' [(ShortExpand *(1 / _Xtal)) /(1 * 1e-6)]]  , in File : C:\PROGRAM FILES (X86)\MCS ELECTRONICS\BASCOM-AVR\LIB\RAINBOW1.21.LIB
Error : 222   Line :  -112   Illegal character [expected ), got 'e' [(LongExpand *(1 / _Xtal)) /(1 * 1e-6)]]  , in File : C:\PROGRAM FILES (X86)\MCS ELECTRONICS\BASCOM-AVR\LIB\RAINBOW1.21.LIB

0

13

В своё время, когда начал эту тему ковырять, то народ в инете делал через SPI. Я в итоге конечно так задрачиваться не стал и сделал всё на выше описанной "RAINBOW". По этому ничего и не выкладывал, в хелпе и так понятно.

0

14

RDW
но у Вас 2.0.7.9 или на старой версии работает? если на старой - то что за ошибки оно мне пишет?
ну и хелп на немецком это... мда.

0

15

Да, у меня что-то одна из предпоследних версий (2.0.7.9, лицуха).

Отредактировано RDW (2017-08-01 11:51:30)

0

16

RDW
ну в этой версии вообще библиотека в комплекте. и, мне так кажется, попроще и попонятней. ладно. буду жадничать и ждать 7.9 на торрентах страны

0

17

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

Illegal character [expected ), got 'e' [((250 * 1e-9) /(1 / _xtal) - 2)]]

Он вам говорит, что найден "нелегальный" символ "е" в следующем выражении. Скорее всего он не понимает 1е-9 и 1е-6.
Насколько я знаю BASCOM не поддерживает такое описание выражений. Нужно каждое действие сделать отдельно и потом всё соединить.
Например:
A=1/_xtal
A=A-2
A=0.000000250/A

0

18

sva-don
гм. баском ругается на строку не программы, а библиотеки. таких выражений там не заметил, да и че б Баскому ругаться на либу, для него же и написанную? в библиотеке он подсвечивает строку с оператором End If, хотя это ничего еще не значит

0

19

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

скомпилировать код из даташита Баском ругается

Ошибок нет:

Код:
 '-------------------------------------------------------------------------------
'                      rainbow_ws2812_Knightrider.bas
'                      based on sample from Galahat
'-------------------------------------------------------------------------------
$Regfile = "m88pdef.dat"
$Crystal = 8000000
$hwstack = 40
$swstack = 16
$framesize = 32

$lib "Rainbow1.21.lib"
 $external WS2812b

 Declare Sub Select_Rainbow(byval Channel As Byte)
 Declare Sub SetColor(byval LedNr As Word , Color() as Byte)
 Declare Sub Send()


  '#Rainbow0
  Const Rainbow0_Len = 8
  Const Rainbow0_Port = PORTB
  Const Rainbow0_Pin = PB0


  Dim Farbe(3) as Byte

  ROT alias Farbe (_Base)
  GRN alias Farbe (_Base +1)
  BLU alias Farbe (_Base +2)


  Call Select_Rainbow(0)

  ROT = 200 : GRN = 200 : BLU = 0

  Call SetColor(0, Farbe())

  Call Send()

 End

0

20

max

Error : 222   Line :  -86    Illegal character [expected ), got 'e' [((250 * 1e-9) /(1 / _xtal) - 2)]]  , in File : C:\PROGRAM FILES (X86)\MCS ELECTRONICS\BASCOM-AVR\LIB\RAINBOW1.21.LIB
Error : 222   Line :  -86    Illegal character [expected ), got 'e' [((1 * 1e-6) /(1 / _xtal) - 8)]]  , in File : C:\PROGRAM FILES (X86)\MCS ELECTRONICS\BASCOM-AVR\LIB\RAINBOW1.21.LIB
Error : 222   Line :  -86    Illegal character [expected ), got 'e' [(ShortExpand *(1 / _Xtal)) /(1 * 1e-6)]]  , in File : C:\PROGRAM FILES (X86)\MCS ELECTRONICS\BASCOM-AVR\LIB\RAINBOW1.21.LIB
Error : 222   Line :  -86    Illegal character [expected ), got 'e' [(LongExpand *(1 / _Xtal)) /(1 * 1e-6)]]  , in File : C:\PROGRAM FILES (X86)\MCS ELECTRONICS\BASCOM-AVR\LIB\RAINBOW1.21.LIB

:'(

0

21

как-то так
http://s0.uploads.ru/t/SWdhj.jpg

Отредактировано IDok (2017-08-01 20:50:01)

0

22

возможно - это происки корявых креков)

0

23

RDW
запросто. но 90 евро за хобби я платить не готов :(

0

24

Решение на задержках - http://kaktusa.pl/ws2812b-led-rgb/

0

25

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

sva-don
гм. баском ругается на строку не программы, а библиотеки. таких выражений там не заметил, да и че б Баскому ругаться на либу, для него же и написанную? в библиотеке он подсвечивает строку с оператором End If, хотя это ничего еще не значит


Выражения такие в библиотеке есть! Почти в конце после картинки DRIVER
Заменил выражения в скобках на 0.00000025, 0,000001 и тд. Главное с точкой! Все скомпилировалось (версия 2,0,7,8)

0

26

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

Все скомпилировалось

Ну вот, видите, как всё просто. :flag:

0

27

Работает?)

0

28

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

Работает?)

Вроде да. Пытаюсь разобраться с командами.
Пока накатал такую ерунду - 15 лэдов последовательно зажигаются прописанным цветами и сдвигаются к началу.
Как сделать переливание пока не допер(( После DATA переменную не воткнешь(( а в либе, как понимаю, для функции SetTableColor сразу ссылка на "Rainbow_colors:"
И кстати, что дают строки без понятия, но без них не работает, какие бы значения RGB не ставил!
Call Select_rainbow(0)                                   
R = 255 : G = 255 : B = 255                               
Call Send()

Код:
  Const Rainbow0_len = 15
  Const Rainbow0_port = Portd
  Const Rainbow0_pin = Pd1

 Dim Color(3) as Byte
 R Alias Color(_base) : G Alias Color(_base + 1) : B Alias Color(_base + 2)
 dim x as integer
 dim y as integer
 dim z as byte

 Call Select_rainbow(0)                                     'select Rainbow
 R = 0 : G = 255 : B = 0                                'define a color
 Call Send()
 x=1
 y=0
 z=0
 wait x

Do
for z=0 to 6
IF Y>14 THEN Y=0
 Call Settablecolor(Y , Z)
 Call Send()
 WAITMS 50
 Y=Y+1
next z
 loop

 End

 Rainbow_colors:
      '       R  ,  G  ,  B                    index

      Data 255 , 0 , 0                                      'Red         0
      Data 0 , 255 , 0                                      'Green       1
      Data 0 , 0 , 255                                      'Blue        2
      Data 255 , 160 , 0                                    'Orange      3
      Data 255 , 255 , 00                                   'Yellow      4
      Data 190 , 0 , 255                                    'HotPink     5
      Data 255 , 255 , 255                                  'HotPink     6

0

29

В настоящем Rainbow философия такая, внутрях создается массив, который равен количество WS-ок. Дальше этим массивом управляешь как вздумается (при помощи Rainbow команд). Получается как буфер. Дальше одной командой это всё выводится.
Здесь если посмотреть похожая картина, надо только привыкать к особенностям либы.

0

30

Alexaz
таки да - скомпилировалось! вери биг спасибо  :cool:

0