Home
JAQForum Ver 24.01
Log In or Join  
Active Topics
Local Time 18:00 19 Jun 2025 Privacy Policy
Jump to

Notice. New forum software under development. It's going to miss a few functions and look a bit ugly for a while, but I'm working on it full time now as the old forum was too unstable. Couple days, all good. If you notice any issues, please contact me.

Forum Index : Microcontroller and PC projects : WS2812B LED with picoMite questions

     Page 1 of 2    
Author Message
Amnesie
Guru

Joined: 30/06/2020
Location: Germany
Posts: 558
Posted: 02:55pm 27 May 2025
Copy link to clipboard 
Print this post

Hello,

I successfully connected a matrix of 4x4= 16 LEDs from type "WS2812B" to the picoMiteVGA (latest beta version).

I've got two questions:

1st question:
While playing with it, I've noticed that it seems to be not possible to only drive one
single LED in that matrix of 16 LEDs with the example of the manual:



DIM b%(4)=(RGB(red), Rgb(green), RGB(blue), RGB(Yellow), rgb(cyan))
SETPIN GP5, DOUT
WS2812 B, GP0, 5, b%()


To drive one LED after another I tried this:


DIM b%(4)=(RGB(red), Rgb(green), RGB(blue), RGB(Yellow), rgb(cyan))
SETPIN GP5, DOUT
WS2812 B, GP0, 5, b%()

For led= 1 To 5
 WS2812 B, GP0, led, b%()
Next led


And got the error: "Error: Dimensions" Solution is to start with led=2, but WHY? I want to light one led after another, starting by the very first. Hm..

Any ideas?

2nd question:
In the manual I find nothing about controlling the brightness, so I guess that I need to control it with an additional transistor through PWM "manually"? I always thought that the WS2812 chip has some brightness adjusting capabilities. But this is the very first time I am using this chip...  

Greetings
Daniel
Edited 2025-05-28 01:14 by Amnesie
 
matherp
Guru

Joined: 11/12/2012
Location: United Kingdom
Posts: 10169
Posted: 03:24pm 27 May 2025
Copy link to clipboard 
Print this post

You need to send enough values for all the LED in the string each time. Otherwise just the first LED will light. To light them in sequence just adjust the contents of the array as required

  Quote  In the manual I find nothing about controlling the brightness,

Just set the RGB level e.g. RGB(50,0,0) would be a dimmer red
Edited 2025-05-28 01:38 by matherp
 
Amnesie
Guru

Joined: 30/06/2020
Location: Germany
Posts: 558
Posted: 04:00pm 27 May 2025
Copy link to clipboard 
Print this post

  matherp said  You need to send enough values for all the LED in the string each time. Otherwise just the first LED will light. To light them in sequence just adjust the contents of the array as required


Even by filling the entire array for all 16 leds, it is not possible to start my FOR LOOP with the led value of 1, always "Error: Dimensions". I always have to enter at least 2 as a value.

My code is:


DIM b%(15)=(RGB(red), Rgb(green), RGB(blue), RGB(Yellow),
           RGB(red), Rgb(green), RGB(blue), RGB(Yellow),
           RGB(red), Rgb(green), RGB(blue), RGB(Yellow),
           RGB(red), Rgb(green), RGB(blue), RGB(Yellow))

SETPIN GP0, DOUT


For led= 1 To 16
  WS2812 B, GP0, led, b%()
Next led


I've played with:

led= 0 To 15 .. Then the Error arises that only 1...256 is allowed... Ok..

led= 1 To 15 doesn't work either.

led= 2 To 15 will work.. But skips the first LED... I am confused.


Greetings
Daniel
Edited 2025-05-28 02:06 by Amnesie
 
matherp
Guru

Joined: 11/12/2012
Location: United Kingdom
Posts: 10169
Posted: 04:09pm 27 May 2025
Copy link to clipboard 
Print this post

You can't do it like that. Send the entire array each time and change its contents between each transfer.


DIM b%(4)=(RGB(red), Rgb(green), RGB(blue), RGB(Yellow), rgb(cyan))
dim a%(4)
SETPIN GP5, DOUT


For led= 1 To 5
a%(led-1)=b%(led-1)
WS2812 B, GP0, 5, a%()
pause 1000
Next led
 
Amnesie
Guru

Joined: 30/06/2020
Location: Germany
Posts: 558
Posted: 07:04pm 27 May 2025
Copy link to clipboard 
Print this post

Peter,

thank you a lot. I had to stare for 5 minutes at your code to really understand what is happening, never could have worked out this by myself! Thanks, it works now. It is one thing to read the manual, another is to really interpret and understand it without
some examples.

Greetings
Daniel
 
Amnesie
Guru

Joined: 30/06/2020
Location: Germany
Posts: 558
Posted: 10:20pm 27 May 2025
Copy link to clipboard 
Print this post

Hi all,

I played around and came up with some example code.. just to sum up some ideas and for later reference, if anyone also should run into this questions I had.


'IMPORTANT: "OPTION CONTINUATION LINES ON" must be set!
'
'This example shows how to illuminate each LED from a 4x4 LED matrix after another
'This isn't trivial, since the "16" in "WS2812 B, GP0, 16, a%()" can't be changed
'The array values itself must be changed instead!
'
Dim b%(15)=(RGB(blue),RGB(red),RGB(green),RGB(blue),RGB(yellow),RGB(cyan),RGB(red) _
,RGB(blue),RGB(red),RGB(green),RGB(blue),RGB(yellow),RGB(cyan),RGB(red),RGB(yellow) _
,RGB(blue))
Dim a%(15)
Dim c%(15)=(0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0)
Dim integer red=0, green=0, blue=0
SetPin GP0, DOUT

Do

'Illuminate one LED after another
 For led=1 To 16
   a%(led-1)=b%(led-1)
   WS2812 B, GP0, 16, a%()
   Pause 100
 Next led

'This next example shows how to clear the LEDs one after another, notice how to deal
'with the arrays!
 Pause 1000
 For led=1 To 16
   a%(led-1)=c%(led-1)
   WS2812 B, GP0, 16, a%()
   Pause 50
 Next led
 Pause 1000

'This next example shows how to change the brightness of the first LED in red color
 For red=0 To 255
   a%(0)=RGB(red,0,0)
   WS2812 B, GP0, 16, a%()
   Pause 10
 Next red
 Pause 1000

