How to Display Multiple Digital Parameters

Started by Ripthorn, September 19, 2019, 01:19:39 PM

Previous topic - Next topic

Ripthorn

Hey folks, I'm working on a project with four digitally controlled parameters (arbitrary at this point) and am trying to come up with an elegant way of showing each parameter's value. Each parameter will have an encoder, so I thought maybe a light ring around it, but the commercially available light rings are all too big. I want to put this in a 125B with the pots arranged similar to a Timmy, etc. So what do you think? I've thought of LED bar arrays, an LED or OLED screen with the value for each in the four corners, and the LED ring. I guess there is the board mounted LED option, but I'm not a fan of trying to hand solder SMD LED's and through-hole LED's seem like a pain. What other ideas do you have, oh wise ones?
Exact science is not an exact science - Nikola Tesla in The Prestige
https://scientificguitarist.wixsite.com/home

Ben N

I have no answer, but I am eager to hear one.
  • SUPPORTER

ElectricDruid

I don't know the answer either, but I've thought about the problem myself a good deal.

LED rings of whatever type have a resolution problem - you can get maybe 31 LEDs around 300 degrees, giving 32 values (including all off) for a 5-bit value across the range of a normal pot, and 15-16 is more common (so 4-bit only). You could add a few more if you extend to 360 degrees, but you're still only going to be looking at a display resolution under 6-bits. Not exactly detailed, although it *might* do for pedals (there were some 1980's synths did worse - Korg Poly61, I'm looking at you...).
But we can easily have better resolution than that from our encoders, and also from whatever we're controlling, so it seems like a waste. Even MIDI is 7-bit values, and that's over 30 years old, so we should be aiming at that at least, surely?!
Then again, do we need to display the full resolution that we're using? Would a 5-bit display of an 8-bit value actually be enough? Or could we use the unused lower bits of our value to provide a basic PWM brightness to the LEDs? This is perhaps worth thinking about:
Say we've got 8-bit values. We have an LED ring with 31 LEDs. The upper 5-bits of the value tell us which LED is on, and 00000 is  "No LED is on". The lower 3-bits of the value give us a simple 0-7 brightness value for "the next LED up". So as you turn the control up, you can see the next LED get brighter and brighter until it reaches fully-on and then the next one after that starts to brighten. Like this, we squeeze more resolution out of the available pixels.

Of course, if you move to alphanumeric displays, you can have arbitrary precision values - it'd be easy to display four 10-bit (0-1023) or 12-bit (0-4095) values on a 2 x 16 display. But that's not the problem at that point - rather the problem comes from the limited resolution of the encoder to *set* such values. I did some experiments with a 24-click encoder, trying to set a 0-1023 value. This is difficult because if you go for "+1 click = +1 increment" you get nowhere fast - the full range needs over forty rotations of the encoder! Argh! So I tried using the speed of the changes of the encoder to change the size of the increment provided (so turning fast jumps lots of values, and turning slowly goes up in small increments or single units). Despite trying several different "reaction curves" I was never able to find anything that felt remotely "comfortable" or enabled me to find a specific value quickly (say you want 784 - how long does it take to get there exactly?). I felt like it should be possible, but I didn't manage it, so it got back-burnered for the time being.

Other things I've considered include using colour rather than intensity to indicate value (like the 24-bit colour palette of neopixels, for example) or some mixture of both.

I don't know. I don't regard this as a solved problem yet. A high resolution LED ring of tiny 1.5mm full-colour Neopixels would probably satisfy me, but the cost and software to run such a thing would be a beast, so even that is perhaps not a  genuine solution. Ultimately, more compromises are probably required. What's most important?

Tom



amptramp

If you want to display data from a ten-turn pot:



The advantage of these dials is you don't need any electronics to show what the values are and you can tell what the setting is without having power applied so you can set the pots to the right values before you turn anything on.  I have an RLC bridge that uses one of these.

There is another style where the pot and its readout are contained in one unit whose mounting is almost completely external.  They are expensive new but can be found on surplus equipment:

https://www.bourns.com/docs/product-datasheets/3610.pdf?sfvrsn=a23c9d66_1

and if you want to use thumbwheel switch pots.  Not as expensive as knobpots but easily found on a lot of surplus equipment:

https://www.bourns.com/docs/product-datasheets/3680.pdf?sfvrsn=fda987fa_4

Ripthorn

I was thinking about the intensity approach you were talking about with fewer LED's. Same could be done with an LED bar array. This certainly is an interesting problem. At this point I'm leaning towards something I2C controlled, since that is the only opening I have for my current project, so perhaps on of those little 128x64 OLED displays is the right answer at this point. I have one kicking around that I will need to play with, I suppose. I don't think a 16x2 would be satisfactory for what I'm doing, but I have one of those also. Additionally, those things are much larger than I'm wanting, but they would certainly work for certain applications.

Quote from: ElectricDruid on September 19, 2019, 07:58:11 PM
I don't know the answer either, but I've thought about the problem myself a good deal.

