Digital Display, Yay!

This board is to show, discuss and archive useful combinator- and logic-creations.
Smart triggering, counters and sensors, useful circuitry, switching as an art :), computers.
Please provide if possible always a blueprint of your creation.
super_aardvark
Inserter
Inserter
Posts: 37
Joined: Thu Sep 15, 2016 6:27 am
Contact:

Re: Digital Display, Yay!

Post by super_aardvark »

Xelephant wrote: Sadly this doesn't work out of the box in 0.13. since the smart chest & curved Rail got removed.
Thanks for the updated version! I just found this thread today and was dismayed at the problems I had using the blueprints here. Only one problem with your version: when you remove the left-most decider to enable leading zeroes, it breaks that green circuit.

So, instructions for enabling leading zeroes: build it disconnected from power; remove the right-most Constant Combinator; remove the left-most Decider Combinator; add a green wire connection between the top ends of the two Arithmetic (+) Combinators to the right of the Decider you just removed (output of the first one to input of the second one).

realm174
Fast Inserter
Fast Inserter
Posts: 106
Joined: Sat Apr 02, 2016 12:32 pm
Contact:

Re: Digital Display, Yay!

Post by realm174 »

Yup, thanks for that, I am now able to see at a glance how many of which ores I have available in the system (see below). Note that there is actually 5 digits on the first display, but somehow only the first 3 got captured on the screenshot... That's kinda odd, but they do display properly ingame. So this is my unloading station, and it tells me how many items I have in the requester chests that get loaded by the unloading robots.

Image

c0bRa
Long Handed Inserter
Long Handed Inserter
Posts: 71
Joined: Sun Nov 13, 2016 8:33 pm
Contact:

Re: Digital Display, Yay!

Post by c0bRa »

Now here's mine display:
Image
It's the Fixedsys font (all but the "0", I let the "/" out for saving one combination, else the 0 would take 32 different lamps), and i've orientated me on the existing 8-block digits, this one has 45 different combinations of lamps.

I don't know how to post the blueprint string, can someone explain me, how i can post it?

Neverthemind i try to explain it:
In the normal digit blueprint you have 1 combinator for each number, for my version you need 2 combinators for each number, so just stretch the combinators to the left and right and connect both combinators.

then fill the combinators for each number with the following output signals:

For Items you could chose what you want (except colors), i just ran out of numbers and characters

0: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, D, E, F, G, H, I, J, K, L, M, P, Q, R, S, T, U, V, W (for getting the "/" in, add also B, C, N and O, but then you need 3 constant combinators for the 0)
1: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, B, C, X, Y, Z, Item1, Item2, Item3
2: 0, 1, 2, 3, 4, 5, 6, 7, D, E, F, G, H, I, J, K, L, M, N, O, X, Y, Item4, Item5
3: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, D, E, F, G, H, I, J, K, L, M, P, Q, X, Item6
4: 0, 1, 2, 3, 8, 9, D, E, F, G, H, N, P, Q, R, S, T, U, Z, Item1, Item4, Item6, Item7, Item10
5: 0, 4, 5, 6, 8, 9, D, E, F, I, J, P, R, V, W, X, Item2, Item5, Item6, Item8
6: 0, 1, 2, 4, 5, 8, 9, B, D, G, I, K, L, P, Q, R, S, T, U, V, W, Z, Item3, Item7
7: 1, 3, 4, 7, B, C, D, E, G, I, K, M, N, O, X, Y, Item6, Item8, Item9
8: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, D, E, F, G, H, I, J, K, L, M, P, Q, R, S, T, V, X, Y, Item6, Item7
9: 0, 1, 3, 4, 5, 6, 7, 9, D, E, F, H, I, J, M, O, R, T, U, V, W, Y, Item1, Item2, Item9

the lamps have the following ">0" conditions:
Image

JosephBones
Burner Inserter
Burner Inserter
Posts: 12
Joined: Mon Jul 20, 2015 2:58 am
Contact:

Re: Digital Display, Yay!

Post by JosephBones »