'This next example shows how to change the brightness of the second LED in green color
 For green=0 To 255
   a%(1)=RGB(0,green,0)
   WS2812 B, GP0, 16, a%()
   Pause 10
 Next green
 Pause 1000

'This next example shows how to change the brightness of all LEDs in blue color
'(fade in)
 For blue=0 To 255
   a%(0)=RGB(0,0,blue)
   a%(1)=RGB(0,0,blue)
   a%(2)=RGB(0,0,blue)
   a%(3)=RGB(0,0,blue)
   a%(4)=RGB(0,0,blue)
   a%(5)=RGB(0,0,blue)
   a%(6)=RGB(0,0,blue)
   a%(7)=RGB(0,0,blue)
   a%(8)=RGB(0,0,blue)
   a%(9)=RGB(0,0,blue)
   a%(10)=RGB(0,0,blue)
   a%(11)=RGB(0,0,blue)
   a%(12)=RGB(0,0,blue)
   a%(13)=RGB(0,0,blue)
   a%(14)=RGB(0,0,blue)
   a%(15)=RGB(0,0,blue)
   WS2812 B, GP0, 16, a%()
   Pause 10
 Next blue

'This next example shows how to change the brightness of all LEDs in blue color
'(fade out)
 For blue=255 To 0 Step -1
   a%(0)=RGB(0,0,blue)
   a%(1)=RGB(0,0,blue)
   a%(2)=RGB(0,0,blue)
   a%(3)=RGB(0,0,blue)
   a%(4)=RGB(0,0,blue)
   a%(5)=RGB(0,0,blue)
   a%(6)=RGB(0,0,blue)
   a%(7)=RGB(0,0,blue)
   a%(8)=RGB(0,0,blue)
   a%(9)=RGB(0,0,blue)
   a%(10)=RGB(0,0,blue)
   a%(11)=RGB(0,0,blue)
   a%(12)=RGB(0,0,blue)
   a%(13)=RGB(0,0,blue)
   a%(14)=RGB(0,0,blue)
   a%(15)=RGB(0,0,blue)
   WS2812 B, GP0, 16, a%()
   Pause 10
 Next blue
 Pause 1000

Loop


Greetings
Daniel
Edited 2025-05-28 08:23 by Amnesie
 
phil99

Guru

Joined: 11/02/2018
Location: Australia
Posts: 2558
Posted: 10:55pm 27 May 2025
Copy link to clipboard 
Print this post

Saving a little typing.

skip c%()
'This next example shows how to clear the LEDs one after another
...
a%(led-1)=0

Using MATH SET
'This next example shows how to change the brightness of all LEDs in blue color
'(fade out)
For blue=255 To 0 Step -1
  MATH SET RGB(0,0,blue), a%()
  WS2812 B, GP0, 16, a%()
  Pause 10
Next blue
Pause 1000

Loop


Edit.
shorter still
  MATH SET 255, a%() 'green = 255<<8, red = 255<<16

for 50%
  MATH SET 127, a%() 'green = 127<<8, red = 127<<16
Edited 2025-05-28 10:13 by phil99
 
Bill.b

Senior Member

Joined: 25/06/2011
Location: Australia
Posts: 235
Posted: 01:34am 28 May 2025
Copy link to clipboard 
Print this post

This is a scrolling message using 4 8 x 8 WS2812B RGB displays

The full message is loaded into an array then transferred to the display, then the array ins indexed 8 bytes then displayed again.

The brightness of the LED is determined by the number in the array - 0 - Hex FF
I find that Hex30 is bright enough for most applications. By combining differed values in the RED, Green Blue sections you can generate any colour you require - &h301000  = orange.

hope this may be some help.


Option autorun on
OPTION DEFAULT NONE
OPTION EXPLICIT

DIM integer i, j, count,loop1, loop2, loop3, count2

diM integer LEDcolour1(660)
dim integer tempbuff(24)

For i = 0 To 632
 Read  LEDcolour1(i)
Next i

 senddata
 do
 'copy first row of leds into tempory buffer
 for loop3 =  0 to 8
   tempbuff(loop3) = LEDcolour1(loop3)
 next loop3
 for loop1 = 8 to 632 step 8
   for loop2 = loop1 to loop1 + 8
     LEDcolour1(loop2-8) = LEDcolour1(loop2)
   next loop2
   PAUSE 2
 next loop1
 'load temproy buffer into last row of leds
 for loop3 =  0 to 8
   LEDcolour1(loop3 + 632)= tempbuff(loop3)
   
 next loop3
senddata
loop

sub senddata
SetPin GP5, DOUT
Bitbang WS2812 B, GP5, 256, LEDcolour1()
end sub
'


' *********************************************************************

' -------------LED Number Side row ------------------------------------------
'       1       2        3        4        5       6         7        8
' 1   R  G  B| R  G  B |R  G  B| R  G  B| R  G  B| R  G  B| R  G  B| R  G  B|
Data &h301000,&h000000,&h300000,&h300000,&h300000,&h300000,&h300000,&h000000
Data &h301000,&h000000,&h000000,&h000000,&h000000,&h300000,&h000000,&h000000
Data &h301000,&h000000,&h000000,&h300000,&h300000,&h000000,&h000000,&h000000
Data &h301000,&h000000,&h000000,&h000000,&h000000,&h300000,&h000000,&h000000  'M
Data &h301000,&h000000,&h300000,&h300000,&h300000,&h300000,&h300000,&h000000
Data &h301000,&h000000,&h000000,&h000000,&h000000,&h000000,&h000000,&h000000

Data &h301000,&h000000,&h300000,&h300000,&h300000,&h300000,&h300000,&h000000
Data &h301000,&h000000,&h000000,&h000000,&h300000,&h000000,&h300000,&h000000  
Data &h301000,&h000000,&h300000,&h300000,&h000000,&h300000,&h000000,&h000000 'R
Data &h301000,&h000000,&h000000,&h000000,&h000000,&h000000,&h000000,&h000000

Data &h301000,&h000000,&h300000,&h000000,&h000000,&h300000,&h000000,&h000000
Data &h301000,&h000000,&h300000,&h000000,&h300000,&h000000,&h300000,&h000000
Data &h301000,&h000000,&h000000,&h300000,&h000000,&h000000,&h300000,&h000000 'S
Data &h301000,&h000000,&h000000,&h000000,&h000000,&h000000,&h000000,&h000000
Data &h301000,&h000000,&h000000,&h000000,&h000000,&h000000,&h000000,&h000000

