[Project] 14 and 16 Segment Alphanumeric Displays

Status
Not open for further replies.

ZeroGravitas

The Destroyer
1883Fig06.gif
Squeezing the wiring in for a 7 segment (numbers only) display can be tricky enough, although it's one of many things DicemanX has made look easy. So the added complexity of doubling the number of segments in each display really pushes Terraria's wiring capabilities to the limit! Here are my best efforts, by all means post up any improvements you can make.

14 Segments: These allow all capital letters to be clearly displayed and add clarifying embellishments to a couple of the numbers.
Terraria 2015-01-08 16-37-11-64.png Terraria 2015-01-08 16-36-58-23.png
The main difficulty with wiring these is routing to the central (diagonal and vertical) segments, requiring a gap of at least one tile between the enclosing segments. And that's if the wire colours are chosen very carefully! You could probably slim down the width of a display from 16 to the minimum possible 14 tiles width (for a loom of 14 control wires), but it would come at the expense of readability, with bigger (looking) gaps between smaller segments.
14 Seg Display.png
I've used pressure plate rails to store the look-up information for the required segment state changes. This is because they are very simple and have the most compact data storage ratio I know of, in game. Plates can be horizontally adjacent (with alternating wiring) and rail lines can be vertically stacked adjacently too. However, TEdit is pretty much essential for constructing vertically adjacent rails, as each section can need hamming up to ~37 times :sigh: to make it a plain flat piece when there are other rail sections around it in every direction! So it's best to keep a 1 tile row free between each data reading rail.
16 Segments: split the top and bottom outer horizontal segments into 2 halves. This is my best shot at 16 segs. I think it's chunky components 'sexier', but I couldn't find a good wiring to keep all the gaps small, and the one wire too much pushes the width of this unit out even further (to 20 tiles wide).
16 Seg Wiring.png

There is little advantage to this format unless you are intent on displaying lower case letters too. And these are inherently less readable anyway.
16-seg Character Set.gif Reference of all letters and numbers for a 16 seg display.

ZeroGravitas's Minecart World Demonstration:
For compactness I settled upon 14 segment displays for my latest video (to get more than 4 characters on screen at the same time). This demonstration shows that minecarts work ok to uptade the displays with a series of fixed messages. The displays are blanked (ready for the letters on the next row) by running the cart back over the same line. It can run in either direction, as long as the same plates are all hit again
Display operation shown from 48s in.
Gemspark blocks natively turn and an off with just a wiring running through them. I actuated them too to increase the visual effect, boosting the contrast between on and off. Make sure to get the phases of these 2 effects matched together, or they will mostly cancle out and look weak. Also, by selecting a background wall of the right colour, the disabled segments are better hidden. They may then be entirely invisible in map view (making it look neat there at least).

Since I was writing a fairly large message, I thought it easiest to construct a full look-up table of all letters and characters. This allowed me to simply copy-paste the related track section for each letter (in TEdit), to compose the message. If you want to use my wiring layout, you can take a copy of this table from my: "Minecart World" V0.1 download. The wiring order of the segments does not conform to any known standard, I was just happy to be able to connect to them at all! :)

'Cartronics' vs Hoiktronics: A (waist height bottom) hoik run would only be a little quicker, at 60tiles/s compared to 48tiles/s, and would take up more vertical space with far more complex, less accessible construction. However, minecarts are obviously limited to 1, while a hoiktronic approach could run several 'actors' to update displays simultaneously. Hoiktronic reset lines could probably be more compact too, if programming more flexible display outputs. However, I feel that the number of control lines (and physical space!) needed for each letter will probably prove inhibitive to text based output from anything resembling a programmable computer, in Terraria. These may be limited to novelty displays. They can be constructed (at great effort) to hold relatively well hidden messages, since they can only easily be deciphered by running and entering the world. (Currently you can't even see the difference between plates and plain track in TEdit).

Previous Implementations: all credit to 'SlowNick', who made a (single) 16 segment display in Terraria back in 2012, with only one wire colour! it uses lava behind active blocks (no pretty gemspark either) and flashes up letters sequentially (which is something you could do if copy/pasting a series of displays is not an option for you). It uses boulders to change the states, but parallel bird lines trigger the segments shown briefly in his "Keyboard with LCD" vid.
 
Last edited:
That 14 segment + dot display fits perfectly into my theoretical 4 bit computer.
I'd love to see the "HELLO WORLD" program for that! :D
Wow, you and joe are so awesome! So what about cooperative video with you? :D
All our videos are a product of co-operation: sharing ideas and advice + we're all building on the same foundations of inspiration available out there... Our YouTube Channels are linked too though, to be more specific. But you want us to appear in the same video together? Or each build separate parts of the same machine, or such like? I'm afraid I'd just slow things down; I'm more of the unreliable day-dreamer type...
 
@ZeroGravitas
Well, I'm stupid. It won't execute a command for every segment ;)
But here is the simplified code:

