Dual concentric rotary encoder seen at an angle, with the thin flatted inner shaft standing above the 6mm slotted outer sleeve

Dual Concentric Rotary Encoder with Push Switch - 30 Detents

$18.99 NZD
Skip to product information
SKU: SW-ENC-DUAL

Dual Concentric Rotary Encoder with Push Switch - 30 Detents

$18.99 NZD
Availability:
Order before 12:00pm for same-day dispatch Dispatch 7 days a week, excluding public holidays

NZ Post: 1-2 days urban · 2-4 days rural

Shipping from $5.99 urban / $9.99 rural, or free pick-up in Te Awamutu.

Easy 30-day returns · 12-month warranty

Add $50.00 for Free Urban delivery ($88.00 for Rural)
Urban $50 Rural $88

A dual concentric rotary encoder is two knobs on one spindle. The outer sleeve and the inner shaft turn separately, and each one tells your controller which way it was turned and by how many clicks. This one has 30 clicks a turn on both shafts and a push switch that works when you press the shaft in, so one panel hole gives you two rotary controls and a button.

It is the control behind the COM and NAV frequency knobs on a home flight sim radio panel, where the outer knob changes the whole numbers and the inner knob the decimals. You can also use it for heading and altitude on an autopilot panel, or on a synth to pick a menu item with one knob and set its value with the other. It reads on an Arduino Nano or Mega, an ESP32 or a Pico, and it uses five input pins and a ground. The collar is plain, with no thread or nut, so the solder joints hold it: solder it to a PCB that sits behind your panel and let the shaft come through a hole of about 8mm. Knobs are not included. The inner shaft is 3.5mm with a flat and the outer is a 6mm slotted sleeve, so look for a concentric knob pair made for dual encoders.

Specifications

TypeTwo incremental encoders on one concentric shaft, A/B output from each
Detents30 clicks per turn on each shaft
Pulses per turn15 on each shaft (60 counts with 4x decoding)
Push switchMomentary, press the shaft in, about 0.5mm travel
Terminals8: two rows of 3 (A, C common, B) at 2.5mm pitch, plus 2 short switch terminals
Works with3.3V and 5V boards
Inner shaft3.5mm with a flat, about 25mm long
Outer shaft6mm slotted sleeve, about 15mm long
MountingPCB, by its terminals and frame lugs. Plain collar, no thread or nut
Contact ratingTypically 10mA at 5V DC, signal use
Rotation lifeTypically about 15,000 cycles
In the box1 encoder, no knobs

Datasheets

Wiring & getting started

