Visualizing decimal value, binary encoded by digital outputs of Arduino


The digital outputs 1 – 4 of my Arduino UNO represent the binary value of a decimal number in the range form 0 to 15 (called a "Binary Coded Decimal (BCD)"). e.g. if digital outputs 1 and 4 are HIGH and the second and third are LOW, that would represent the binary value "1001", which in turn represents the decimal value "9".

Now, i want to visualize this decimal value in some way.

My first thought was to build a logical network with four inputs (the values coming out of the four digital outputs of the UNO) and 16 outputs, connected to LEDs. Depending on the coded decimal value, the corresponding output is HIGH / "1" / x Volt and the other ones are LOW / "0" / 0 Volt. e.g. if the four digital outputs of the UNO represent the binary value "1001", so the decimal value „9“, then the 9th output of the network should be HIGH, and its connected LED on and the other outputs should be LOW and their connected LEDs off. The network would be build by AND-, OR and NOT-gates, which in turn would be build with transistors. Now, however, I realized that this approach would be really complicated.

Does anyone have a better idea? I think about an electric component, which implements exactly the functionality of the logical network, described above. Or a two digit LED display, which implements the same functionality, but additionally displays the encoded decimal value.

Please consider, that I only have basic knowledge, skills, and experience in electronic. And further consider, that whatever solution you are offering my, it must be able to implement it with just four digital outputs of the UNO. The other ones are needed for further tasks.

Thanks in advance for any replies!

Why don't you simply let the Arduino do exactly that?

And if you don't have enough pins, use a second Arduino (Nano's and Pro Mini's are dirt cheap) or a cheap pin expander or even a I2C display.

How about two 50-cent shift registers connected to two 7-segment displays, use 3 Uno pins and shift out what ever data you want displayed? Each can show 0,1,2,3,4,5,6,7,8,9,A,b,C,d,E,F.
Or you can have 8 LEDs on shift register, each group of 4 can represent your 0b0000 to 0b1111 data if you feel like interpreting binary all the time. I find hex much quicker.

If you need more digits, can use a MAX7219 and up to 8 7-segment displays for even more info.

Seems like there's already a chip for that, BCD in -> 1 of 10 out, (74xx ?).

What's easier - seeing a number, or counting which LED out of 10 is turned on? I'd rather just see a number.

To add to that, there are BCD to 7-segment drivers like a 4511.