LED rings of whatever type have a resolution problem - you can get maybe 31 LEDs around 300 degrees, giving 32 values (including all off) for a 5-bit value across the range of a normal pot, and 15-16 is more common (so 4-bit only). You could add a few more if you extend to 360 degrees, but you're still only going to be looking at a display resolution under 6-bits. Not exactly detailed, although it *might* do for pedals (there were some 1980's synths did worse - Korg Poly61, I'm looking at you...).
But we can easily have better resolution than that from our encoders, and also from whatever we're controlling, so it seems like a waste. Even MIDI is 7-bit values, and that's over 30 years old, so we should be aiming at that at least, surely?!
Then again, do we need to display the full resolution that we're using? Would a 5-bit display of an 8-bit value actually be enough? Or could we use the unused lower bits of our value to provide a basic PWM brightness to the LEDs? This is perhaps worth thinking about:
Say we've got 8-bit values. We have an LED ring with 31 LEDs. The upper 5-bits of the value tell us which LED is on, and 00000 is  "No LED is on". The lower 3-bits of the value give us a simple 0-7 brightness value for "the next LED up". So as you turn the control up, you can see the next LED get brighter and brighter until it reaches fully-on and then the next one after that starts to brighten. Like this, we squeeze more resolution out of the available pixels.

Of course, if you move to alphanumeric displays, you can have arbitrary precision values - it'd be easy to display four 10-bit (0-1023) or 12-bit (0-4095) values on a 2 x 16 display. But that's not the problem at that point - rather the problem comes from the limited resolution of the encoder to *set* such values. I did some experiments with a 24-click encoder, trying to set a 0-1023 value. This is difficult because if you go for "+1 click = +1 increment" you get nowhere fast - the full range needs over forty rotations of the encoder! Argh! So I tried using the speed of the changes of the encoder to change the size of the increment provided (so turning fast jumps lots of values, and turning slowly goes up in small increments or single units). Despite trying several different "reaction curves" I was never able to find anything that felt remotely "comfortable" or enabled me to find a specific value quickly (say you want 784 - how long does it take to get there exactly?). I felt like it should be possible, but I didn't manage it, so it got back-burnered for the time being.

Other things I've considered include using colour rather than intensity to indicate value (like the 24-bit colour palette of neopixels, for example) or some mixture of both.

I don't know. I don't regard this as a solved problem yet. A high resolution LED ring of tiny 1.5mm full-colour Neopixels would probably satisfy me, but the cost and software to run such a thing would be a beast, so even that is perhaps not a  genuine solution. Ultimately, more compromises are probably required. What's most important?

Tom
Exact science is not an exact science - Nikola Tesla in The Prestige
https://scientificguitarist.wixsite.com/home

Fancy Lime

Well... you can always display digital values with as many LEDs as you have bits, you know? All 8 bit values can be displayed using 8 LEDs. You can use a CD4040B as a display driver, in that case (up to 12 bits). Small caveat: The user needs to be able to read binary. But actually, I don't think that that is a big obstacle in this case. If the LEDs are arranged in a single line or some other easy to understand order, it's fairly intuitive.

Andy
My dry, sweaty foot had become the source of one of the most disturbing cases of chemical-based crime within my home country.

A cider a day keeps the lobster away, bucko!

Ben N

You would think there would be an LED ring solution made to order for rotary controllers and readily available. But no--there was a small company selling such a thing (for a pretty hefty price IIRC) but it disappeared a couple of years ago. This is the key (ok, A key), IMHO, to effective DIY programmable effects, instead of using pots that may or may not indicate the current setting.
  • SUPPORTER

amptramp

You could use a stereo dual pot and have one pot strung between ground and a reference voltage.  The slider of this pot section would be connected to a digital panel voltmeter which can be bought for less than $10, cheap enough that each pot can have one.  The bonus here is that if you have a non-linear pot like an audio taper, it reads the values correctly.

Sooner Boomer

Quote from: Ripthorn on September 19, 2019, 01:19:39 PM
Hey folks, I'm working on a project with four digitally controlled parameters

Think outside the box.  Just because you have a "digital" value doesn't mean "numbers" or some sort of bar graph. 

Using an OLED display, you could display values represented by an icon that varies by color, shape, orientation, size, location on the screen, &c.  For example the color could shift from blue to red as a tone control goes from bass to treble.

The problem is that you could get so wrapped up in programming the display...
Dan of  ̶9̶  only 5 Toes
I'm not getting older, I'm getting "vintage"


MaxPower

Maybe you can score some digital clock displays on the cheap. Or salvage if this is a one-off project.
What lies behind us and what lies before us are tiny matters, compared to what lies within us - Emerson

pruttelherrie

Quote from: PRR on September 20, 2019, 09:17:56 PM
> four digitally controlled parameters

Little LCD display.

https://www.adafruit.com/product/326
https://www.adafruit.com/product/931
https://www.adafruit.com/product/181
https://www.adafruit.com/product/1447
https://www.adafruit.com/product/3502

Using one of these '0.91'' 128x32 IIC I2C Blue OLED LCD Display DIY Module DC3.3V 5V For PIC Arduino' modules
https://www.ebay.com/itm/0-91-128x32-IIC-I2C-Blue-OLED-LCD-Display-DIY-Module-DC3-3V-5V-For-PIC-Arduino/401234789687

You could display 4 round knobs with a couple of primitives (circles, lines, triangles) and  parameter text underneath them.