This is custom 5x5cm Arduino UNO board that allows simple connection to HUB75 interface LED displays.If you are not familiar with such displays you can buy one from Adafruit 16X32 RGB LED MATRIX PANEL, or from Aliexpress
HUB75 interface LED displays usually comes with flat cable for data and power cable. So after you soldered this PCB all you need to do is to connect power cable to screw terminal. and plug flat cable to PCB and LED display.
Pinout compatible with Adafruit "RGB matrix Panel" library, but I wanted to understand how HUB75 interface works. So I wrote my own library.
Five free pins can be used to connect sensors or other devices. See examples below.
Gerber files for Seeedstudio Fusion PCB service attached. It will cost you 10$ to produce 10 of this PCB.Also Eagle schematic and board layout files attached.
SchematicParts list
You will need flowing parts:
- ATmega328 with Arduino Optiboot (Uno)
- Resistor 10k
- Capacitor 2pF x2
- Capacitor 100nF x5
- Crystal 16MHz
- Capacitor 470uF x2
- DC Barrel Power Jack/Connector likethis
- Two pins screw terminal block 3.5mm pitch likethis
- Switch likethisoptional if you want reset button.
- DIP Socket, 28 Contacts optional
- Two jumpers
- Break Away Headers 18 pins likethis
- Resistor 330 Ohm x5 (optional)
- RUEF250U FUSE(optional)
- Ribbon Cable Connector 2x8 likethisprobably you also can use one likethisYou can also solder two rows of headers. It works fine also.
RUEF250U is 3A fuse. It is optional. You can simply short it connections with wire if you don't want it.Resistors 300 Ohm also optional. You can solder header before resistors as you can see on photo.
The BoardAs you can see it is no USB interface on board, so you will need some USB to serial cable to upload sketches. I am using SparkFun FTDI Basic Breakout - 5V
Using jumpers board can be configured for panels with 3 bits of row address (A,B,C) usually 16x32 or for panels with four bits of address (A,B,C,D) usually 32x32 panels or larger.
For panels with 3 bits of row address you need to short NOD1,NOD2 jumper as you can see on picture.
For panels with 4 bits of row address you need to remove jumpers from NOD1,NOD2 and put them on USED1,USED2 headers.
It is no voltage regulator on board. Please use good 5V power supply. For 16x32 panel you will need about 2A power supply. For 32x32 panel you will need about 3A power supply.
Connect 5V power supply only to Barrel Power Connector. The connector in lower left corner is for connected external devices as RTC, sensors etc. Traces on board for this connector too narrow for 2A needed to power LED matrix!
HUB75 InterfaceHUB75 interface used for lot of LED displays. It is couple of links below if you want to learn about it.It is slight differences between panels, but for panels used by Adafruit and many others basically you need is to do flowing to operate the display:
- Clock in data for entire row (use R1,G1,B1,R2,G2,B2 for data and CLK for clock)
- OE high
- Select line address (A,B,C,D)
- LAT high
- LAT low
- OE low
Repeat for each line
My LibraryAs I wrote before, this board will work just fine with Adafruit "RGB matrix Panel" library. But it was interesting to write my own. So I did. You can download latest version from GitHub HUB75driver or you can download attached HUB75driver.zip zip file.
This library will work with normal Arduino Uno as well.
HUB75driver library parameters
Refresh rate 125FPS
12bits of clolors, 4 bits per color (RGB)
3500 bytes of program memory
RAM: 40 bytes + 768 bytes if no double buffering and 1536 bytes if double buffering used
It takes 7ms to fill all matrix using draw_point() function (512 times)
Usage examples
Following couple of examples of what you can do with this board and 16x32 panel
Clock example is clock.zip, it is uses connected via I2C DS1307 breakout board as RTC
Scrolling text example is scrolltext.zip
Temperature display temperature.zip using Adafruit libraries and DS18B20 sensor.
Inline assembler
http://www.nongnu.org/avr-libc/user-manual/inline_asm.html
http://www.codeproject.com/Articles/15971/Using-Inline-Assembly-in-C-C
https://www.ibiblio.org/gferg/ldp/GCC-Inline-Assembly-HOWTO.html
http://asm.sourceforge.net/articles/rmiyagi-inline-asm.txt
http://www.atmel.com/webdoc/AVRLibcReferenceManual/inline_asm_1io_ops.html
HUB75 interface
https://learn.adafruit.com/32x16-32x32-rgb-led-matrix/how-the-matrix-works
https://github.com/hzeller/rpi-rgb-led-matrix
https://esdblog.org/how-to-drive-4096-rgb-leds-each-24bit-rgb-brightness-with-one-stm32-microcontroller-without-much-cpu-load/
Comments