Data &h301000,&h000000,&h003000,&h003000,&h003000,&h003000,&h003000,&h000000
Data &h301000,&h000000,&h000000,&h000000,&h003000,&h000000,&h003000,&h000000 'P
Data &h301000,&h000000,&h000000,&h000000,&h000000,&h003000,&h000000,&h000000
Data &h301000,&h000000,&h000000,&h000000,&h000000,&h000000,&h000000,&h000000

' 1   R  G  B| R  G  B |R  G  B| R  G  B| R  G  B| R  G  B| R  G  B| R  G  B|
Data &h301000,&h000000,&h000000,&h003000,&h003000,&h003000,&h000000,&h000000
Data &h301000,&h000000,&h003000,&h000000,&h000000,&h000000,&h003000,&h000000 'O
Data &h301000,&h000000,&h000000,&h003000,&h003000,&h003000,&h000000,&h000000
Data &h301000,&h000000,&h000000,&h000000,&h000000,&h000000,&h000000,&h000000

Data &h301000,&h000000,&h000000,&h000000,&h000000,&h000000,&h003000,&h000000
Data &h301000,&h000000,&h003000,&h003000,&h003000,&h003000,&h003000,&h000000 'T
Data &h301000,&h000000,&h000000,&h000000,&h000000,&h000000,&h003000,&h000000
Data &h301000,&h000000,&h000000,&h000000,&h000000,&h000000,&h000000,&h000000
' 1   R  G  B| R  G  B |R  G  B| R  G  B| R  G  B| R  G  B| R  G  B| R  G  B|
Data &h301000,&h000000,&h000000,&h000000,&h000000,&h000000,&h003000,&h000000
Data &h301000,&h000000,&h003000,&h003000,&h003000,&h003000,&h003000,&h000000 'T
Data &h301000,&h000000,&h000000,&h000000,&h000000,&h000000,&h003000,&h000000
Data &h301000,&h000000,&h000000,&h000000,&h000000,&h000000,&h000000,&h000000

Data &h301000,&h000000,&h003000,&h000000,&h000000,&h003000,&h000000,&h000000
Data &h301000,&h000000,&h003000,&h000000,&h003000,&h000000,&h003000,&h000000 'S
Data &h301000,&h000000,&h000000,&h003000,&h000000,&h000000,&h003000,&h000000
Data &h301000,&h000000,&h000000,&h000000,&h000000,&h000000,&h000030,&h000000

' 1   R  G  B| R  G  B |R  G  B| R  G  B| R  G  B| R  G  B| R  G  B| R  G  B| .'
Data &h301000,&h000000,&h000000,&h000000,&h000000,&h000000,&h000000,&h000030
Data &h301000,&h000000,&h000000,&h000000,&h000000,&h000000,&h000000,&h000000
Data &h301000,&h000000,&h000000,&h000000,&h000000,&h000000,&h303000,&h000000
Data &h301000,&h000000,&h303000,&h303000,&h303000,&h303000,&h303000,&h000000 'T
Data &h301000,&h000000,&h000000,&h000000,&h000000,&h000000,&h303000,&h000000
Data &h301000,&h000000,&h000000,&h000000,&h000000,&h000000,&h000000,&h000000

Data &h301000,&h000000,&h303000,&h303000,&h303000,&h303000,&h303000,&h000000
Data &h301000,&h000000,&h303000,&h000000,&h303000,&h000000,&h303000,&h000000 'E
Data &h301000,&h000000,&h303000,&h000000,&h000000,&h000000,&h303000,&h000000
Data &h301000,&h000000,&h000000,&h000000,&h000000,&h000000,&h000000,&h000000
' 1   R  G  B| R  G  B |R  G  B| R  G  B| R  G  B| R  G  B| R  G  B| R  G  B|
Data &h301000,&h000000,&h303000,&h303000,&h303000,&h303000,&h000000,&h000000
Data &h301000,&h000000,&h000000,&h000000,&h303000,&h000000,&h303000,&h000000 'A
Data &h301000,&h000000,&h303000,&h303000,&h303000,&h303000,&h000000,&h000000
Data &h301000,&h000000,&h000000,&h000000,&h000000,&h000000,&h000000,&h000000

Data &h301000,&h000000,&h000000,&h000030,&h000030,&h000030,&h000000,&h000000
Data &h301000,&h000000,&h000030,&h000000,&h000000,&h000000,&h000030,&h000000 'C
Data &h301000,&h000000,&h000030,&h000000,&h000000,&h000000,&h000030,&h000000
Data &h301000,&h000000,&h000000,&h000000,&h000000,&h000000,&h000000,&h000000

' 1   R  G  B| R  G  B |R  G  B| R  G  B| R  G  B| R  G  B| R  G  B| R  G  B|
Data &h301000,&h000000,&h000030,&h000030,&h000030,&h000030,&h000030,&h000000
Data &h301000,&h000000,&h000030,&h000000,&h000000,&h000000,&h000000,&h000000 'U
Data &h301000,&h000000,&h000030,&h000030,&h000030,&h000030,&h000030,&h000000
Data &h301000,&h000000,&h000000,&h000000,&h000000,&h000000,&h000000,&h000000

Data &h301000,&h000000,&h000030,&h000030,&h000030,&h000030,&h000030,&h000000
Data &h301000,&h000000,&h000000,&h000000,&h000030,&h000000,&h000030,&h000000 'P
Data &h301000,&h000000,&h000000,&h000000,&h000000,&h000030,&h000000,&h000000
Data &h301000,&h000000,&h000000,&h000000,&h000000,&h000000,&h000000,&h000000

Data &h301000,&h000000,&h000030,&h000000,&h000000,&h000030,&h000000,&h000000
Data &h301000,&h000000,&h000030,&h000000,&h000030,&h000000,&h000030,&h000000 'S
Data &h301000,&h000000,&h000000,&h000030,&h000000,&h000000,&h000030,&h000000
Data &h301000,&h000000,&h000000,&h000000,&h000000,&h000000,&h000000,&h000000