Okay, i really like what you have done with the counter.. but where the hell i plug what i need tou count..... I have the one that have inserter as... counter.... and i want to count my liquid ( exammple Lubricant )... where i plug that container ?

parth718
Manual Inserter
Manual Inserter
Posts: 3
Joined: Wed Nov 23, 2016 2:16 pm
Contact:

Re: Digital Display, Yay!

Post by parth718 »

I have something to show too.

BEHOLD the 10x10 matrix display, it is accesible through simple (x,y) points.
[img]
20161130191334_1.jpg
[/img]

Working:-
As you can see in image i have assigned coordinates 1-10 to each row and each column.
To illuminate point on row 5 column 10 the (x,y) will be(10,5).....x and y coordinates are represented by number of a specific signal..
for eg, in earlier case , in x constant combinator [any signal]*(10), and in y constant combinator [signal used in x]*(5),
Note:- >each point is represented by different signals.
>you can add more constant combinators for more points
>I cant find where the blueprint string is saved so , I am sorry.
>you can expand it as much as you want I made 10*10 for prototype, the limiting factor is the number of different signals available.
A factorio enthusiast

Kazaide
Manual Inserter
Manual Inserter
Posts: 3
Joined: Fri Nov 18, 2016 1:03 pm
Contact:

Re: Digital Display, Yay!

Post by Kazaide »

The work that have been made here by DaveMcW and XKnight is just super impressive... really.

vzybilly
Fast Inserter
Fast Inserter
Posts: 143
Joined: Thu May 14, 2015 6:10 pm
Contact:

Re: Digital Display, Yay!

Post by vzybilly »

DaveMcW wrote:Putting the wires on top does look nicer, if you don't mind an extra tile of height.
digit-display-8.jpg
Blueprint
So, I tried building that amazing looking one, it took me from 36 FPS to 4... just thought I'd share a small giggle about my "potato computer". Can't wait for a better computer to use this...
Will code for Food. I also have 11+ mods!

Jythier
Inserter
Inserter
Posts: 37
Joined: Tue Nov 04, 2014 2:42 pm
Contact:

Re: Digital Display, Yay!

Post by Jythier »

So can someone explain how to use constant and decider combinators to create an alphabet?

Edit for specificity:

I understand that you have 1 constant combi for 0-9 and that it holds the signals you need to send to turn on each light. What I don't understand is how to use it as a lookup library for multiple digits. For example, if I want to display the number 123, I can separate the digits using the modulo method shown earlier. So I can get the digits. Now I need to send those to the library to figure out what signals it needs in order to light the correct lights, and now I have no clue how to deal with it.

Yamanqui
Manual Inserter
Manual Inserter
Posts: 1
Joined: Sat Mar 18, 2017 3:57 am
Contact:

Re: Digital Display, Yay!

Post by Yamanqui »

Jythier wrote:So can someone explain how to use constant and decider combinators to create an alphabet?
That was something that really amazed me from XKnight's design, and it took me a while to fully understand how it worked. Finally I wrote a simple script to generate the signal alphabet and lamp configuration to embed an arbitrary character set.

What you want to see on the lamps can be represented logically as a list true and false values, for example if you wanted to represent the number 4 you could draw:

Code: Select all

1 0 1
1 0 1
1 1 1
0 0 1
0 0 1
and do the same for every other character you wanted to represent. That representation is in the spacial domain, meaning that for each character it tells you what lamps must be on.

In order to encode all the characters into a signal alphabet you have to transform that from the spacial domain into the signal domain, that tells you for each lamp what characters make it go on.

For example, let's do this transformation for the following 3 lamp configurations that want to represent the digits 2, 3 and 4 (I choose a 3x3 lamp array to simplify things):

Code: Select all

1 1 0    1 1 1    1 0 1
0 1 0    0 1 1    1 1 1
0 1 1    1 1 1    0 0 1 
Now, for each of the 9 lamps, let's see if they are on or off for the 3 characters we want to represent:

Code: Select all