Wiring diagramArduino Nano
Wiring drawing for the dual concentric encoder and an Arduino Nano. On each row of three terminals the middle one goes to GND. The outer two of one row go to D2 and D3, and the outer two of the other row go to D4 and D5. One short switch terminal goes to D6 and the other to GND.
Tap the drawing to open it full size.
  1. Fit it

    On a PCB, push the eight terminals and the frame lugs through the board. Solder the lugs as well as the terminals, because the lugs take the strain when you turn and press the knobs. For a test before your board is made, solder short wires straight onto the terminals.

  2. Wire the two encoders

    Each row of three long terminals is one encoder. Connect the middle terminal of each row to GND. Connect the two outer terminals of one row to D2 and D3 on a Nano, and the two outer terminals of the other row to D4 and D5. Each row needs its own pair of inputs. If both rows share a pair, only one knob responds. You need no resistors, because the example code and MobiFlight turn on the ones built into the board. On an ESP32, keep off GPIO34 to 39, which have none built in.

  3. Wire the push switch

    The two short terminals are the switch. Both sit on the same side, set in from one row of three and lined up with its end terminals. Connect one to GND and the other to D6. Either way round works.

  4. Find which row is which knob

    Install the Encoder library from the Arduino Library Manager, upload the code below and open the Serial Monitor at 9600 baud. Turn only the inner shaft, the thin one with the flat. If Row 1 counts, the row on D2 and D3 is the inner shaft. If Row 2 counts, it is the row on D4 and D5. Label your wires once you know.

    Example Arduino codeArduino C++
    // Dual encoder test on an Arduino Nano.
    // Row 1: outer pins to D2 and D3, middle pin to GND.
    // Row 2: outer pins to D4 and D5, middle pin to GND.
    // Switch: one short terminal to D6, the other to GND.
    // Needs the Encoder library by Paul Stoffregen (Library Manager).
    #include <Encoder.h>
    
    Encoder row1(2, 3);   // turns on the Nano's built-in resistors for you
    Encoder row2(4, 5);
    long last1 = 0, last2 = 0;
    bool lastPressed = false;
    
    void setup() {
      pinMode(6, INPUT_PULLUP);
      Serial.begin(9600);
      Serial.println("Turn each knob, then press the shaft.");
    }
    
    void loop() {
      long count1 = row1.read() / 2;   // 2 counts per click
      long count2 = row2.read() / 2;
      bool pressed = digitalRead(6) == LOW;
      if (count1 != last1) { last1 = count1; Serial.print("Row 1: "); Serial.println(count1); }
      if (count2 != last2) { last2 = count2; Serial.print("Row 2: "); Serial.println(count2); }
      if (pressed != lastPressed) { lastPressed = pressed; if (pressed) Serial.println("Switch pressed"); delay(20); }
    }
  5. Check it works

    Each click changes the count by 1, and pressing the shaft prints "Switch pressed". Clockwise counts up, anticlockwise counts down. However, if clockwise counts down, swap the two outer wires of that row.

  6. Set it up in MobiFlight (optional)

    Add two Encoder devices, one for each row, and one Button for the switch. Set the type of both encoders to 2 detents per cycle (00, 11). If one click then moves the value two steps, or it takes two clicks to move it one step, choose the other type.

Frequently Asked Questions

Answers to the questions buyers ask most.

Will it work with Microsoft Flight Simulator or X-Plane?
Yes, through a controller board. The encoder only opens and closes contacts, so you wire it to a board such as an Arduino Mega running MobiFlight. MobiFlight then passes each click to Microsoft Flight Simulator, X-Plane or Prepar3D as a radio, autopilot or other cockpit control.
Why does my own code count 2 for every click?
The encoder gives 15 pulses a turn and has 30 clicks, and most libraries count 4 for each pulse. That makes 60 counts a turn, which is 2 for each click. Divide the count by 2, as the example code on this page does, and you get one step per click.
Can I use just one knob, or leave the push switch unwired?
Yes. The two encoders and the switch each have their own terminals, so you can wire only the parts you want and leave the other terminals unconnected.
How many of these can one Arduino run?
Each one uses five inputs, and all the ground terminals can share one wire. An Arduino Mega 2560 has 54 digital pins, so a radio panel with four of these uses 20 pins and leaves the rest for switches and displays. A Nano has room for three.
The value jumps about when I turn the knob. What should I check?
Check first that the middle terminal of each row is soldered to GND. A count that jumps up and down while you turn steadily one way means an input is not connected or a wire is loose. If you write your own code, read the encoder with a library such as Encoder. The contacts bounce for an instant at each click, and the library ignores that where a simple pin check counts it as extra steps.

Have a Question About This Product?

Send it through and we will get back to you by email.

Why Buy from NZN

Useful parts, fair prices and someone local to help.

I'm Lukas, an engineering student and maker based in Te Awamutu. NZN grew out of a CNC build that dragged on for months because every missing cable, bolt or electronic part meant another overseas order. I started the shop so Kiwi makers can spend more time building and less time waiting for the next parcel.

  • Stocked here in New Zealand

    Orders are picked and packed in Te Awamutu and dispatched within 24 hours every day, excluding public holidays. NZ Post target delivery is 1-2 days urban and 2-4 days rural. In Te Awamutu and Kihikihi you can choose local delivery at checkout: same day if you order before 8am, otherwise next day.

  • Fair prices, clearly shown

    Prices are kept competitive and quantity discounts are shown upfront. Free delivery starts at $50 for urban addresses and $88 for rural addresses.

  • 30-day returns and 12-month warranty

    Get in touch if something is not right and we will help sort it.

  • Practical product support

    Ask a product question and get help from a real person in New Zealand who knows the range.

You may also like