Blinkofant: Unterschied zwischen den Versionen
Legba7 (Diskussion | Beiträge) (→Software: Schnellschusspinbelegung) |
|||
(21 dazwischenliegende Versionen von 7 Benutzern werden nicht angezeigt) | |||
Zeile 1: | Zeile 1: | ||
− | == WTF == | + | {| width="100%" |
+ | | | ||
+ | == WTF? == | ||
− | Recently we got | + | 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 | + | * 8V, 5V, 12V, GND are not equipped with pins |
− | {| border=1 | + | {| border="1" cellspacing="0" cellpadding="8" width="" style="border-collapse:collapse;" |
|+ | |+ | ||
− | | pin | + | | '''pin #''' |
− | | function | + | | '''function''' |
− | | | + | | '''comments''' |
|- | |- | ||
| 1 | | 1 | ||
− | | data/clock ? comes back out here ( | + | | data/clock ? comes back out here (Rückleitung Schieberegister) |
| wurscht | | wurscht | ||
|- | |- | ||
| 2 | | 2 | ||
− | | data/clock ? comes back out here ( | + | | data/clock ? comes back out here (Rückleitung Schieberegister) |
| wurscht | | wurscht | ||
|- | |- | ||
Zeile 39: | Zeile 46: | ||
| 4 | | 4 | ||
| ClkRing EQU 1 ;clock for shift left the whole line | | ClkRing EQU 1 ;clock for shift left the whole line | ||
− | | CLOCK | + | | CLOCK !! |
|- | |- | ||
| 5 | | 5 | ||
Zeile 47: | Zeile 54: | ||
| 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 | ||
Zeile 63: | Zeile 70: | ||
| 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
|
|