Data &h000000,&h000000,&h000000,&h000000,&h000000,&h000000,&h000000,&h000000
Data &h000000,&h000000,&h000000,&h000000,&h000000,&h000000,&h000000,&h000000
Data &h000000,&h003000,&h000000,&h000000,&h000000,&h000000,&h303030,&h000000
Data &h003000,&h000000,&h300030,&h300030,&h300030,&h303030,&h000000,&h303030
Data &h003000,&h300030,&h300030,&h300030,&h300030,&h000000,&h000000,&h000000
Data &h003000,&h300030,&h300030,&h300030,&h300030,&h000000,&h000000,&h000000
Data &h003000,&h300030,&h300030,&h300030,&h300030,&h000000,&h303030,&h000000
Data &h003000,&h000000,&h300030,&h300030,&h300030,&h303030,&h000000,&h303030
Data &h000000,&h003000,&h000030,&h000000,&h000030,&h000000,&h000000,&h000000
Data &h000000,&h000000,&h000000,&h000030,&h000000,&h000000,&h000000,&h000000
Data &h000000,&h000000,&h000000,&h000000,&h000000,&h000000,&h000000,&h000000
Data &h000000,&h000000,&h000000,&h000000,&h000000,&h000000,&h000000,&h000000
Data &h301000,&h000000,&h000000,&h000000,&h000000,&h000000,&h000000,&h000000
Data &h301000,&h000000,&h000000,&h000000,&h000000,&h000000,&h000000,&h000000
Data &h301000,&h000000,&h000000,&h000000,&h000000,&h000000,&h000000,&h000000
Data &h301000,&h000000,&h000000,&h000000,&h000000,&h000000,&h000000,&h000000
Data &h301000,&h000000,&h000000,&h000000,&h000000,&h000000,&h000000,&h000000
Data &h301000,&h000000,&h000000,&h000000,&h000000,&h000000,&h000000,&h000000


Bill
Edited 2025-05-28 11:42 by Bill.b
In the interests of the environment, this post has been constructed entirely from recycled electrons.
 
Volhout
Guru

Joined: 05/03/2018
Location: Netherlands
Posts: 4988
Posted: 06:08am 28 May 2025
Copy link to clipboard 
Print this post

Hi Bill,

Will this be shown in your next Christmas Garden Light show ? I loved your last video. Man .. have you been busy building all these items.

Volhout
.
PicomiteVGA PETSCII ROBOTS
 
Bill.b

Senior Member

Joined: 25/06/2011
Location: Australia
Posts: 235
Posted: 07:24am 28 May 2025
Copy link to clipboard 
Print this post

Hi Volhout

This program was used for the cupride last Christmas




Bill
In the interests of the environment, this post has been constructed entirely from recycled electrons.
 
Amnesie
Guru

Joined: 30/06/2020
Location: Germany
Posts: 558
Posted: 12:38pm 28 May 2025
Copy link to clipboard 
Print this post

Hello,

I tested your examples, really impressive what MMBASIC is capable off!

@ phil99


shorter still
 MATH SET 255, a%() 'green = 255<<8, red = 255<<16

for 50%
 MATH SET 127, a%() 'green = 127<<8, red = 127<<16


Even though you commented it for the other colors, I don't understand how this works... Is this some kind of bit-operation?

Greetings
Daniel
 
phil99

Guru

Joined: 11/02/2018
Location: Australia
Posts: 2558
Posted: 01:24pm 28 May 2025
Copy link to clipboard 
Print this post

RGB(red,green,blue) can be regarded as a Function that returns a 24 bit number. Bill.B uses Hex numbers which make it easier to see.

If you enter Print RGB(0,0,255), "&H";Hex$(RGB(0,0,255),6) you can see how it works.
The 255<<8 and 255<<16 shift the bits of the number 255 to the left by 8 and 16 places producing the same 24 bit number as green and red.
> Print RGB(0,0,255), "&H";Hex$(RGB(0,0,255),6)
255    &H0000FF
> Print RGB(0,255,0), "&H";Hex$(255<<8,6), "&H";Hex$(RGB(0,255,0),6)
65280  &H00FF00        &H00FF00
> Print RGB(255,0,0), "&H";Hex$(255<<16,6), "&H";Hex$(RGB(255,0,0),6)
16711680       &HFF0000        &HFF0000
>
 
Amnesie
Guru

Joined: 30/06/2020
Location: Germany
Posts: 558
Posted: 05:23pm 28 May 2025
Copy link to clipboard 
Print this post

phil99,

This is a REALLY good explanation, thank you very much - now I understand what happens! Pretty clever to do it this way!

Greetings
Daniel
 
AlbertR
Newbie

Joined: 29/05/2025
Location: Germany
Posts: 12
Posted: 02:14pm 30 May 2025
Copy link to clipboard 
Print this post

Hello,
I was looking for an interpreter on microcontrollers until I discover PicoMite. I am very excited about the skills. Geoff and Peter, many thanks for that great job.
One of my first programs was a scrolling message using only 2 (8x8)WS2812B RGB displays. The pattern is not fix in the array, it is generated on a local font. So you can use Time$, Date$ and other volatile strings. The colors are limited by the colortable to fit the corresponded line MTxt/MCol.
Hope it could be usefull.


Option EXPLICIT      '-> allways declare variables
Option DEFAULT NONE  '-> allways declare typ

'vars -----------------------------------------------------
Dim Integer MyFo(94,4), CTab(9)     'My Font and ColorTable see InitLedChars
Dim Integer Leds(127)               'Array for 2x(8x8) leds
Dim Integer cIdx(4), fIdx(4)        'for max 4 char at a moment 4*5=15 < 16
Dim Integer i, j, k
Dim String  MTxt,MCol               'max 255 chars

'sys inits ------------------------------------------------
SetPin GP0, DOUT   'outputpin for the ws2812-LEDs
'RTC GetTime       'also 'OPTION AUTO ENABLE'
'my inits -------------------------------------------------
InitLedChars     'read and set MyFont  und colortable

'mainloop
Do
        '  12:59:00 15-02-2025 in the Loop because of Date und Time
 MTxt = "  "+Time$+" "+Date$+" <<<<Hallo World>>>>  "
 MCol = "2233933933088188188880171722222233334545300"

 For j = 1 To Len(MTxt)-3 Step 1 'over all chars of MTxt
   For k = 0 To 3
     cIdx(k)=      Asc(Mid$(MTxt,j+k,1))-32'first 32 are missing in FontData
     fIdx(k)= CTab(Val(Mid$(MCol,j+k,1)))
   Next k
   For i = 0 To -4 Step -1       'from 0 offset to (5pix wide) out
     For k = 0 To 3
       CharToLed(cIdx(k),i+(5*k),fIdx(k),k) 'call sub( Idx, Offs, color, PrCl)
     Next k
     Device WS2812 B, GP0, 128, Leds()'sys-function
     Pause 41
   Next i
 Next j
