My switchless rotary encoder number-entry UI, The Wibble Nibble! - Page 1
Forum section: electronics / projects

author: ganzuul
author_rank: Contributor
timestamp: July 20, 2017, 11:02:39 pm
content: This is a scheme to enter large numbers accurately through a very minimal user interface. The key to its operation is a wiggle-motion which produces the sequence of bits 0101, which you normally don't produce when turning the dial. It's a tiny wiggle; a wibble, which produces half a byte; a nibble!Each subsequent 01 reproduces the effect of selecting a lower decade in the number sequence, which is underscored. Each 10 clicks clockwise selects a higher decade, since you generally don't want to scroll through the sequence 0 to 9 multiple times. This also means you can move the cursor past numbers without affecting them. You can enter 01 to increment the counter in the corner towards the next decade without landing on a different number in your desired number sequence since the counter only counts clockwise movement.It's a Work In Progress.(Excuse the noises. Youtube doesn't let you simply mute the audio.)As you can see it takes a little practice to get used to... but there are many paths to entering the value you want and corrections are not difficult to make. I pause when I notice that I had neglected the 4 in the number sequence. I only just got it in a shape where I feel I can show it to other people and I think I can become proficient at using this UI, like how it takes a little getting-used-to a different smartphone OS.Code:https://gist.github.com/ganzuul/dcf744bca43f450f0115bd971b7f5ab7Feel free to copy the design and make derivatives, but please give credit whenever possible and don't try to patent my idea or its derivations! Software wants to be free! If you need guarantees, just contact me and I'll pick a license.Features:* The push-switch in the encoder remains unused, and could be used for accessing a menu or activating on the selected value. This is a major feature!* Light-weight instruments don't need to be pinned down or batted across the desk when you use them!* You can dial counter-clockwise to sweep, and set the step in 10x increments.TO-DO* The counter in the lower-left corner could be inverted, to show what number you'll enter if you keep dialing clockwise to move the cursor to the left.* An optional mode where when dialing counter-clockwise the number acts as a sequence of unrelated numbers instead of taking a count off the position to the left, letting you miss and keep dialing to hit the number you want. This would be incompatible with sweeping.* Separate number into triplets.*Make the wiggle-operand more intuitive, so your hands always know whether to dial 0101 or just 101.

author: Kalvin
author_rank: Super Contributor
timestamp: July 21, 2017, 12:29:41 pm
content: Neat idea! Thanks for sharing.

author: 0xPIT
author_rank: Regular Contributor
timestamp: July 21, 2017, 01:18:30 pm
content: You can also implement something similar for letters.Binary search that you control by rotation, with every letter available in <= 4 operations.< left> righto click-----< >abcdefghijklm nopqrstuvwxyz< o >abcdef  hijklm< > < >abc def hij klm< o > < o > < o > < o >a b c d e f h i j k l mCan be optimized by rearranging the alphabet by language dependent character distribution.

author: T3sl4co1l
author_rank: Super Contributor
timestamp: July 21, 2017, 04:23:35 pm
content: ^ Which, by the way, choosing from a dictionary rather than an alphabet, is how Stephen Hawking speaks.(AFAIK)Tim

author: ganzuul
author_rank: Contributor
timestamp: July 21, 2017, 09:57:25 pm
content: Quote from: Kalvin on July 21, 2017, 12:29:41 pmGlad you like it!Quote from: 0xPIT on July 21, 2017, 01:18:30 pmYes. Now that you point it out, I need to both generalize and simplify my code, and this is the most immediate step in that direction. As I started creating more user feedback to make the system more predictable it became obvious that I have an unnecessary coupling issue. Letters would behave differently, forcing decoupling.In a binary tree I could do two clicks<< >>abc... ...xyzfor selection and keep < > for wiggling out of trouble. As long as you don't need to release and re-grip the dial it should remain ergonomic.Like you say, there's languages and therefore Unicode to consider too. That could mean the glyph tree starts with:<< >>ASCII UTF8I'm not sure how to deal with languages... I know the Hacker's Keyboard on Android suggests variations when you long-press a key.Maybe I could work in registers and commands at the end of the tree, sort of how Reverse Polish Notation does its thing... This is fun to brainstorm!I'll accidentally write an OS at this rate. >.>Quote from: T3sl4co1l on July 21, 2017, 04:23:35 pmThat's really interesting... Someone else mentioned it reminded them of a combination lock for a safe.Perhaps a UI for the IoT-era...? Those things need to be built to the lowest possible cost.

author: xani
author_rank: Frequent Contributor
timestamp: July 23, 2017, 09:08:14 pm
content: Does it have any actual advantage except saving a pin ? It doesn't seem to be faster than normal way of doing it, and you can still do it with one dial, just get encoder with push-option and bind "rotate while pushed" to changing positions

author: ganzuul
author_rank: Contributor
timestamp: July 23, 2017, 10:32:53 pm
content: It's small; minimalist in fact. There might be aesthetic reasons to put it on something the customer looks at; like the UI for the iPod if you remember those. I think you held them in your hand and operated them mostly with your thumb.Dave has complained a few times that lightweight instruments don't stay in place when you push their buttons. You don'thaveto save the pin for the switch. It's just free if you need it.For a system which you only once in a while need to adjust this should not feel too cumbersome. E.g. setting a WiFi password. It won't beat a keyboard or a numpad, but it can be much smaller in size.Fewer components mean higher reliability and lower cost. Alternatively you need fewer top-shelf components.There exists an DIP 8-pin ESP8266 module which thismightwork for. A bottom-dollar wireless combination lock for a door or gate could be an application.I'll be able to tell you more when my (first!) scope arrives in a few days and I try to use this UI with my Si5351 clock gen as budget test gear, which is what I designed it for.