Blinkofant: Unterschied zwischen den Versionen
Legba7 (Diskussion | Beiträge) (→Software: Schnellschusspinbelegung) |
|||
(26 dazwischenliegende Versionen von 7 Benutzern werden nicht angezeigt) | |||
Zeile 1: | Zeile 1: | ||
== WTF == | {| width="100%" | ||
| | |||
== WTF? == | |||
Recently we got [[Blinkofant/LED-Display History|these *huge* LED walls]]. | |||
We disassmbled the monster and now we got ~300 LED panels | |||
Each of the 8*9 pixels consists of 5 LEDs = 360 red LEDs per panel<br /> | |||
300 panels equals 100.000++ LEDs :)<br/> | |||
<br/> | |||
1 panel full on needs 1.15 AMP @12V | |||
<strike>we don't know how to power them yet :)</strike><br/> | |||
<strike> we are probably going to use the trafo we got out of the old displays.<br/>needs drehstrom outputs 140 AMP 12V weights 40kg+</strike><br/> | |||
actually we might use a lot of ATX powersupplies<br/> | |||
There is a mailinglist for the blinkofant project see: blinkofant@lists.metalab.at | |||
== | == Pinout == | ||
* POUT EQU CENTRO ;the leftmost module will be connected to the POUT-port | * POUT EQU CENTRO ;the leftmost module will be connected to the POUT-port | ||
* ATTENTION! The bit positions must not be changed! | * ATTENTION! The bit positions must not be changed! | ||
* 8V, 5V, 12V, GND are not equipped with pins | |||
{| border="1" cellspacing="0" cellpadding="8" width="" style="border-collapse:collapse;" | |||
|+ | |||
| '''pin #''' | |||
{| | | '''function''' | ||
| pin | | '''comments''' | ||
| function | |||
|- | |- | ||
| 1 | | 1 | ||
| data/clock ? comes back out here ( | | data/clock ? comes back out here (Rückleitung Schieberegister) | ||
| wurscht | |||
|- | |- | ||
| 2 | | 2 | ||
| data/clock ? comes back out here ( | | data/clock ? comes back out here (Rückleitung Schieberegister) | ||
| wurscht | |||
|- | |- | ||
| 3 | | 3 | ||
| DatLoad EQU 0 ;data bit for loading data and control data | | DatLoad EQU 0 ;data bit for loading data and control data | ||
| wurscht | |||
|- | |- | ||
| 4 | | 4 | ||
| ClkRing EQU 1 ;clock for shift left the whole line | | ClkRing EQU 1 ;clock for shift left the whole line | ||
| CLOCK !! | |||
|- | |- | ||
| 5 | | 5 | ||
| ClkLoad EQU 2 ;clock for shift left & loading all selected modules | | ClkLoad EQU 2 ;clock for shift left & loading all selected modules | ||
| wurscht | |||
|- | |- | ||
| 6 | | 6 | ||
| ClkBlink EQU 3 ;clock for blinking (0...off, 1...on) | | ClkBlink EQU 3 ;clock for blinking (0...off, 1...on) | ||
| clock for blinking of selected rows | |||
|- | |- | ||
| 7 | | 7 | ||
| ClkSteu EQU 4 ;clock for shift left & load control data from DatLoad | | ClkSteu EQU 4 ;clock for shift left & load control data from DatLoad | ||
| wurscht | |||
|- | |- | ||
| 8 | | 8 | ||
| DatRing EQU 5 ;data bit for loading data during ClkRing | | DatRing EQU 5 ;data bit for loading data during ClkRing | ||
| DATA !! | |||
|- | |- | ||
| 9 | | 9 | ||
| Reset EQU 6 ;clear all control data | | Reset EQU 6 ;clear all control data | ||
| wurscht | |||
|- | |- | ||
| 10 | | 10 | ||
| OnOff EQU 7 ;turn on/off the whole display (0...off, 1...on) | | OnOff EQU 7 ;turn on/off the whole display (0...off, 1...on) | ||
| turns off ALL the | | turns off ALL the LEDs when pulled to ground | ||
|- | |- | ||
|} | |} | ||
On the last Panel of a row the following pins need to be connected on the output side: | |||
pin 1 -> pin 8<br /> | |||
pin 2 -> pin 3 | |||
== Software == | |||
Aktuelle Testfirmware für den Arduino liegt im GIT von 5uper.net ( git clone git@5uper.net:ledmatrix.git ) | |||
Ein clone des git-repos ist auf [https://github.com/parasew/blinkofanten github/parasew] | |||
Es gibt auch eine [http://pastebin.com/7GS76STv für avr-gcc angepasste Version]. | |||
Schnellshusspinbelegung ala enterhaken: | |||
<pre> | |||
| arduino | panel | | |||
|---------+-------| | |||
| gnd | gnd | | |||
| 13 | 4 | | |||
| 11 | 8 | | |||
| 10 | 10 | | |||
|---------+-------| | |||
</pre> | |||
this is the magic: | |||
SPI.begin(); | |||
SPI.setBitOrder(LSBFIRST); | |||
SPI.setDataMode(SPI_MODE0); | |||
SPI.setClockDivider(SPI_CLOCK_DIV128); // biggest divider there is. | |||
... | |||
SPDR = panelData[i]; | |||
while(!(SPSR & (1<<SPIF))); | |||
<pre> | |||
ein panel besteht aus 8*9 pixel (8 spalten mal 9 pixel) | |||
man schiebt 10 bits an daten rein für jede der 8 spalten | |||
9 bits an/aus pro pixel + 1 bit ob diese spalte blinkt | |||
wenn man das blinkybit gesetzt hat kann man auf pin6 eine | |||
clock anlegen die die blinkenrate vorgibt | |||
</pre> | |||
=== Borards === | |||
* ATTINY2313 .. das wird teuer | |||
* Logic IC für puffer und RX ? welche? | |||
* 2x mod8 buchse (rj45) ?! das wird auch teuer.. | |||
* kondensatoren | |||
* eventuell stecker für kabelverbinder zum led modul | |||
|valign="top"| | |||
<center>[[Datei:Albert-Schultz-Eishalle-by-kerky_oe.jpg|center|framed|<small>[[Blinkofant/LED-Display History|Albert Schultz ice arena LED wall]] © [http://www.flickr.com/photos/kerky_oe/5313588854/sizes/n/in/photostream/ kerky_oe]</small>]] </center> | |||
[[Bild:ledmatrix_doku_open.png|thumb|400px|right| 1 modul]] | |||
[[Bild:ledmatrix_chained.png|thumb|400px|right| 4 module chained]] | |||
|} | |||
[[Kategorie:English]] | |||
[[Kategorie:Hauptraum]] | |||
[[Kategorie:Projekte]] |
Aktuelle Version vom 13. August 2013, 18:44 Uhr
WTF?Recently we got these *huge* LED walls. We disassmbled the monster and now we got ~300 LED panels Each of the 8*9 pixels consists of 5 LEDs = 360 red LEDs per panel
Pinout
pin 1 -> pin 8 SoftwareAktuelle Testfirmware für den Arduino liegt im GIT von 5uper.net ( git clone git@5uper.net:ledmatrix.git ) Ein clone des git-repos ist auf github/parasew Es gibt auch eine für avr-gcc angepasste Version. Schnellshusspinbelegung ala enterhaken: | arduino | panel | |---------+-------| | gnd | gnd | | 13 | 4 | | 11 | 8 | | 10 | 10 | |---------+-------| this is the magic: SPI.begin(); SPI.setBitOrder(LSBFIRST); SPI.setDataMode(SPI_MODE0); SPI.setClockDivider(SPI_CLOCK_DIV128); // biggest divider there is. ... SPDR = panelData[i]; while(!(SPSR & (1<<SPIF))); ein panel besteht aus 8*9 pixel (8 spalten mal 9 pixel) man schiebt 10 bits an daten rein für jede der 8 spalten 9 bits an/aus pro pixel + 1 bit ob diese spalte blinkt wenn man das blinkybit gesetzt hat kann man auf pin6 eine clock anlegen die die blinkenrate vorgibt
Borards
|
|