Loop 'end main

'subs and functions ---------------------------------------
Sub CharToLed(Idx As Integer,offs As Integer,RgbV As Integer,PrCl As integer)
Local Integer i, j

If PrCl = 0 Then    'set all leds to black before first column is copied
 Math set 0, Leds()
End If

For i = 0 To 4              'over the 5  columns of the char
 j = (i+offs)*8             'column char(i) to column led-matrix(j)
 If (j>=0) And (j<121) Then 'if it fits in the 8x7 Matrix
   If MyFo(Idx,i)And  1 Then Leds(j+7) = RgbV 'Bit 1
   If MyFo(Idx,i)And  2 Then Leds(j+6) = RgbV 'Bit 2
   If MyFo(Idx,i)And  4 Then Leds(j+5) = RgbV 'Bit 3
   If MyFo(Idx,i)And  8 Then Leds(j+4) = RgbV 'Bit 4
   If MyFo(Idx,i)And 16 Then Leds(j+3) = RgbV 'Bit 5
   If MyFo(Idx,i)And 32 Then Leds(j+2) = RgbV 'Bit 6
   If MyFo(Idx,i)And 64 Then Leds(j+1) = RgbV 'Bit 7
 End If
Next i
End Sub 'SetChrToLed

Sub InitLedChars
Local Integer i,j

CTab(0)=RGB(0,0,0)
CTab(1)=RGB(32,0,0)
CTab(2)=RGB(0,16,0)
CTab(3)=RGB(0,0,16)
CTab(4)=RGB(8,0,8)
CTab(5)=RGB(8,8,0)
CTab(6)=RGB(0,8,8)
CTab(7)=RGB(16,6,0)
CTab(8)=RGB(9,1,6)
CTab(9)=RGB(4,6,6)

For i = 0 To 94
  For j = 0 To 4
    Read MyFo(i,j)
  Next j
Next i
Data &H00, &H00, &H00, &H00, &H00 ' 0 space
Data &H00, &H00, &H4F, &H00, &H00 ' 1 !
Data &H00, &H07, &H00, &H07, &H00 ' 2 "
Data &H14, &H7F, &H14, &H7F, &H14 ' 3 #
Data &H24, &H2A, &H7F, &H2A, &H12 ' 4 $
Data &H23, &H13, &H08, &H64, &H62 ' 5 %
Data &H36, &H49, &H55, &H22, &H50 ' 6 &
Data &H00, &H05, &H03, &H00, &H00 ' 7 '
Data &H00, &H1C, &H22, &H41, &H00 ' 8 (
Data &H00, &H41, &H22, &H1C, &H00 ' 9 )
Data &H14, &H08, &H3E, &H08, &H14 '10 *
Data &H08, &H08, &H3E, &H08, &H08 '11 +
Data &H00, &H50, &H30, &H00, &H00 '12 ,
Data &H00, &H08, &H08, &H08, &H00 '13 -
Data &H00, &H60, &H60, &H00, &H00 '14 .
Data &H20, &H10, &H08, &H04, &H02 '15 /
Data &H3E, &H51, &H49, &H45, &H3E '16 0
Data &H00, &H42, &H7F, &H40, &H00 '17 1
Data &H42, &H61, &H51, &H49, &H46 '18 2
Data &H21, &H41, &H45, &H4B, &H31 '19 3
Data &H18, &H14, &H12, &H7F, &H10 '20 4
Data &H27, &H45, &H45, &H45, &H39 '21 5
Data &H3C, &H4A, &H49, &H49, &H30 '22 6
Data &H03, &H01, &H71, &H09, &H07 '23 7
Data &H36, &H49, &H49, &H49, &H36 '24 8
Data &H06, &H49, &H49, &H29, &H1E '25 9
Data &H00, &H36, &H36, &H00, &H00 '26 :
Data &H00, &H56, &H36, &H00, &H00 '27 ;
Data &H08, &H14, &H22, &H41, &H00 '28 <
Data &H14, &H14, &H14, &H14, &H14 '29 =
Data &H00, &H41, &H22, &H14, &H08 '30 >
Data &H02, &H01, &H51, &H09, &H06 '31 ?
Data &H32, &H49, &H79, &H41, &H3E '32 @
Data &H7E, &H11, &H11, &H11, &H7E '33 A
Data &H7F, &H49, &H49, &H49, &H36 '34 B
Data &H3E, &H41, &H41, &H41, &H22 '35 C
Data &H7F, &H41, &H41, &H22, &H1C '36 D
Data &H7F, &H49, &H49, &H49, &H41 '37 E
Data &H7F, &H09, &H09, &H09, &H01 '38 F
Data &H3E, &H41, &H49, &H49, &H7A '39 G
Data &H7F, &H08, &H08, &H08, &H7F '40 H
Data &H00, &H41, &H7F, &H41, &H00 '41 I
Data &H20, &H40, &H41, &H3F, &H01 '42 J
Data &H7F, &H08, &H14, &H22, &H41 '43 K
Data &H7F, &H40, &H40, &H40, &H40 '44 L
Data &H7F, &H02, &H0C, &H02, &H7F '45 M
Data &H7F, &H04, &H08, &H10, &H7F '46 N
Data &H3E, &H41, &H41, &H41, &H3E '47 O
Data &H7F, &H09, &H09, &H09, &H06 '48 P
Data &H3E, &H41, &H51, &H21, &H5E '49 Q
Data &H7F, &H09, &H19, &H29, &H46 '50 R
Data &H46, &H49, &H49, &H49, &H31 '51 S
Data &H01, &H01, &H7F, &H01, &H01 '52 T
Data &H3F, &H40, &H40, &H40, &H3F '53 U
Data &H1F, &H20, &H40, &H20, &H1F '54 V
Data &H3F, &H40, &H38, &H40, &H3F '55 W
Data &H63, &H14, &H08, &H14, &H63 '56 X
Data &H07, &H08, &H70, &H08, &H07 '57 Y
Data &H61, &H51, &H49, &H45, &H43 '58 Z
Data &H7F, &H41, &H41, &H00, &H00 '59 [
Data &H15, &H16, &H7C, &H16, &H15 '60 \
Data &H00, &H41, &H41, &H7F, &H00 '61 ]
Data &H04, &H02, &H01, &H02, &H04 '62 ^
Data &H40, &H40, &H40, &H40, &H40 '63 _
Data &H00, &H01, &H02, &H04, &H00 '64 `
Data &H20, &H54, &H54, &H54, &H78 '65 a
Data &H7F, &H48, &H44, &H44, &H38 '66 b
Data &H38, &H44, &H44, &H44, &H20 '67 c
Data &H38, &H44, &H44, &H48, &H7F '68 d
Data &H38, &H54, &H54, &H54, &H18 '69 e
Data &H08, &H7E, &H09, &H01, &H02 '70 f
Data &H0C, &H52, &H52, &H52, &H3E '71 g
Data &H7F, &H08, &H04, &H04, &H78 '72 h
Data &H00, &H44, &H7D, &H40, &H00 '73 i
Data &H20, &H40, &H44, &H3D, &H00 '74 j
Data &H7F, &H10, &H28, &H44, &H00 '75 k
Data &H00, &H41, &H7F, &H40, &H00 '76 l
Data &H7C, &H04, &H18, &H04, &H78 '77 m
Data &H7C, &H08, &H04, &H04, &H78 '78 n
Data &H38, &H44, &H44, &H44, &H38 '79 o
Data &H7C, &H14, &H14, &H14, &H08 '80 p
Data &H08, &H14, &H14, &H18, &H7C '81 q
Data &H7C, &H08, &H04, &H04, &H08 '82 r
Data &H48, &H54, &H54, &H54, &H20 '83 s
Data &H04, &H3F, &H44, &H40, &H20 '84 t
Data &H3C, &H40, &H40, &H20, &H7C '85 u
Data &H1C, &H20, &H40, &H20, &H1C '86 v
Data &H3C, &H40, &H38, &H40, &H3C '87 w
Data &H44, &H28, &H10, &H28, &H44 '88 x
Data &H0C, &H50, &H50, &H50, &H3C '89 y
Data &H44, &H64, &H54, &H4C, &H44 '90 z
Data &H00, &H08, &H36, &H41, &H00 '91 {
Data &H00, &H00, &H7F, &H00, &H00 '92 |
Data &H00, &H41, &H36, &H08, &H00 '93 }
Data &H08, &H08, &H2A, &H1C, &H08 '94 ~
End Sub