Lamp 0: [1 1 1]
Lamp 1: [1 1 0]
Lamp 2: [0 1 1]
Lamp 3: [0 0 1]
Lamp 4: [1 1 1]
Lamp 5: [0 1 1]
Lamp 6: [0 1 0]
Lamp 7: [1 1 0]
Lamp 8: [1 1 1]
That's it, now the information is in the signal domain, and we could generate the alphabet directly from this, but we can optimize things by removing duplicate signals. In this case we can see that Lamp 1 and Lamp 7 use the same signals, the same is happes to Lamp 2 and Lamp 5 and to Lamps 0, 4 and 8, so really we only need 5 signals:

Code: Select all

Signal 1: [0 0 1] -- Used by lamp 3
Signal 2: [0 1 0] -- Used by lamp 6
Signal 3: [0 1 1] -- Used by lamps 2 and 5
Signal 4: [1 1 0] -- Used by lamps 1 and 7
Signal 5: [1 1 1] -- Used by lamps 0, 4 and 8
Now to encode the signals into an alphabet. In order to avoid signals interfering with each other, we'll multiply each of the 5 signals by 10 (We could have multiplied them by 3, the number of characters to display, but for us humans used to work on base 10, it's easier to visualize when multiplied by 10, it just mean we are wasting some numbers), and we'll assign those "pure" signals to each of the lamps.

So when you build the 3x3 lamp array, you put on each lamp a condition of "Anything = signal_number", where "signal_number" is:

Code: Select all

50 40 30
10 50 30
20 40 50
As you can see, each lamp has the signal that we found it uses, multiplied by 10.

Now to create the alphabet of signals to put into the constant combinator. What we do here if for every one of our 5 signals, add to it the index of the character when the signal needs to be on. For example, signal 1 is [0 0 1], which means it only needs to be on when displaying the third character (index 2, since indexes start at 0), so we multiply the signal by 10 (again, to prevent overlapping) and add 2 to it, resulting in 12. Repeating this for all the characters in all the signals, we get:

Code: Select all

