B4R Question LED matrix a helpme

Cesar_Morisco

Active Member
Licensed User
Longtime User
Hey guys
All good
Does anyone have a code example or any library or reference? My integrated circuit came with support
I thank
 

Attachments

  • FC-16_conn.jpg
    FC-16_conn.jpg
    100.8 KB · Views: 459
  • FC-16_Module.jpg
    FC-16_Module.jpg
    84.1 KB · Views: 491
Hi Cesar,

The MAX7219 is a serial Matrix Interface, which means it takes as an input a serial (8bit?) and it converts it to working data.
there is a ready made lib for such circuit here
 
Upvote 0
Oi Cesar,

O MAX7219 é uma interface serial Matrix, o que significa que ele toma como entrada um serial (8bit?) e o converte em dados de trabalho.
há uma lib pronta para tal circuito aqui

Hello Cableguy, how are you?
Thanks for your answer, it's not working for me, look how it looks

[CODE lang="b4x" title="B4R Exemplos"]Sub Process_Globals
Public Serial1 As Serial
Private led As LedControl

Public DINPin As Pin
Public CSpin As Pin
Public CLKPin As Pin
Public Timer1 As Timer
Public count As Byte
Public stringtext As String="B4R is great!" 'Text to display
Public Timerinterval As Long=2000 '2 seconds
Public bc As ByteConverter
Public indextext As Int
Public rows As Int=8 'rmax7219 8x8 display
Public columns As Int=8

Public firstchar As Int=2 'place on LCD to begin displaying char
Public appearchareffect As Int=100 'appear effect on displaying string

End Sub

Private Sub AppStart
Serial1.Initialize(115200)
Timer1.Initialize("Timer1_Tick",Timerinterval)
DINPin.Initialize(13,DINPin.MODE_OUTPUT)'D7
CSpin.Initialize(14,CSpin.MODE_OUTPUT) 'D5
CLKPin.Initialize(04,CLKPin.MODE_OUTPUT)'D4

Log("AppStart")

led.Initialize(DINPin.PinNumber,CLKPin.PinNumber,CSpin.PinNumber,1)
led.Shutdown(0, False)
led.SetIntensity(0, 8)

If firstchar >3 Then firstchar=2 'char (5 rows values) + firstchar place <=8

Timer1.Enabled=True

End Sub

Sub GetByte(Index As UInt) As Byte
Return RunNative("getdata", Index)
End Sub

Sub Timer1_Tick

led.ClearDisplay(0)

Dim charmapindex As Int=stringtext.GetBytes(indextext) 'Get character

For j=0 To 4 'Get the five rows that build the char (see charmap Inline C# code)
led.setRow(0,firstchar+j,GetByte((charmapindex-31)*5+j)) ' Substracting 31 as first char in charmap begins before sp (ASCII)
Delay(appearchareffect)
Next

If indextext=stringtext.Length-1 Then
indextext=0
Else
indextext=indextext+1
End If


End Sub