Greetings
Albert
 
lizby
Guru

Joined: 17/05/2016
Location: United States
Posts: 3339
Posted: 02:35pm 30 May 2025
Copy link to clipboard 
Print this post

  AlbertR said  One of my first programs was a scrolling message using only 2 (8x8)WS2812B RGB displays.


Nice job.

Welcome to the forum. Hope to see more of your work.

Is there a video available?
PicoMite, Armmite F4, SensorKits, MMBasic Hardware, Games, etc. on fruitoftheshed
 
dddns
Guru

Joined: 20/09/2024
Location: Germany
Posts: 463
Posted: 02:47pm 30 May 2025
Copy link to clipboard 
Print this post

Early work , a test program: load a photo to your TFT which supports MiSo and can read the screen.
You can pick any colour within the image with right mouse, left you draw and middle you magnify the pixel in front of the mouse cursor on the WS2812.
cursor_width = 4

cursor_size = 8
cursor_col% = RGB(254,254,254)
CLS

Dim xrows(7) = (0, 15, 16, 31, 32, 47, 48, 63)
Dim led_colors%(64)

Dim Posi$
Dim colx%(7)
Dim coly%(7)
Dim colp%
Load jpg "b:dsc02743_s.jpg"
Circle 400,100,50,15,,RGB(0,255,0),RGB(0,0,255)
Circle 400,200,50,15,,RGB(0,0,255),RGB(255,0,0)
Circle 400,300,50,15,,RGB(255,0,255),RGB(0,0,255)
Circle 400,400,50,15,,RGB(0,255,255),RGB(255,255,0)
Blit read 1,100,100, cursor_size -1, cursor_size - 1
tx=100:ty=100
Mouse set 2,100,100,0
Do
mx=DEVICE(mouse 2,x)
my=DEVICE(mouse 2,y)
mb=DEVICE(mouse 2,l)
mr=DEVICE(mouse 2,r)
mm=DEVICE(mouse 2,m)
md=DEVICE(mouse 2,d)

If mx <> tx Or my <> ty Then
 restorecursor1 tx,ty
 readcursor1 mx,my
 writecursor1 mx,my
EndIf

If md<>0 Then Save image "test.bmp",0,0,799,479

If mb<>0 Then
 For xpix = 0 To cursor_size - 1
   For ypix = 0 To cursor_size -1
     col_pix% = Pixel(mx-(cursor_size)+xpix, my-(cursor_size)+ypix)
     pixelset(xpix, ypix,col_pix%)
   Next ypix
 Next xpix
EndIf

If mr<>0 Then colp% = Pixel(mx - 1,my - 1)

If mm<>0 Then
Circle mx-cursor_width/2,my-cursor_width/2,cursor_width/2,,,colp%,colp%
EndIf

posi$ = Str$(mx)+"  "+Str$(my)+"   "+Str$(mb)+"    "+Str$(mr)
Text 600,400,Posi$

tx = mx
ty = my

Loop


Sub readcursor1(mx,my)
 Blit close 1
 Blit read 1,mx,my,cursor_size,cursor_size
End Sub


Sub writecursor1(mx,my)
Restore
For xpix = 0 To cursor_size-1
   For ypix = 0 To cursor_size-1
     Read cursor_pixel
     If cursor_pixel = 0 Then
       Pixel xpix+mx, ypix+my, cursor_frame_col%
     ElseIf cursor_pixel = 1 Then
       Pixel xpix+mx, ypix+my, cursor_col%
     EndIf
   Next ypix
Next xpix

Data 0,0,0,0,0,0,0,0
Data 0,1,1,1,1,1,0,2
Data 0,1,1,1,1,0,2,2
Data 0,1,1,1,1,0,2,2
Data 0,1,1,1,1,1,0,2
Data 0,1,0,0,1,1,1,0
Data 0,0,2,2,0,1,1,0
Data 0,2,2,2,2,0,0,0
End Sub

Sub restorecursor1(tx,ty)
 Blit write 1, tx, ty
End Sub

Sub pixelset(xpix, ypix, col_pix%)
 If xpix = 0 Or xpix = 2 Or xpix = 4 Or xpix = 6 Then
   led_pos = xrows(xpix - cursor_witdth) + ypix - cursor_witdth
   led_colors%(led_pos) = col_pix%
    'Print led_pos
 Else
   led_pos = xrows(xpix - cursor_witdth) - ypix - cursor_witdth
   'Print led_pos
   led_colors%(led_pos) = col_pix%
 EndIf
 WS2812 O,gp12,64,led_colors%()
