element14 Community
element14 Community
    Register Log In
  • Site
  • Search
  • Log In Register
  • Community Hub
    Community Hub
    • What's New on element14
    • Feedback and Support
    • Benefits of Membership
    • Personal Blogs
    • Members Area
    • Achievement Levels
  • Learn
    Learn
    • Ask an Expert
    • eBooks
    • element14 presents
    • Learning Center
    • Tech Spotlight
    • STEM Academy
    • Webinars, Training and Events
    • Learning Groups
  • Technologies
    Technologies
    • 3D Printing
    • FPGA
    • Industrial Automation
    • Internet of Things
    • Power & Energy
    • Sensors
    • Technology Groups
  • Challenges & Projects
    Challenges & Projects
    • Design Challenges
    • element14 presents Projects
    • Project14
    • Arduino Projects
    • Raspberry Pi Projects
    • Project Groups
  • Products
    Products
    • Arduino
    • Avnet Boards Community
    • Dev Tools
    • Manufacturers
    • Multicomp Pro
    • Product Groups
    • Raspberry Pi
    • RoadTests & Reviews
  • Store
    Store
    • Visit Your Store
    • Choose another store...
      • Europe
      •  Austria (German)
      •  Belgium (Dutch, French)
      •  Bulgaria (Bulgarian)
      •  Czech Republic (Czech)
      •  Denmark (Danish)
      •  Estonia (Estonian)
      •  Finland (Finnish)
      •  France (French)
      •  Germany (German)
      •  Hungary (Hungarian)
      •  Ireland
      •  Israel
      •  Italy (Italian)
      •  Latvia (Latvian)
      •  
      •  Lithuania (Lithuanian)
      •  Netherlands (Dutch)
      •  Norway (Norwegian)
      •  Poland (Polish)
      •  Portugal (Portuguese)
      •  Romania (Romanian)
      •  Russia (Russian)
      •  Slovakia (Slovak)
      •  Slovenia (Slovenian)
      •  Spain (Spanish)
      •  Sweden (Swedish)
      •  Switzerland(German, French)
      •  Turkey (Turkish)
      •  United Kingdom
      • Asia Pacific
      •  Australia
      •  China
      •  Hong Kong
      •  India
      •  Korea (Korean)
      •  Malaysia
      •  New Zealand
      •  Philippines
      •  Singapore
      •  Taiwan
      •  Thailand (Thai)
      • Americas
      •  Brazil (Portuguese)
      •  Canada
      •  Mexico (Spanish)
      •  United States
      Can't find the country/region you're looking for? Visit our export site or find a local distributor.
  • Translate
  • Profile
  • Settings
Project Videos
  • Challenges & Projects
  • element14 presents
  • Project Videos
  • More
  • Cancel
Project Videos
Documents DIY Arduino Helicopter Collective Joystick Control -- Episode 440
  • Documents
  • Members
  • Mentions
  • Sub-Groups
  • Tags
  • More
  • Cancel
  • New
Join Project Videos to participate - click to join for free!
Related
Recommended
EMI-Reduction-Techniques
Engagement
  • Author Author: tariq.ahmad
  • Date Created: 1 Apr 2020 8:47 PM Date Created
  • Last Updated Last Updated: 3 Apr 2020 7:24 AM
  • Views 26507 views
  • Likes 15 likes
  • Comments 135 comments

DIY Arduino Helicopter Collective Joystick Control -- Episode 440

You don't have permission to edit metadata of this video.
Edit media
x
image
Upload Preview
image
 

I love to fly in simulators, especially helicopters. But, there is just not an affordable collective control that I have found, so I decided to make one for myself! I am going to build a joystick using an Arduino Micro, with a bunch of buttons for assignable controls and a high quality encoder for the collective axis.

Supplemental Content:

  • Download Code from Github
  • View Model and download 3d Cad files

 

Also you can watch the live Twitch recording about this build: element14 Presents Live Twitch Stream: DIY Arduino Helicopter Collective Joystick Control

Bill of Material:

