LED tiles: Difference between revisions
(Added cable, comment about shift register) |
(Fix code block formatting) |
||
Line 132: | Line 132: | ||
Simple Arduino code example: | Simple Arduino code example: | ||
< | <pre> | ||
digitalWrite(pinOE, LOW); | digitalWrite(pinOE, LOW); | ||
Line 155: | Line 155: | ||
digitalWrite(pinLAT, LOW); | digitalWrite(pinLAT, LOW); | ||
</ | </pre> | ||
The pixel writing could be made much faster using direct port operations, particularly with a port dedicated to the tile interface - one write with clock low to set the R G B values and the next holding the values with clock high - probably of the order of 50 times faster than the code above. | The pixel writing could be made much faster using direct port operations, particularly with a port dedicated to the tile interface - one write with clock low to set the R G B values and the next holding the values with clock high - probably of the order of 50 times faster than the code above. |
Revision as of 23:52, 8 February 2016
LED screen tiles donated by Mistamud. See mailing list thread here.
What is it
- Frame containing 6 LED tiles
- Controller/PSU "Infiled"
- 46 individual LED tiles
What are we doing with it?
The space is likely to keep the frame and controller/PSU, and maybe a few extra screens depending on final decision.
Project maintainers
- Elisabeth Anderson
- .....
Tiles for members
The space keeps the frame and controller, plus possibly a few extra screens (decision tbc), which would leave about 40 for members. Register you interest (before 16th Jan) and keep an eye on the mailing list for update on when the tiles are ready to collect. (update: added members who registered their interest on the mailing list as well)
- 01.
Lee Jones(2 if possible please). 02. Nigle03. Toby Catlin04. Matt P- 05. Aden (2)
- 06. Henry Sands
- 07. Matt Wheeler (4 if possible)
- 08. Egor Kraev
09. Mike(Upto 4, if possible, please)- 10. Pingless
11. Asc (2 please)- 12. James Cadman
13. Henry Best14. Martin Goodman(2 please)15. Thomas Hill16. JJ (2 please)17. Michael Margolis(2 if possible)- 18. Robin Baumgarten (2 if possible)
19. Giac0m0 (2 if possible)20. Bennage (2 if possible, please)- 21. Det (1)
- 22. betandr
23. Ciborg24.Stefan Sabo (HS07764) 2
No more names please, they've all gone
N.B. If you've not done anything with the tile after 3 months please bring it back to the space as someone else may wish to do something with it, don't just let it gather dust in a corner!
LED Specs
The 'tile' contains the matrix of SMDs and the driver ICs and multiplexing to run but you'll need 5v dc and some kind of Pi / Arduino / Nova or Linsn Scancard to control them.
Rough Specs sent by Tom:
LEDs Per Pixel 1R1G1B
- Red Wavelength (Dominant) 625 ~ 630
- Green Wavelength (Dominant) 520 ~ 525
- Blue Wavelenghth (Dominant) 470 ~ 475
PIXELS
- 48 x 36
- Pixel Configuration SMD 3528
- LED Type Black Diamond
- LEDs Per Area LEDs/m2 67,635
- Physical Pixel Pitch mm 6.66
Physical Pixels Per Area pixels/m2 22,545 Panel:
- LED Tile Width mm 320
- LED Tile Height mm 120
- Viewing Angle – Horizontal degrees 140
- Viewing Angle - Vertical degrees 120
Frame and controller/PSU specs
- Frame containing 6 LED tiles - Controller/PSU "Infiled"
This is a link to the manufacturers page here: http://www.infiled.com/chanpin/yingyong-3/20131223/250.html
Also a PDF: http://www.infiled.com/uploads/soft/L%20RSS.pdf
Building a LED wall
On this Mistamud says: You'll need a card called a Scancard. (the brains found inside each and every LED panel): http://www.led-card.com/product_info.php?cPath=24&products_id=314
The signal that goes into the Scancard on Cat5 cable needs to come from a Sender Card: http://www.led-card.com/product_info.php?cPath=23&products_id=15. The signal that goes into a Sender card is good ol' DVI from your laptop.
There's also some info on the progress made with the previous screens here
Michael Margolis thinks that they can be controlled by the SmartMatrix library: https://github.com/pixelmatix/SmartMatrix
and Adafruit have a shield for the teensy with a connector that should(?) work with these tiles : https://www.adafruit.com/products/1902
You can find his mailing list post here: https://groups.google.com/d/msg/london-hack-space/Gs4_P4Je1gw/HFshYAzhEQAJ
Glen Akins has some extremely good technical detail here: http://bikerglen.com/projects/lighting/led-panel-1up/
Getting Started
Some key information and pointers for anyone getting started with a tile and a basic microcontroller like the Arduino (we used a Mega 2560), Raspberry Pi, BeagleBone etc.
The OE (Output Enable) pin is misleadingly named as it's really Output Inhibit or Blanking, having to be pulled low to enable the LEDs. All other inputs are active high.
The panel is organised as six row groups that are interlaced both vertically and horizontally (see illustration) to minimise flicker. Each group contains 288 pixels organised in a shift register so new data shifts along the row group in the order shown.
As someone has explained elsewhere the panel displays one row group at a time, so it's necessary to cycle them in equal proportions to get a full image. The row addressing performs two functions, to select the row group that's both energised and into which data will be clocked. Note that it appears that you can select a row and clock data into it, but that data is held but not transferred to the display until you toggle the latch input even if you change to a different row group. In this way it seems possible (though not yet tried) to build up in the shift register the next image to be displayed a small amount at a time to maintain a good refresh rate, and then transfer it to the display by latching.
The shift register is not cleared by the latching operation so you can add to a row and latch again. To clear a row it's necessary to send 288 'black' pixels to it.
A suitable ribbon cable is part CN16494 from CPC at around £3. http://cpc.farnell.com/1/1/110292-amphenol-fc16600-0-lead-2-54mm-f-f-600mm-16way.html
Simple Arduino code example:
digitalWrite(pinOE, LOW); // select first row digitalWrite(pinA, LOW); digitalWrite(pinB, LOW); digitalWrite(pinC, LOW); For(int i=0; i<288; i++) { // set high or low value for each pixel digitalWrite(pinR1, R); digitalWrite(pinG1, G); digitalWrite(pinB1, B); // pulse the clock line to move this data into the shift register digitalWrite(pinCLK, HIGH); digitalWrite(pinCLK, LOW); } // pulse the latch line to transfer the new data to the display digitalWrite(pinLAT, HIGH; digitalWrite(pinLAT, LOW);
The pixel writing could be made much faster using direct port operations, particularly with a port dedicated to the tile interface - one write with clock low to set the R G B values and the next holding the values with clock high - probably of the order of 50 times faster than the code above.