Difference between revisions of "MAX7219X4"

From Land Boards Wiki
Jump to navigation Jump to search
 
(26 intermediate revisions by the same user not shown)
Line 4: Line 4:
 
<video type="youtube">KmEkTzbUHok</video>
 
<video type="youtube">KmEkTzbUHok</video>
  
[[file:MAX8219X4_P18496_720PX.jpg]]
+
[[file:MAX7219X4_P18550_720PX.jpg]]
  
 
== Features ==
 
== Features ==
Line 14: Line 14:
 
* Can display decimal, hex values, some text values
 
* Can display decimal, hex values, some text values
 
* Each display has 8 of 7 segment LED displays
 
* Each display has 8 of 7 segment LED displays
* "Blue" card
+
* Uses "Blue" LED cards
 
** [https://www.ebay.com/sch/i.html?_from=R40&_trksid=p2334524.m570.l1311&_nkw=max7219+8-digit+led+display+7+segment&_sacat=0&LH_TitleDesc=0&_odkw=MAX7219&_osacat=0 ebay search]
 
** [https://www.ebay.com/sch/i.html?_from=R40&_trksid=p2334524.m570.l1311&_nkw=max7219+8-digit+led+display+7+segment&_sacat=0&LH_TitleDesc=0&_odkw=MAX7219&_osacat=0 ebay search]
 
** Not compatible with [[MAX7219X4#.22Red.22_Modules|red modules]]
 
** Not compatible with [[MAX7219X4#.22Red.22_Modules|red modules]]
* 3.3V interface operation
+
* Rev 1 has 3.3V interface operation (J1)
 
** 3.3V to 5V Level shifter
 
** 3.3V to 5V Level shifter
* Requires '''both''' 3.3V and 5V power supplies
+
** Requires '''both''' 3.3V and 5V power supplies
* 8 pin connector
+
** 8 pin connector
 +
* Rev 2 has 3.3V signal levels J1 (as above) or 5V signal levels (adds J2)
 +
** Only requires 5V for 5V operation
 +
** Level translator can still be installed but right connector must be used
 
* 95x95mm ODAS form factor
 
* 95x95mm ODAS form factor
 
* (4) 6-32 mounting holes
 
* (4) 6-32 mounting holes
Line 27: Line 30:
  
 
== Connectors ==
 
== Connectors ==
 +
 +
[[file:MAX7219X4_Rev2_CAD.PNG]]
 +
 +
* Only 1 of the 2 connectors J1 or J2 can be used at a time
  
 
=== J1 Connector ===
 
=== J1 Connector ===
Line 40: Line 47:
 
# CS
 
# CS
 
# DIN
 
# DIN
# 3.3V
+
# +3.3V
# 5V
+
# +5V
  
 
=== J2 (Rev 2 and higher) ===
 
=== J2 (Rev 2 and higher) ===
 +
 +
 +
# +5V
 +
# DIN
 +
# CS
 +
# CLK
 +
# DOUT
 +
# GND
  
 
== Programming ==
 
== Programming ==
Line 63: Line 78:
 
===== LBMAX7219X4_ADDR =====
 
===== LBMAX7219X4_ADDR =====
  
 +
* Runs on [[ArduinoInABox|Arduino in a Box]]
 +
** 3.3V signals level
 +
** Also requires 5V for LEDs
 +
** 5V on Arduino in a Box] DC Power Jack
 +
* 5V picked off VFILT jack
 
* [https://github.com/land-boards/lb-Arduino-Code/tree/master/LBCards/MAX7219X4/LBMAX7219X4_ADDR LBMAX7219X4_ADDR]
 
* [https://github.com/land-boards/lb-Arduino-Code/tree/master/LBCards/MAX7219X4/LBMAX7219X4_ADDR LBMAX7219X4_ADDR]
 +
** void writeHexDigit(uint8_t rowVal, uint8_t colVal, uint8_t digitVal) - Write Hexadecimal digit to location
 +
** 8 columns, 4 rows
 +
** rowVal = 0 is top row in display
 +
** colVal = 0 = left character
 +
 +
===== LBMAX7219X4_ADDR_5V =====
 +
 +
* Same as LBMAX7219X4_ADDR
 +
* Runs on 5V Arduino UNO
 +
* [https://github.com/land-boards/lb-Arduino-Code/tree/master/LBCards/MAX7219X4/LBMAX7219X4_ADDR_5V LBMAX7219X4_ADDR_5V]
 
** void writeHexDigit(uint8_t rowVal, uint8_t colVal, uint8_t digitVal) - Write Hexadecimal digit to location
 
** void writeHexDigit(uint8_t rowVal, uint8_t colVal, uint8_t digitVal) - Write Hexadecimal digit to location
 
** 8 columns, 4 rows
 
** 8 columns, 4 rows
Line 80: Line 110:
 
=== CircuitPython Programming ===
 
=== CircuitPython Programming ===
  
* [https://docs.circuitpython.org/projects/max7219/en/latest/api.html#adafruit_max7219.max7219.ChainableMAX7219 adafruit_max7219.max7219.ChainableMAX7219 Docs page]
+
* [https://docs.circuitpython.org/projects/max7219/en/latest/index.html CircuitPython driver for the MAX7219 LED matrix driver chip docs]
 +
 
 
<pre>
 
<pre>
class ChainableMAX7219(MAX7219):
+
class adafruit_max7219.bcddigits.BCDDigits(spi: SPI, cs: DigitalInOut, nDigits: int = 1)[source]
    """
+
Basic support for display on a 7-Segment BCD display controlled by a Max7219 chip using SPI.
    Daisy Chainable MAX7219 - driver for cascading displays based on max7219 chip_select
+
Parameters
 
+
spi (SPI) – an spi busio or spi bitbangio object
    :param int width: the number of pixels wide
+
cs (DigitalInOut) – digital in/out to use as chip select signal
    :param int height: the number of pixels high
+
nDigits (int) – number of led 7-segment digits; default 1; max 8
    :param ~busio.SPI spi: an spi busio or spi bitbangio object
 
    :param ~digitalio.DigitalInOut chip_select: digital in/out to use as chip select signal
 
    :param int baudrate: for SPIDevice baudrate (default 8000000)
 
    :param int polarity: for SPIDevice polarity (default 0)
 
    :param int phase: for SPIDevice phase (default 0)
 
    """
 
 
</pre>
 
</pre>
  
* [https://docs.circuitpython.org/projects/max7219/en/latest/examples.html#id1 Simple example]
+
* [https://github.com/land-boards/QT-Py/tree/main/CircuitPython/circuitpythonBundles/adafruit-circuitpython-bundle-7.x-mpy-20220611/lib/adafruit_max7219 bcddigits.mpy example Code]
  
 
=== VHDL Code ===
 
=== VHDL Code ===
Line 123: Line 148:
 
* Test single 8-digit modules
 
* Test single 8-digit modules
 
* Test MAX7219X4 card with (4) 8-digit modules
 
* Test MAX7219X4 card with (4) 8-digit modules
 +
* Test 3.3V operation on J1 (Rev 1 or Rev 2 or higher)
 +
* Test 5V operation on J2 (Rev 2 and higher)
  
 
=== Test Single MAX7219 Modules ===
 
=== Test Single MAX7219 Modules ===
Line 163: Line 190:
 
|}
 
|}
  
=== Test MAX7219X4 Card ===
+
=== Test MAX7219X4 Card 3.3V ===
  
 
[[file:MAX7219X4_TEST-720PX.png]]
 
[[file:MAX7219X4_TEST-720PX.png]]
  
 
* [[ArduinoInABox]]
 
* [[ArduinoInABox]]
 +
* Uses J1 Rev 1 UUT or Rev 2 UUT
 
* Wiring Table
 
* Wiring Table
  
Line 217: Line 245:
 
* Run [https://github.com/land-boards/lb-Arduino-Code/tree/master/LBCards/MAX7219X4/LBMAX7219X4_ADDR Demo code]
 
* Run [https://github.com/land-boards/lb-Arduino-Code/tree/master/LBCards/MAX7219X4/LBMAX7219X4_ADDR Demo code]
 
* Displays 0-7, 8-F twice
 
* Displays 0-7, 8-F twice
 +
* Displays all 8's
 +
 +
=== Test MAX7219X4 Card 5V ===
 +
 +
[[file:MAX7219X4_P18547_TEST_720PX.jpg]]
 +
 +
* Arduino UNO
 +
* [[Arduino Sensor Shield]]
 +
* Wiring Table
 +
 +
{| class="wikitable"
 +
! Signal
 +
! Shield
 +
! MAX7219X4
 +
! Signal
 +
! Color
 +
|-
 +
| GND
 +
| D12-S
 +
| J2-6
 +
| GND
 +
| BLK
 +
|-
 +
| D10
 +
| D10-S
 +
| J2-3
 +
| CS
 +
| BRN
 +
|-
 +
| D11
 +
| D11-S
 +
| J2-4
 +
| CLK
 +
| YEL
 +
|-
 +
| D12
 +
| D12-3
 +
| J2-2
 +
| DIN
 +
| WHT
 +
|-
 +
| 5V
 +
| D12-V
 +
| J2-1
 +
| 5V
 +
| RED
 +
|-
 +
|}
 +
 +
* Run [https://github.com/land-boards/lb-Arduino-Code/tree/master/LBCards/MAX7219X4/LBMAX7219X4_ADDR Demo code]
 +
* Displays 0-7, 8-F twice
 +
* Displays all 8's
  
 
== "Red" Modules ==
 
== "Red" Modules ==
Line 241: Line 321:
 
* Card can be driven from one of the two interfaces
 
* Card can be driven from one of the two interfaces
 
** 5V interface does not require 3.3V
 
** 5V interface does not require 3.3V
 +
* Tested / works
  
 
[[file:MAX7219_Front_Rev2_3D.png]]
 
[[file:MAX7219_Front_Rev2_3D.png]]

Latest revision as of 21:44, 16 August 2022

Tindie-mediums.png


MAX7219X4 P18550 720PX.jpg

Features

  • (4) MAX7219 8 digits, 7 Segment display modules
  • 32 digits
    • 4 rows
    • 8 digits per row
  • Can display decimal, hex values, some text values
  • Each display has 8 of 7 segment LED displays
  • Uses "Blue" LED cards
  • Rev 1 has 3.3V interface operation (J1)
    • 3.3V to 5V Level shifter
    • Requires both 3.3V and 5V power supplies
    • 8 pin connector
  • Rev 2 has 3.3V signal levels J1 (as above) or 5V signal levels (adds J2)
    • Only requires 5V for 5V operation
    • Level translator can still be installed but right connector must be used
  • 95x95mm ODAS form factor
  • (4) 6-32 mounting holes

MAX7912 8 Digs 001.jpg

Connectors

MAX7219X4 Rev2 CAD.PNG

  • Only 1 of the 2 connectors J1 or J2 can be used at a time

J1 Connector

  • 3.3V signal level
  • 5V power to LEDs
  • 1x8 right angle header mounted on rear of card
  1. GND
  2. GND
  3. DOUT
  4. CLK
  5. CS
  6. DIN
  7. +3.3V
  8. +5V

J2 (Rev 2 and higher)

  1. +5V
  2. DIN
  3. CS
  4. CLK
  5. DOUT
  6. GND

Programming

Arduino Programming

Arduino Drivers

Arduino Example Code

LBMAX7219X4_ADDR
  • Runs on Arduino in a Box
    • 3.3V signals level
    • Also requires 5V for LEDs
    • 5V on Arduino in a Box] DC Power Jack
  • 5V picked off VFILT jack
  • LBMAX7219X4_ADDR
    • void writeHexDigit(uint8_t rowVal, uint8_t colVal, uint8_t digitVal) - Write Hexadecimal digit to location
    • 8 columns, 4 rows
    • rowVal = 0 is top row in display
    • colVal = 0 = left character
LBMAX7219X4_ADDR_5V
  • Same as LBMAX7219X4_ADDR
  • Runs on 5V Arduino UNO
  • LBMAX7219X4_ADDR_5V
    • void writeHexDigit(uint8_t rowVal, uint8_t colVal, uint8_t digitVal) - Write Hexadecimal digit to location
    • 8 columns, 4 rows
    • rowVal = 0 is top row in display
    • colVal = 0 = left character
LBMAX7219X4
  • LBMAX7219X4
    • Displays Land-Boards channel intro video across the LEDs on 4 rows of 8-digits MAX7219X4 card
    • "LAND-" (first line)
    • "BOARDS" (second line)
    • "PRESENTS" (third line)
    • "CARDS...", "AND CODE" (4th line)

CircuitPython Programming

class adafruit_max7219.bcddigits.BCDDigits(spi: SPI, cs: DigitalInOut, nDigits: int = 1)[source]
Basic support for display on a 7-Segment BCD display controlled by a Max7219 chip using SPI.
Parameters
spi (SPI) – an spi busio or spi bitbangio object
cs (DigitalInOut) – digital in/out to use as chip select signal
nDigits (int) – number of led 7-segment digits; default 1; max 8

VHDL Code

instance: MAX7219
    generic map(
            devices => 2,
            intensity => (16#1#, 16#3#)
        )
    port map (
            clk => clock,
            data_vector => x"FEDCBA9876543210",
            clk_out => MAX7219_CLK,
            data_out => MAX7219_DATA,
            load_out => MAX7219_LOAD,
            reset_n => globalResetN
        );

Test

  • Test single 8-digit modules
  • Test MAX7219X4 card with (4) 8-digit modules
  • Test 3.3V operation on J1 (Rev 1 or Rev 2 or higher)
  • Test 5V operation on J2 (Rev 2 and higher)

Test Single MAX7219 Modules

SensorShield P1080453-720px.JPG

SenShld Desc MAX J1 Color
VCC VCC 1 RED
GND GND 2 BLK
D12 DATAIN 3 WHT
D10 CS 4 BRN
D11 CLK 5 YEL

Test MAX7219X4 Card 3.3V

MAX7219X4 TEST-720PX.png

Signal AiB MAX7219X4 Signal Color
GND J5-25 J1-1 GND BLK
D10 J5-21 J1-5 CS WHT
D11 J5-19 J1-4 CLK YEL
D12 J5-17 J1-6 DIN BLU
+3.3V J5-1 J1-7 +3.3V RED
VFILT J9-1 J1-8 5V ORG
  • Run Demo code
  • Displays 0-7, 8-F twice
  • Displays all 8's

Test MAX7219X4 Card 5V

MAX7219X4 P18547 TEST 720PX.jpg

Signal Shield MAX7219X4 Signal Color
GND D12-S J2-6 GND BLK
D10 D10-S J2-3 CS BRN
D11 D11-S J2-4 CLK YEL
D12 D12-3 J2-2 DIN WHT
5V D12-V J2-1 5V RED
  • Run Demo code
  • Displays 0-7, 8-F twice
  • Displays all 8's

"Red" Modules

  • Incompatible pinouts
    • Do not work with this card
    • Flipped from blue modules

RedModule Overall P1080454-720px.jpg

RedModile Left P1080456-720px.jpg

RedModule Right P1080455-720px.jpg

Mechanicals

MAX7912X4 MECHS.PNG

Revision History

Rev 2

  • Add 5V interface connector - J2
  • Card can be driven from one of the two interfaces
    • 5V interface does not require 3.3V
  • Tested / works

MAX7219 Front Rev2 3D.png

  1. +5V
  2. DIN
  3. CS
  4. CLK
  5. DOUT
  6. GND

Rev 1

  • Tested/works
  • Requires 3.3V power and signal levels
  • Requires 5V power

Assembly Sheet