Product Name Manufacturer Quantity Buy Kit
BOURNS Absolute Rotary Encoder, 120 rpm, 128 PPR, EAW Series BOURNS 1 Buy Now
ARDUINO Development Board, Arduino Micro, ATmega32U4 MCU, 20 3.3V I/O, 12 Analogue Inputs, ISCP Header ARDUINO 1 Buy Now
ITW SWITCHES Pushbutton Switch, Industrial, 59 Series, 13.6 mm, SPST-NO-DB, Momentary, Square ITW SWITCHES 1 Buy Now
ITW SWITCHES Pushbutton Switch, Industrial, 59 Series, 13.6 mm, SPST-NO-DB, Momentary, Square ITW SWITCHES 1 Buy Now
ITW SWITCHES Pushbutton Switch, Industrial, 59 Series, 13.6 mm, SPST-NO-DB, Momentary, Round ITW SWITCHES 1 Buy Now
ITW SWITCHES Pushbutton Switch, Industrial, 59 Series, 13.6 mm, SPST-NO-DB, Momentary, Round ITW SWITCHES 1 Buy Now
C & K COMPONENTS SWITCH, SPDT, 5A, 120VAC C & K COMPONENTS 3 Buy Now
BOURNS Incremental Rotary Encoder, Pro Audio, Continuous. 24 Detents, 24 Pulses, Quadrature Output BOURNS 1 Buy Now

 

Additional Parts:

 

Product Name

5 Way Momentary Square SMD Tactitle Switch

M3x5x2 Square Nuts

8mm Bore Diameter ball mounted pillow blocks

T6 Seamless Aluminum Round Straight Tubing 16 Gauge 1-3/8" OD

Attachments:
HelicopterCollective_Resources.zip
image
DIY Arduino Helicopter Collective Joystick Control

element14 presents  |  About Kaleb |  Project Videos

  • kaleb
  • e14presents_kalebclark
  • itw
  • arduino micro
  • rotary encoder
  • friday release
  • diy arduino helicopter collective joystick control
  • bourns
  • arduino
  • e14p_KC
  • helicopter
  • friday_release
  • Share
  • History
  • More
  • Cancel
Actions
  • Share
  • More
  • Cancel
  • Sign in to reply