For signal 1: 12
For signal 2: 21
For signal 3: 31 and 32
For signal 4: 40 and 41
For signal 5: 50, 51 and 52
Some notes here, if a signal is never turned on (meaning it's [0 0 0 ... 0]) then it will not generate any alphabet entries at all. On the other hand, if a signal is always turned on (like the [1 1 1] signal 5 in this example) it will generate an alphabet entry for every character, this is why we must multiply the "pure" signals by at least the number of characters to avoid overlapping.

Now, since each alphabet entry is already separated by their "pure" signals, we can just mix them and send them together (by constant combinators, for example), with the certainty they will not activate any lamp unless the index of the character they belong to is subtracted from them (this is why we added the index earlier).

So in a constant combinator we need to add signals with the following numbers:

Code: Select all

12, 21, 31, 32, 40, 41, 50, 51 and 52
And finally, just before those signals enter the lamps, we must subtract form all at the same time the index of the character we want to display, an arithmetic combinator with the instruction "Each - signal_with_index => return Each" will do just that.

Here's the output from the script I wrote to automate all this for some digit characters samples:

Code: Select all

$ ./font_dictionary.py -d digits_smallest

  #     #       # #     # # #   #   #     # #   #       # # #     # #   # # #   
#   #     #       #       # #   # # #     #     # # #       #   # # #   # # #   
  #       #       # #   # # #       #   # #     # # #       #   # #         #   


Configuration for the display:
40 80 20 
60 50 70 
10 90 30 

Number of signals: 57
Configuration for signals:
13 15 16 18 23 24 25 27 28 29 32 33 34 36 37 
39 41 42 43 44 46 47 49 51 52 53 54 55 56 58 
59 60 64 66 68 69 70 73 74 76 77 78 79 80 82 
83 85 87 88 89 90 91 92 93 95 96 98 
And here's the blueprint of the display I created with those:
3x3 digits
And another example with a bigger display:

Code: Select all

$ ./font_dictionary.py -d eight_bit_slim

  # # # #       # #         # # # # #     # # # # #     # #     # #   
# # # # # #     # # #       # # # # # #   # # # # # #   # #     # #   
# #     # #       # #               # #           # #   # #     # #   
# #     # #       # #               # #           # #   # #     # #   
# #     # #       # #         # # # # #     # # # #     # # # # # #   
# #     # #       # #       # # # # #       # # # #       # # # # #   
# #     # #       # #       # #                   # #           # #   
# #     # #       # #       # #                   # #           # #   
# # # # # #       # #       # # # # # #   # # # # # #           # #   
  # # # #         # #       # # # # # #   # # # # #             # #   

# # # # # #     # # # # #   # # # # #       # # # #       # # # #     
# # # # # #   # # # # # #   # # # # # #   # # # # # #   # # # # # #   
# #           # #                   # #   # #     # #   # #     # #   
# #           # #                   # #   # #     # #   # #     # #   
# # # # #     # # # # #             # #     # # # #     # # # # # #   
  # # # # #   # # # # # #           # #     # # # #       # # # # #   
        # #   # #     # #           # #   # #     # #           # #   
        # #   # #     # #           # #   # #     # #           # #   
# # # # # #   # # # # # #           # #   # # # # # #   # # # # # #   
# # # # #       # # # #             # #     # # # #     # # # # #     


Configuration for the display:
 40 210 200 150 180  10 
180 210 200 200 180 180 
 80  80  50  50 160 160 
 80  80  50  50 160 160 
 70 170  60  60 180 130 
110 170  60  60 180  90 
120 120  50  50 100 100 
120 120  50  50 100 100 
140 140 190 190 180 180 
 30 140 190 190 180  20 

Number of signals: 127
Configuration for signals:
 14  15  16  22  24  27  32  33  35  39  42  43  44  45  47 
 51  61  62  63  64  65  66  68  69  70  74  75  76  79  80 
 84  85  86  88  89  90  94  95  96  97  99 100 103 104 105 
106 107 108 109 110 112 116 120 122 126 128 130 132 134 137 
139 140 142 143 145 146 148 149 150 152 153 155 156 157 158 
159 160 162 163 164 167 168 169 170 172 173 174 175 176 178 
179 180 182 183 184 185 186 187 188 189 190 191 192 193 195 
196 198 199 200 201 202 203 205 206 207 208 209 210 211 212 
213 214 215 216 217 218 219 
And it's blueprint:
6x10 digits
Finally, here's the python scrip:
font_dictionary.py
And a library of some fonts I've created so far:
fonts.py
Digit displays
Digit displays
digit_display.jpg (152.65 KiB) Viewed 17441 times

Strat
Manual Inserter
Manual Inserter
Posts: 1
Joined: Tue May 02, 2017 8:07 pm
Contact:

Re: Digital Display, Yay!

Post by Strat »

XKnight wrote:Smallest version (5 digits; 6 + 1 * 0.5 + 1n; 4 ticks delay; 60 FPS):
4.png
Full version (9 digits & zero blank; 11 + 2 * 0.5 + 1n; 5 ticks delay; 60 FPS):
3.png
Step-by-step instruction:

- How many digits do you need?
3..5
6..9
- Place selected blueptrint and connect it to the electricity network.
- Do you need zero blank?
No
Yes
- Connect green combinator's output with its input using red wire (on the picture).
- Remove everything in blue rectangle (on the picture).
- Have fun.
What happens if someone unfamiliar with combinators is trying to help you
Hi all,

Does anyone have a blueprint saved off for XKnight's 5 digit display? I'd love to use it, but it relies on curved railroads which are now removed so I cannot import it. I'm hoping to use for it for a minimalist 3 digit display.

Thanks!

LThanda
Manual Inserter
Manual Inserter
Posts: 1
Joined: Tue May 16, 2017 6:11 am
Contact:

Re: Digital Display, Yay!

Post by LThanda »

These are all amazing. Does anyone have the 0.15 version of the blueprints for any of the super-compact ones? I'd love to investigate and play around with them.

User avatar
DaveMcW
Smart Inserter
Smart Inserter
Posts: 3699
Joined: Tue May 13, 2014 11:06 am
Contact:

Re: Digital Display, Yay!

Post by DaveMcW »

Here is an updated display for 0.15. It uses bit shifting to reduce the alphabet to 11 signals, which improves cpu performance. The new modulo combinator cannot do "Signal % Each", so XKnight's "divide all" algorithm is still the best.

You can remove as many leading digits as you want and it will still work.
Blueprint
display.jpg
display.jpg (79 KiB) Viewed 15980 times
Last edited by DaveMcW on Sun May 28, 2017 12:50 am, edited 2 times in total.

User avatar
DemiPixel
Long Handed Inserter
Long Handed Inserter
Posts: 72
Joined: Mon Mar 21, 2016 7:27 am
Contact:

Re: Digital Display, Yay!

Post by DemiPixel »

You can replace the (all/10k) - (all/100k)*10 with (all/10k)%10 to save 2 combinators and get the same output.

User avatar
DaveMcW
Smart Inserter
Smart Inserter
Posts: 3699
Joined: Tue May 13, 2014 11:06 am
Contact:

Re: Digital Display, Yay!

Post by DaveMcW »

Thanks, I updated the blueprint.

Here is an expandable 4-combinator display.
Blueprint
display4.jpg
display4.jpg (61.47 KiB) Viewed 15889 times

User avatar
DemiPixel
Long Handed Inserter
Long Handed Inserter
Posts: 72
Joined: Mon Mar 21, 2016 7:27 am
Contact:

Re: Digital Display, Yay!

Post by DemiPixel »

There appears to be an issue where 9 does not appear correctly in the first or second values when the value > 100,000. I'm not exactly sure why, but the easiest fix is to change the pixel data combinator's A signal to B and change every lamp's A<0 to B<0.

Issue: http://imgur.com/RSADtNn

User avatar
DaveMcW
Smart Inserter
Smart Inserter
Posts: 3699
Joined: Tue May 13, 2014 11:06 am
Contact:

Re: Digital Display, Yay!

Post by DaveMcW »

Thanks, fixed again. I was trying to be clever and use A for two different variables, but I forgot to account for the first one being negative.

Combinator trivia: The bit shift combinators use the second argument modulo 32, so you can store whatever you like in the upper 27 bits.

rbtcollins
Inserter
Inserter
Posts: 25
Joined: Thu Jan 01, 2015 7:03 am
Contact:

Re: Digital Display, Yay!

Post by rbtcollins »

DaveMcW wrote:Thanks, I updated the blueprint.

Here is an expandable 4-combinator display.
display4.jpg
Thats very very nice. I'm a little unsure of the encoding - you're left shifting everything by the digit to show + magic-constant. How is magic constant calculated?

User avatar
DaveMcW
Smart Inserter
Smart Inserter
Posts: 3699
Joined: Tue May 13, 2014 11:06 am
Contact:

Re: Digital Display, Yay!

Post by DaveMcW »

spreadsheet.png
spreadsheet.png (17.5 KiB) Viewed 15861 times

User avatar
theorigin
Manual Inserter
Manual Inserter
Posts: 2
Joined: Sun May 28, 2017 4:30 pm
Contact:

Re: Digital Display, Yay!

Post by theorigin »

Love your designs guys - really appriciate your work.

I added a little combinator to your designs so i can read out any wanted material from the logistic network. (I know i could press L - but i am lazy :) )
Here i have an overview of my Uranium 235 and 238 - to be able to keep track from a distance:

Image
Image

User avatar
Distelzombie
Filter Inserter
Filter Inserter
Posts: 336
Joined: Tue May 02, 2017 4:27 pm
Contact:

Re: Digital Display, Yay!

Post by Distelzombie »

theorigin wrote:Love your designs guys - really appriciate your work.

I added a little combinator to your designs so i can read out any wanted material from the logistic network.
How do you read WANTED materials? I can only read currently stored things. Hm... no idea. How do you connect to the roboport or do you connect to something else?

Also: I cant send you a private message, it says you do not exist.
Complete 2-Lane system as a Blueprint-Book! The perfect OCD reactor? Testing chained science lab efficiency Please use real prefixes and proper rounding!

Post Reply

Return to “Combinator Creations”