End Sub



I think this example works for HDMI/VGA as well..never tried
Edited 2025-05-31 01:19 by dddns
 
Amnesie
Guru

Joined: 30/06/2020
Location: Germany
Posts: 558
Posted: 03:25pm 30 May 2025
Copy link to clipboard 
Print this post

Albert,

thank you for sharing your code! I've just ordered more of those led-chips to play around and test your code!

Greetings
Daniel
 
AlbertR
Newbie

Joined: 29/05/2025
Location: Germany
Posts: 12
Posted: 06:11pm 30 May 2025
Copy link to clipboard 
Print this post

thanks

@Lizby  the video, just made
LedStripe.zip

Greetings
Albert
 
Amnesie
Guru

Joined: 30/06/2020
Location: Germany
Posts: 558
Posted: 07:29pm 30 May 2025
Copy link to clipboard 
Print this post

Albert,

can't wait to get my 8x8 matrix boards! Your video looks amazing   !

Greetings
Daniel
 
AlbertR
Newbie

Joined: 29/05/2025
Location: Germany
Posts: 12
Posted: 07:48pm 31 May 2025
Copy link to clipboard 
Print this post

Daniel
because of the feedback I made some changes.
Now it can handle 8 tiles a (8x8). Therefore two pins are needed
It has the option to define a background color
I add a char for 'degree' before 'space'(a little bit dirty)
I hope you have fun with it

  Quote  
Option EXPLICIT      '-> allways declare variables
Option DEFAULT NONE  '-> allways declare typ

'vars -----------------------------------------------------
Dim Integer MyFo(95,4), CTab(9)        'My Font and ColorTable see InitLedChars
Dim Integer LedsA(255)                 'Array for 4x(8x8) leds
Dim Integer LedsB(255)                 'Array for 4x(8x8) leds
Dim Integer zId,fId                    'index for textchar and color
Dim Integer ColP                       'for one column-pattern of the char
Dim Integer CBac                       'backgroundcolor
Dim Integer i, j, k                    '
Dim String  MTxt,MCol,FTxt,FCol        'text/color max 255 chars
Dim Integer TLen                       'var for textlength

'sys inits ------------------------------------------------
SetPin GP0, DOUT  'outputpin for the first  ws2812-matrix
SetPin GP1, DOUT  'outputpin for the second ws2812-matrix
RTC GetTime       'also 'OPTION AUTO ENABLE'

'my inits -------------------------------------------------
InitLedChars     'read and set MyFont and colortable
SetTick 1000,TxtUpdate,1
'mainloop
Print "End with Ctrl+C"
Do
 TxtUpdate                     'here to be able to get the stringlength
 TLen = Len(MTxt)
 For j = 1 To TLen             'over all chars of MTxt
   For i = 0 To -4 Step -1     'from 0 offset to (5pix wide) out
     For k = 0 To 14           '8 tiles = 64 columns -> 13 chars + 4 scroller
       If j+k > TLen Then  'end of text -> bend to begin
         zId =      Asc(Mid$(MTxt,j+k-TLen,1))-31
         fId = CTab(Val(Mid$(MCol,j+k-TLen,1)))
       Else
         zId =      Asc(Mid$(MTxt,j+k,1))-31
         fId = CTab(Val(Mid$(MCol,j+k,1)))
       End If
       ChrToLed( zId, i+(5*k), fId)'call sub( textIdx, Offset, color)
     Next k
     Device WS2812 B, GP0, 256, LedsA()'sys-function
     Device WS2812 B, GP1, 256, LedsB()'sys-function
     'no pause needed any more  loop time is about 75ms
   Next i
 Next j
Loop 'end main

'subs and functions ---------------------------------------
Sub TxtUpdate      'to reduce places for string edit
Local string MTmp5
 MTmp5 = " Core:"+Str$(Pin(Temp),2,1)+Chr$(31)+"C "
        '12:59:00 Core:28.5^C
 MTxt =   Time$ +  MTmp5 +   "MMBasic is amazing!!!"
 MCol = "226226220777759999990663333301203456789303"
End Sub

Sub ChrToLed(Idx As Integer,offs As Integer,RgbV As Integer)
Local Integer i,j,k,m

For i = 0 To 4              'over the 5  columns of the char
 j = (i+offs)*8             'column char(i) to column led-matrix(j)
 ColP = MyFo(Idx,i)
 If (j>=0) And (j<256) Then      'fill first led-array
   For m = 0 To 7                'Bit 8-1
     If ColP And (128>>m) Then
       LedsA(j+m) = RgbV
     Else
       LedsA(j+m) = CBac         'backgroundcolor
     End If
   Next m
 ElseIf (j>255) And (j<512) Then 'fill second led-array
   k = j - 256
   For m = 0 To 7                'Bit 8-1
     If ColP And (128>>m) Then
       LedsB(k+m) = RgbV
     Else
       LedsB(k+m) = CBac         'backgroundcolor
     End If
   Next m
 End If
Next i
End Sub 'SetChrToLed

Sub InitLedChars
Local Integer i,j

CTab(0)=RGB(0,0,0)
CTab(1)=RGB(16,0,0)
CTab(2)=RGB(0,16,0)
CTab(3)=RGB(0,0,16)
CTab(4)=RGB(8,0,8)
CTab(5)=RGB(8,8,0)
CTab(6)=RGB(0,8,8)
CTab(7)=RGB(16,6,0)
CTab(8)=RGB(9,1,6)
CTab(9)=RGB(4,6,6)

CBac   =RGB(1,0,0) 'background color

For i = 0 To 94
  For j = 0 To 4
    Read MyFo(i,j)
  Next j