#if C
#include <avr/pgmspace.h>
const PROGMEM byte data[] = { //change the data here
0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, // sp
0x00, 0x00, 0x2f, 0x00, 0x00, // !
0x00, 0x07, 0x00, 0x07, 0x00, // "
0x14, 0x7f, 0x14, 0x7f, 0x14, // #
0x24, 0x2a, 0x7f, 0x2a, 0x12, //$
0xc4, 0xc8, 0x10, 0x26, 0x46, //%
0x36, 0x49, 0x55, 0x22, 0x50, //&
0x00, 0x05, 0x03, 0x00, 0x00, //'
0x00, 0x1c, 0x22, 0x41, 0x00, //(
0x00, 0x41, 0x22, 0x1c, 0x00, //)
0x14, 0x08, 0x3E, 0x08, 0x14, // *
0x08, 0x08, 0x3E, 0x08, 0x08, //+
0x00, 0x00, 0x50, 0x30, 0x00, //,
0x10, 0x10, 0x10, 0x10, 0x10, //-
0x00, 0x60, 0x60, 0x00, 0x00, // .
0x20, 0x10, 0x08, 0x04, 0x02, ///
0x3E, 0x51, 0x49, 0x45, 0x3E, //0
0x00, 0x42, 0x7F, 0x40, 0x00, //1
0x42, 0x61, 0x51, 0x49, 0x46, //2
0x21, 0x41, 0x45, 0x4B, 0x31, //3
0x18, 0x14, 0x12, 0x7F, 0x10, //4
0x27, 0x45, 0x45, 0x45, 0x39, //5
0x3C, 0x4A, 0x49, 0x49, 0x30, //6
0x01, 0x71, 0x09, 0x05, 0x03, // 7
0x36, 0x49, 0x49, 0x49, 0x36, //8
0x06, 0x49, 0x49, 0x29, 0x1E, //9
0x00, 0x36, 0x36, 0x00, 0x00, //:
0x00, 0x56, 0x36, 0x00, 0x00, //;
0x08, 0x14, 0x22, 0x41, 0x00, //<
0x14, 0x14, 0x14, 0x14, 0x14, //=
0x00, 0x41, 0x22, 0x14, 0x08, //>
0x02, 0x01, 0x51, 0x09, 0x06, //?
0x32, 0x49, 0x59, 0x51, 0x3E, //@
0x7E, 0x11, 0x11, 0x11, 0x7E, //A
0x7F, 0x49, 0x49, 0x49, 0x36, //B
0x3E, 0x41, 0x41, 0x41, 0x22, //C
0x7F, 0x41, 0x41, 0x22, 0x1C, //D
0x7F, 0x49, 0x49, 0x49, 0x41, //E
0x7F, 0x09, 0x09, 0x09, 0x01, //F
0x3E, 0x41, 0x49, 0x49, 0x7A, //G
0x7F, 0x08, 0x08, 0x08, 0x7F, //H
0x00, 0x41, 0x7F, 0x41, 0x00, //I
0x20, 0x40, 0x41, 0x3F, 0x01, //J
0x7F, 0x08, 0x14, 0x22, 0x41, //K
0x7F, 0x40, 0x40, 0x40, 0x40, //L
0x7F, 0x02, 0x0C, 0x02, 0x7F, //M
0x7F, 0x04, 0x08, 0x10, 0x7F, //N
0x3E, 0x41, 0x41, 0x41, 0x3E, //O
0x7F, 0x09, 0x09, 0x09, 0x06, //P
0x3E, 0x41, 0x51, 0x21, 0x5E, //Q
0x7F, 0x09, 0x19, 0x29, 0x46, //R
0x46, 0x49, 0x49, 0x49, 0x31, //S
0x01, 0x01, 0x7F, 0x01, 0x01, // T
0x3F, 0x40, 0x40, 0x40, 0x3F, //U
0x1F, 0x20, 0x40, 0x20, 0x1F, //V
0x3F, 0x40, 0x38, 0x40, 0x3F, //W
0x63, 0x14, 0x08, 0x14, 0x63, //X
0x07, 0x08, 0x70, 0x08, 0x07, //Y
0x61, 0x51, 0x49, 0x45, 0x43, //Z
0x00, 0x7F, 0x41, 0x41, 0x00, //[
0x55, 0x2A, 0x55, 0x2A, 0x55, //55
0x00, 0x41, 0x41, 0x7F, 0x00, //]
0x04, 0x02, 0x01, 0x02, 0x04, //^
0x40, 0x40, 0x40, 0x40, 0x40, //,
0x00, 0x01, 0x02, 0x04, 0x00, //'
0x20, 0x54, 0x54, 0x54, 0x78, //a
0x7F, 0x48, 0x44, 0x44, 0x38, //b
0x38, 0x44, 0x44, 0x44, 0x20, //c
0x38, 0x44, 0x44, 0x48, 0x7F, //d
0x38, 0x54, 0x54, 0x54, 0x18, //e
0x08, 0x7E, 0x09, 0x01, 0x02, //f
0x0C, 0x52, 0x52, 0x52, 0x3E, //g
0x7F, 0x08, 0x04, 0x04, 0x78, // h
0x00, 0x44, 0x7D, 0x40, 0x00, //i
0x20, 0x40, 0x44, 0x3D, 0x00, //j
0x7F, 0x10, 0x28, 0x44, 0x00, // k
0x00, 0x41, 0x7F, 0x40, 0x00, // l
0x7C, 0x04, 0x18, 0x04, 0x78, // m
0x7C, 0x08, 0x04, 0x04, 0x78, //n
0x38, 0x44, 0x44, 0x44, 0x38, //o
0x7C, 0x14, 0x14, 0x14, 0x08, // p
0x08, 0x14, 0x14, 0x18, 0x7C, //q
0x7C, 0x08, 0x04, 0x04, 0x08, //r
0x48, 0x54, 0x54, 0x54, 0x20, //s
0x04, 0x3F, 0x44, 0x40, 0x20, //t
0x3C, 0x40, 0x40, 0x20, 0x7C, //u
0x1C, 0x20, 0x40, 0x20, 0x1C, //v
0x3C, 0x40, 0x30, 0x40, 0x3C, // w
0x44, 0x28, 0x10, 0x28, 0x44, //x
0x0C, 0x50, 0x50, 0x50, 0x3C, //y
0x44, 0x64, 0x54, 0x4C, 0x44 //z

};

B4R::Object beo1;
B4R::Object* getdata(B4R::Object* o) {
return beo1.wrapNumber(pgm_read_byte_near(data + o->toLong()));
}
#end if[/CODE]
 

Attachments

  • 20240622_0725464_edited.jpg
    20240622_0725464_edited.jpg
    134.6 KB · Views: 390
  • 2.jpg
    2.jpg
    126.1 KB · Views: 430
Last edited:
Upvote 0
 
Upvote 0
The photos from the OP show carrier boards equipped with max7219...
 
Upvote 0
Hi Cesar.

Before trying to make all 8 8X8 led matrix work, start with a single one. Remove the connecting Shunts, so that only one Max is using your code.
From your first photo, All seems to be replicating the behavior of the first one, so your current draw is much bigger that needed be at the moment.
Then, take a good look at this datasheet to understand what the serial data should look like.
I don't think that for your particular usage you'll need to define the Characters in C code.
Unfortunately, I don't have such displays, and cannot help much debugging your code.
 
Upvote 0
Hi Cesar.

Before trying to make all 8 8X8 led matrix work, start with a single one. Remove the connecting Shunts, so that only one Max is using your code.
From your first photo, All seems to be replicating the behavior of the first one, so your current draw is much bigger that needed be at the moment.
Then, take a good look at this datasheet to understand what the serial data should look like.
I don't think that for your particular usage you'll need to define the Characters in C code.
Unfortunately, I don't have such displays, and cannot help much debugging your code.
Hello
all good
I checked the matrices again and everything is fine.
Arduino example works well
On the B4R with letters for no direction
 
Upvote 0
Back
Top