Top Comments

  • benaim
    benaim over 4 years ago +5
    One good project, it's one project that you can modify So I changed my mind, I use now one hall sensor AS5048a with 14-bit resolution ( Best resolution and linerality ) I changed too, the place of friction…
  • benaim
    benaim over 4 years ago in reply to benaim +4
    Pictures coming, better later than never So I used on SS495a, and to have one big range of value for "only" 45° of move, I done one adapter with 2 magnets. With this I have near 0 to 5 Volts on SS495a…
  • benaim
    benaim over 5 years ago in reply to KalebTheMaker +3
    Just received my two Bore Diameter ball So, now I can continue this project Kaleb, Thanks for sending a diagram to all followers I don't need because, I changed somethings, for example angle sensor and…
  • murrayadamjames
    murrayadamjames 3 months ago

    Hey all.  I am building this project.. yes, 5 years late.  I have it all wired up, code is in the Arduino micro, and it is displaying as a joystick in Windows.  I could use some pointers to help complete the testing. The ACE is not working perfectly and the buttons are not working correctly. If anyone has time to help I would appreciate it.

    • Cancel
    • Vote Up 0 Vote Down
    • Sign in to reply
    • More
    • Cancel
  • murrayadamjames
    murrayadamjames 6 months ago

    can someone help me find the twitch live stream?

    link is not working

    • Cancel
    • Vote Up 0 Vote Down
    • Sign in to reply
    • More
    • Cancel
  • benaim
    benaim 8 months ago in reply to Uni33

    I abandoned Arduino IDE a long time ago. I now use VSCODE and PlatfomeIO ( https://platformio.org/)
    See even Cursor ( https://www.cursor.com ) the free version, which helps you (sometimes yes, sometimes not) thanks to AI.

    It perfectly manages many modules like Arduino or even ESP32

    Main advantage, we can see the calls to external libraries (source code) and better understand how to use them.

    Above all, we can keep versions of old libraries for old projects, without necessarily having them updated. Which is impossible with the Arduino IDE. This allows us to resume old projects without fearing that a library update will bug, because a function is no longer supported.

    At first, it seems more complicated to use, but in the end, we save a lot of time.

    Enjoy VSCODE ( or Cursor ) and PlateformIO Heart eyes

    • Cancel
    • Vote Up 0 Vote Down
    • Sign in to reply
    • More
    • Cancel
  • Uni33
    Uni33 8 months ago

    ok, I managed to load the correct libraries and the compilation was successful, we will see after assembling and uploading to Arduino

    • Cancel
    • Vote Up +1 Vote Down
    • Sign in to reply
    • More
    • Cancel
  • Uni33
    Uni33 8 months ago

    C:\Users\Activcom\Desktop\Helikopter\HeliCollective-master\HeliCollective-master\CollectiveControl\CollectiveControl.ino: In function 'void loop()':
    C:\Users\Activcom\Desktop\Helikopter\HeliCollective-master\HeliCollective-master\CollectiveControl\CollectiveControl.ino:151:23: error: 'class ClickEncoder' has no member named 'getValue'
    value += handleEnc->getValue();
    ^~~~~~~~
    C:\Users\Activcom\Desktop\Helikopter\HeliCollective-master\HeliCollective-master\CollectiveControl\CollectiveControl.ino:188:17: error: 'Button' is not a member of 'ClickEncoder'
    ClickEncoder::Button b = handleEnc->getButton();
    ^~~~~~
    C:\Users\Activcom\Desktop\Helikopter\HeliCollective-master\HeliCollective-master\CollectiveControl\CollectiveControl.ino:189:7: error: 'b' was not declared in this scope
    if (b != ClickEncoder::Open) {
    ^
    C:\Users\Activcom\Desktop\Helikopter\HeliCollective-master\HeliCollective-master\CollectiveControl\CollectiveControl.ino:189:26: error: 'Open' is not a member of 'ClickEncoder'
    if (b != ClickEncoder::Open) {
    ^~~~

    exit status 1

    Compilation error: 'class ClickEncoder' has no member named 'getValue'

    • Cancel
    • Vote Up 0 Vote Down
    • Sign in to reply
    • More
    • Cancel
  • Uni33
    Uni33 8 months ago

    Hi, I don't know how to write Arduino code and I have a problem with errors when compiling the code. Are you able to send me the correct code? I really want to make such controls for my son and I already have all the elements.

    • Cancel
    • Vote Up 0 Vote Down
    • Sign in to reply
    • More
    • Cancel
  • webitman
    webitman over 2 years ago in reply to beacon_dave

    Sorry beacon_dave I should of checked, thank you once again.

    • Cancel
    • Vote Up 0 Vote Down
    • Sign in to reply
    • More
    • Cancel
  • beacon_dave
    beacon_dave over 2 years ago in reply to webitman

    If you look at the Adafruit example I linked to above, then they use this format to set the pin to an input with pullup:

    // configure button pin for input with pull up
    mcp.pinMode(BUTTON_PIN, INPUT_PULLUP);

    • Cancel
    • Vote Up 0 Vote Down
    • Sign in to reply
    • More
    • Cancel
  • webitman
    webitman over 2 years ago in reply to beacon_dave

    Yes I have already changed that to mcp_I2C and that was OK, but as it reached the mcp pinMode it passed  15, 14 ,13 but halted on pinMode 12 button 4

    with  "class adafruit_mcp23X17 has no member named pullup" I have checked that all 4 button pullups are writen exactly the same, and checked spelling for any changes, and all match.

    • Cancel
    • Vote Up 0 Vote Down
    • Sign in to reply
    • More
    • Cancel
  • beacon_dave
    beacon_dave over 2 years ago in reply to webitman

    You will likely need to change the mcp instance on the line below it as well, as per the Adafruit example.

    • Cancel
    • Vote Up 0 Vote Down
    • Sign in to reply
    • More
    • Cancel
>
element14 Community

element14 is the first online community specifically for engineers. Connect with your peers and get expert answers to your questions.

  • Members
  • Learn
  • Technologies
  • Challenges & Projects
  • Products
  • Store
  • About Us
  • Feedback & Support
  • FAQs
  • Terms of Use
  • Privacy Policy
  • Legal and Copyright Notices
  • Sitemap
  • Cookies

An Avnet Company © 2025 Premier Farnell Limited. All Rights Reserved.

Premier Farnell Ltd, registered in England and Wales (no 00876412), registered office: Farnell House, Forge Lane, Leeds LS12 2NE.

ICP 备案号 10220084.

Follow element14

  • X
  • Facebook
  • linkedin
  • YouTube