Next i
Data &H00, &H07, &H05, &H07, &H00 ' -1 o
Data &H00, &H00, &H00, &H00, &H00 ' 0 space
Data &H00, &H00, &H6F, &H6F, &H00 ' 1 !
Data &H00, &H07, &H00, &H07, &H00 ' 2 "
Data &H14, &H7F, &H14, &H7F, &H14 ' 3 #
Data &H24, &H2A, &H7F, &H2A, &H12 ' 4 $
Data &H23, &H13, &H08, &H64, &H62 ' 5 %
Data &H36, &H49, &H55, &H22, &H50 ' 6 &
Data &H00, &H05, &H03, &H00, &H00 ' 7 '
Data &H00, &H1C, &H22, &H41, &H00 ' 8 (
Data &H00, &H41, &H22, &H1C, &H00 ' 9 )
Data &H14, &H08, &H3E, &H08, &H14 '10 *
Data &H08, &H08, &H3E, &H08, &H08 '11 +
Data &H00, &H50, &H30, &H00, &H00 '12 ,
Data &H00, &H08, &H08, &H08, &H00 '13 -
Data &H00, &H60, &H60, &H00, &H00 '14 .
Data &H20, &H10, &H08, &H04, &H02 '15 /
Data &H3E, &H51, &H49, &H45, &H3E '16 0
Data &H00, &H42, &H7F, &H40, &H00 '17 1
Data &H42, &H61, &H51, &H49, &H46 '18 2
Data &H21, &H41, &H45, &H4B, &H31 '19 3
Data &H18, &H14, &H12, &H7F, &H10 '20 4
Data &H27, &H45, &H45, &H45, &H39 '21 5
Data &H3C, &H4A, &H49, &H49, &H30 '22 6
Data &H03, &H01, &H71, &H09, &H07 '23 7
Data &H36, &H49, &H49, &H49, &H36 '24 8
Data &H06, &H49, &H49, &H29, &H1E '25 9
Data &H00, &H00, &H36, &H36, &H00 '26 :
Data &H00, &H56, &H36, &H00, &H00 '27 ;
Data &H08, &H14, &H22, &H41, &H00 '28 <
Data &H14, &H14, &H14, &H14, &H14 '29 =
Data &H00, &H41, &H22, &H14, &H08 '30 >
Data &H02, &H01, &H51, &H09, &H06 '31 ?
Data &H32, &H49, &H79, &H41, &H3E '32 @
Data &H7E, &H11, &H11, &H11, &H7E '33 A
Data &H7F, &H49, &H49, &H49, &H36 '34 B
Data &H3E, &H41, &H41, &H41, &H22 '35 C
Data &H7F, &H41, &H41, &H22, &H1C '36 D
Data &H7F, &H49, &H49, &H49, &H41 '37 E
Data &H7F, &H09, &H09, &H09, &H01 '38 F
Data &H3E, &H41, &H49, &H49, &H7A '39 G
Data &H7F, &H08, &H08, &H08, &H7F '40 H
Data &H00, &H41, &H7F, &H41, &H00 '41 I
Data &H20, &H40, &H41, &H3F, &H01 '42 J
Data &H7F, &H08, &H14, &H22, &H41 '43 K
Data &H7F, &H40, &H40, &H40, &H40 '44 L
Data &H7F, &H02, &H0C, &H02, &H7F '45 M
Data &H7F, &H04, &H08, &H10, &H7F '46 N
Data &H3E, &H41, &H41, &H41, &H3E '47 O
Data &H7F, &H09, &H09, &H09, &H06 '48 P
Data &H3E, &H41, &H51, &H21, &H5E '49 Q
Data &H7F, &H09, &H19, &H29, &H46 '50 R
Data &H46, &H49, &H49, &H49, &H31 '51 S
Data &H01, &H01, &H7F, &H01, &H01 '52 T
Data &H3F, &H40, &H40, &H40, &H3F '53 U
Data &H1F, &H20, &H40, &H20, &H1F '54 V
Data &H3F, &H40, &H38, &H40, &H3F '55 W
Data &H63, &H14, &H08, &H14, &H63 '56 X
Data &H07, &H08, &H70, &H08, &H07 '57 Y
Data &H61, &H51, &H49, &H45, &H43 '58 Z
Data &H7F, &H41, &H41, &H00, &H00 '59 [
Data &H15, &H16, &H7C, &H16, &H15 '60 \
Data &H00, &H41, &H41, &H7F, &H00 '61 ]
Data &H04, &H02, &H01, &H02, &H04 '62 ^
Data &H40, &H40, &H40, &H40, &H40 '63 _
Data &H00, &H01, &H02, &H04, &H00 '64 `
Data &H20, &H54, &H54, &H54, &H78 '65 a
Data &H7F, &H48, &H44, &H44, &H38 '66 b
Data &H38, &H44, &H44, &H44, &H20 '67 c
Data &H38, &H44, &H44, &H48, &H7F '68 d
Data &H38, &H54, &H54, &H54, &H18 '69 e
Data &H08, &H7E, &H09, &H01, &H02 '70 f
Data &H0C, &H52, &H52, &H52, &H3E '71 g
Data &H7F, &H08, &H04, &H04, &H78 '72 h
Data &H00, &H44, &H7D, &H40, &H00 '73 i
Data &H20, &H40, &H44, &H3D, &H00 '74 j
Data &H7F, &H10, &H28, &H44, &H00 '75 k
Data &H00, &H41, &H7F, &H40, &H00 '76 l
Data &H7C, &H04, &H18, &H04, &H78 '77 m
Data &H7C, &H08, &H04, &H04, &H78 '78 n
Data &H38, &H44, &H44, &H44, &H38 '79 o
Data &H7C, &H14, &H14, &H14, &H08 '80 p
Data &H08, &H14, &H14, &H18, &H7C '81 q
Data &H7C, &H08, &H04, &H04, &H08 '82 r
Data &H48, &H54, &H54, &H54, &H20 '83 s
Data &H04, &H3F, &H44, &H40, &H20 '84 t
Data &H3C, &H40, &H40, &H20, &H7C '85 u
Data &H1C, &H20, &H40, &H20, &H1C '86 v
Data &H3C, &H40, &H38, &H40, &H3C '87 w
Data &H44, &H28, &H10, &H28, &H44 '88 x
Data &H0C, &H50, &H50, &H50, &H3C '89 y
Data &H44, &H64, &H54, &H4C, &H44 '90 z
Data &H00, &H08, &H36, &H41, &H00 '91 {
Data &H00, &H00, &H7F, &H00, &H00 '92 |
Data &H00, &H41, &H36, &H08, &H00 '93 }
Data &H08, &H08, &H2A, &H1C, &H08 '94 ~
End Sub


The video is only with 5 tiles, I didn't have any more.

LedMatrix.zip

Greetings
Albert
 
     Page 1 of 2    
Print this page
The Back Shed's forum code is written, and hosted, in Australia.
© JAQ Software 2025