Anonymous

LED tiles V2: Difference between revisions

From London Hackspace Wiki
Line 44: Line 44:
== Arduino ==  
== Arduino ==  
Can be driven with an Arduino or Teensy. The data pins can be driven directly with 3.3V and the panel fully on pulls about 7 amps @ 5v.
Can be driven with an Arduino or Teensy. The data pins can be driven directly with 3.3V and the panel fully on pulls about 7 amps @ 5v.
=== Coding ===
The serial data sent to D1 & D2 needs to be sent in 3 x 16 bit B,G,R frames, 64 times per row (i.e. one row is 384 bits) then this is latched, and then the output is enabled.
<pre>
  BBBBBBBB BBBBBBBB GGGGGGGG GGGGGGGG RRRRRRRR RRRRRRR | BBBBBBBB BBBBBBBB GGGGGGGG GGGGGGGG RRRRRRRR RRRRRRR | BBBBBBBB BBBBBBBB GGGGGGGG GGGGGGGG RRRRRRRR RRRRRRR ... etc .. x 384 bits
</pre>
There are two 'banks'; the top 8 rows and bottom 8 rows. There are loaded with data using two different data in lines, D1 & D2. The data lines are clocked and latched with the same shared clock and latch signals.
In each bank, there are 8 rows. A single stream of 384 bits loads two rows of 2 x 64 LEDs. The address lines A0 & A1 select which row is being loaded from the serial data.
To display a full tile, of all 1024 RGB LEDs, you need to :
# Set OE=HIGH & LAT=LOW
# For each address A0 & A1 = 0x00. 0x01. 0x10. 0x1 :
## Clock 384 bits of data on to D1 & D2, by toggling the CLK pin from LOW to HIGH
## Toggling LAT pin from HIGH to LOW to latch the 384 bits in to the driver chips.
## Toggle the OE pin LOW to turn the LEDs on for that row.
# Clock 4 x 384 bits of data to light every row of LEDs in sequence.
Repeat this very quickly as fast as you can ! :-)
The LEDs are either on or off, there is no brightness control of individual LEDs possible. To mix colours, you need to implement a PWM or BCM waveform with each refresh cycle of the panel.
[[File:LED Panel Bit Stream.png]]


=== Driving four panels ===  
=== Driving four panels ===  
Line 79: Line 104:
|-
|-
|}
|}
=== Coding ===
The serial data sent to D1 & D2 needs to be sent in 3 x 16 bit B,G,R frames, 64 times per row (i.e. one row is 384 bits) then this is latched, and then the output is enabled.
<pre>
  BBBBBBBB BBBBBBBB GGGGGGGG GGGGGGGG RRRRRRRR RRRRRRR | BBBBBBBB BBBBBBBB GGGGGGGG GGGGGGGG RRRRRRRR RRRRRRR | BBBBBBBB BBBBBBBB GGGGGGGG GGGGGGGG RRRRRRRR RRRRRRR ... etc .. x 384 bits
</pre>
There are two 'banks'; the top 8 rows and bottom 8 rows. There are loaded with data using two different data in lines, D1 & D2. The data lines are clocked and latched with the same shared clock and latch signals.
In each bank, there are 8 rows. A single stream of 384 bits loads two rows of 2 x 64 LEDs. The address lines A0 & A1 select which row is being loaded from the serial data.
To display a full tile, of all 1024 RGB LEDs, you need to :
# Set OE=HIGH & LAT=LOW
# For each address A0 & A1 = 0x00. 0x01. 0x10. 0x1 :
## Clock 384 bits of data on to D1 & D2, by toggling the CLK pin from LOW to HIGH
## Toggling LAT pin from HIGH to LOW to latch the 384 bits in to the driver chips.
## Toggle the OE pin LOW to turn the LEDs on for that row.
# Clock 4 x 384 bits of data to light every row of LEDs in sequence.
Repeat this very quickly as fast as you can ! :-)
The LEDs are either on or off, there is no brightness control of individual LEDs possible. To mix colours, you need to implement a PWM or BCM waveform with each refresh cycle of the panel.
[[File:LED Panel Bit Stream.png]]


== Ready made LED Scancards ==  
== Ready made LED Scancards ==