B4R Question LED matrix a helpme

Cesar_Morisco

Active Member
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
    100.8 KB · Views: 66
  • FC-16_Module.jpg
    84.1 KB · Views: 74

Cableguy

Expert
Licensed User
Longtime User
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

Cesar_Morisco

Active Member
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

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
 

Attachments

  • 20240622_0725464_edited.jpg
    134.6 KB · Views: 62
  • 2.jpg
    126.1 KB · Views: 71
Last edited:
Upvote 0

Johan Schoeman

Expert
Licensed User
Longtime User
 
Upvote 0

Cableguy

Expert
Licensed User
Longtime User
The photos from the OP show carrier boards equipped with max7219...
 
Upvote 0

Cableguy

Expert
Licensed User
Longtime User
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

Cesar_Morisco

Active Member
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
Cookies are required to use this site. You must accept them to continue using the site. Learn more…