IN 0001 //Input
MOV IN, DIS1 //Register for chars 0-12
TYPE
MOV DIS1, VOID //Sends a number to outer space (to find another race)
TEXT+ // "TEXT" means position of the letter pointer. It'll be represented by unary counter for simplicity.
IN 1010
MOV IN, DIS1
TYPE
MOV DIS1, VOID
TEXT+
IN 0011
MOV IN, DIS1
TYPE
MOV DIS1, VOID
TEXT+
IN 0011
MOV IN, DIS1
TYPE
MOV DIS1, VOID
TEXT+
IN 1111
MOV IN, DIS1
TYPE
MOV DIS1, VOID
TEXT+
TYPE
TEXT+
IN 1110
MOV IN, DIS1
IN 1000
MOV IN, DIS2 // Register for chars 16 - 255?
TYPE
MOV DIS1, VOID
MOV DIS2, VOID
TEXT+
IN 1111
MOV IN, DIS1
TYPE
MOV DIS1, VOID
TEXT+
IN 0100
MOV IN, DIS1
IN 1000
MOV IN, DIS2
TYPE
MOV DIS1, VOID
MOV DIS2, VOID
TEXT+
IN 0101
MOV IN, DIS1
TYPE
MOV DIS1, VOID
TEXT+
IN 0010
MOV IN, DIS1
TYPE
MOV DIS1, VOID
 
Last edited:
First a 7-segment display, now 14-16 segment displays, next a working computer, and then world domination is just around the corner :). This is very good work as it paves the way for computers with more complex functions. The 2D compared to 3D in minecraft is going to hurt us though unless the devs introduce some form of "tunneling" one wire under another of the same color, or else introduce many other wire colors. Even 1 extra color would increase compactness significantly.
 
@Telecorpse! Heh. I take it back! Should have said I'd love to see the movie of that program, the book's a little heavy going. :p;) What's the plot summary, loading the segment data 4 bits at a time from memory? Does "4-bits" mean that the instruction list, address space and/or memory register size have to be only 4 bits?
 
@Telecorpse! Heh. I take it back! Should have said I'd love to see the movie of that program, the book's a little heavy going. :p;) What's the plot summary, loading the segment data 4 bits at a time from memory? Does "4-bits" mean that the instruction list, address space and/or memory register size have to be only 4 bits?
Well, I intended it to have 8 command divided into 4 bit task and 4 bit number/address.

This setup enables to have 16 different commands, 16 registers and 4 bits of memory in each register.
 
Last edited:
a 3 by 5 matrix display
First off, I think this is fantastic and totally deservers a thread of it's own! :happy: It's buried in the comments here and this thread isn't titled to include matrix displays. So by all means copy paste it out and just leave a place-holder link in the comment space above this, or whatever. More people are likely to see it then, etc. Secondly, sorry it's taken me quite a while to reply here.
2^15 output possibilities
Someone whould totally some up with a 32768 character alphabet to fully utilise this display space... Might stuggle to make it fully human readable though.:confused:
there is not necessarily a 1 to 1 relationship between a switch attached to a wire and the on/off state of a single block [...] it is necessary to run more than one wire through the peripheral blocks
That's a brave design choice, and a great literal solution that I wish I'd thought of. Have you tried also mapping multiple wires to switches, such that activations of inner blocks double activate the outer block that they route over (hence cancelling out). The aim being a 1 to 1 mapping of switch clicks to block states. Looks like it would make the wiring layout significantly bulkier in the switch area, however...
they are designed to be able to abut top to bottom without merging.
So the bottom panel of switches tessellates with the top panel of a character display directly below... Clever design consideration. Must have taken a fair old bit of trial and error.
With the smaller display and a minecart wiring
Have you built any example text displays, using minecart look-up tables, for example? Presumably you immediately loose all the compactness benefits, needing at least 15 tiles width for all the pressure plate track spaces. As you say.

You could perhaps have a minecart line above as well as below, for a two-pass print-out. But ultimately, driving the display this way prevents it from being used in a truly dynamic fashion (as with a computer). Even the complexity needed to look-up merely the numbers 0-9 takes up a lot of space in comparison to the display itself, which is a shame. There's just no compact way to multiplex; the more complex the functionality, the more space it needs.

But great effort in the character design, adding in punctuation and mathematical operators too! I guess you could reverse the corner slope angles if you limited the display use to just numbers, no letters, right? Which might make some of the digits slightly more readable. Also, did you try using actuators in addition to the gemspark blocks? I note that some of your displays look like the blocks have been 'broken up' in a similar way as I'd expect with this, where adjacent blocks are rendered as if isolated. I wonder if this makes the characters more reader, or less so (with too much distracting detail)?
 
Status
Not open for further replies.
Back
Top Bottom