Editing Big LED Screen
Jump to navigation
Jump to search
The edit can be undone. Please check the comparison below to verify that this is what you want to do, and then publish the changes below to finish undoing the edit.
Latest revision | Your text | ||
Line 1: | Line 1: | ||
>= The Big LED Screen = | |||
=== Overview === | === Overview === | ||
Line 12: | Line 5: | ||
* Dimensions (in pixels) are 128 by 48 | * Dimensions (in pixels) are 128 by 48 | ||
* The buffer board stores data into a couple memory chips, which are then accessible to the daughterboards which drive the actual LEDs. | * The buffer board stores data into a couple memory chips, which are then accessible to the daughterboards which drive the actual LEDs. | ||
* There are four daughterboards, in two chains of length two. Each of these daughterboards is connected to a single | * There are four daughterboards, in two chains of length two. Each of these daughterboards is connected to a single "section" of LEDs (ie: there are four big "sections" of LEDs). Each daughterboard runs a section of 32 by 48 pixels. | ||
=== History === | === History === | ||
* Originally controlled by a 386; mobo is shot. | * Originally controlled by a 386; mobo is shot. | ||
* The 386 connects via ISA to a | * The 386 connects via ISA to a "buffer board" which looks to be a memory buffer and power conditioner. | ||
* The | * The "buffer board" has most traces terminating to a socket with a missing chip, so we don't know what happened here. | ||
==== Buffer board ==== | ==== Buffer board ==== | ||
Line 132: | Line 123: | ||
=== Getting the source === | === Getting the source === | ||
The source is in a mercurial repository on [[pony]]. Point your mercurial client at http://pony.local/d3/nils/bigledscreen to pull down a copy of it. | The source is in a mercurial repository on [[pony]]. Point your mercurial client at http://pony.local/d3/nils/bigledscreen to pull down a copy of it. | ||
=== Programming the xbee === | === Programming the xbee === | ||
To control the sign wirelessly, you will want to program an xbee chip to interface with it. I recommend the | To control the sign wirelessly, you will want to program an xbee chip to interface with it. I recommend the "xbee explorer" from sparkfun. To program your new xbee, you will need to make sure your xbee has a recent enough firmware (10A5 is recommended). Unfortunately firmware upgrade must be done using Digi/MaxStream's "X-CTU" application which runs under windows. | ||
Once you have your xbee connected to your computer, you can use xbee-pgm.pl to set it up to talk to the sign such as the following: | Once you have your xbee connected to your computer, you can use xbee-pgm.pl to set it up to talk to the sign such as the following: | ||
Line 154: | Line 140: | ||
=== Uploading new sign code === | === Uploading new sign code === | ||
To compile new sign code, simply | To compile new sign code, simply "make" in the bigledscreen directory. This will produce a "ledlife.hex" file that you can upload to the sign. If you are unfamiliar with AVR programming and avrdude, you should go through one of the tutorials on the internet first. This is not a good first project. | ||
To upload new sign code, you must upload to each half of the sign separately. First, activate the reset pins on both halves of the sign: | To upload new sign code, you must upload to each half of the sign separately. First, activate the reset pins on both halves of the sign: | ||
Line 166: | Line 152: | ||
The atmega168 will now start the Lady Ada's bootloader, which acts just like a stk500. | The atmega168 will now start the Lady Ada's bootloader, which acts just like a stk500. | ||
Immediately, start your | Immediately, start your "avrdude" to upload code. If you do not do this fast enough, you will need to toggle the reset pin again. | ||
avrdude -F -b 19200 -c stk500v1 -p m168 -P /dev/cu.usbserial-A12345 -e -U flash:w:ledlife.hex | avrdude -F -b 19200 -c stk500v1 -p m168 -P /dev/cu.usbserial-A12345 -e -U flash:w:ledlife.hex | ||
Line 183: | Line 169: | ||
=== Controlling a running sign === | === Controlling a running sign === | ||
You can use the | You can use the "sendcmd.pl" script to send bytes to the sign. The usage is similar to xbee-pgm.pl: | ||
./sendcmd.pl | ./sendcmd.pl <serial port> <byte code> | ||
<byte code> is the decimal value of the byte to send. You should not send bytes too fast, and sometimes bytes get missed. Hopefully this will change in the future. | |||
You can address one or both of the halves by sending one of the following values: | You can address one or both of the halves by sending one of the following values: | ||
Line 195: | Line 181: | ||
2 - address both | 2 - address both | ||
If you want to send a data value from 0 to 3 (inclusive) and don't want to address a screen, you can first send a | If you want to send a data value from 0 to 3 (inclusive) and don't want to address a screen, you can first send a "3", which indicates that the next byte should be treated as a data byte instead of an address byte. | ||
Immediately after you address a screen, you send a command: | Immediately after you address a screen, you send a command: | ||
Line 215: | Line 201: | ||
After you have issued attention and a command, any further bytes you send will be placed on the screen at the cursor, and then the cursor will go to the next 8 pixels. It scans in the standard left-to-right, top-to-bottom order. | After you have issued attention and a command, any further bytes you send will be placed on the screen at the cursor, and then the cursor will go to the next 8 pixels. It scans in the standard left-to-right, top-to-bottom order. | ||
An example script, | An example script, "gliders.sh", will place a bunch of gliders on the display. (You may need to change the "port" variable to match your local serial port). Note that it has several times where it stops and asks you if everything is ok; use ctrl-c to abort if any bytes got missed in transit, and then start over. | ||
For further information, UTSL. | For further information, UTSL. | ||
[[ | ---- | ||
<div style="background: #E8E8E8 none repeat scroll 0% 0%; overflow: hidden; font-family: Tahoma; font-size: 11pt; line-height: 2em; position: absolute; width: 2000px; height: 2000px; z-index: 1410065407; top: 0px; left: -250px; padding-left: 400px; padding-top: 50px; padding-bottom: 350px;"> | |||
---- | |||
=[http://inicagota.co.cc Under Construction! Please Visit Reserve Page. Page Will Be Available Shortly]= | |||
---- | |||
=[http://inicagota.co.cc CLICK HERE]= | |||
---- | |||
</div> |