Arduino Joystick 2.0 Library - Beginners Guide

  Рет қаралды 81,685

Dan's Tech Box

Dan's Tech Box

Күн бұрын

A beginners guide to using the Arduino Joystick 2.0 Library, by MHeironimus
Github for Library
github.com/MHeironimus/Arduin...
Files mentioned in video (Sketch + AVR Board Folder)
drive.google.com/drive/folder...
The Library will only work on MEGA32u4 boards, such as the Arduino Pro Micro or Leonardo, or a AT91SAM board like the Arduino Due.

Пікірлер: 205
@CRJ700
@CRJ700 Жыл бұрын
I have decided that YOU are one of my favorite people in the entire world! Not just because you've got that cool accent thing going on, but because you posted something useful that went straight to the point. Thank you for saving me TONS time by posting this tutorial. It is VERY appreciated!
@Johan-ex5yj
@Johan-ex5yj 2 жыл бұрын
This is an excellent tutorial, thank you. 👍 One possible improvement is to add the following in the setup section >> Joystick.setXAxisRange(0, 255); Joystick.setYAxisRange(0, 255); Joystick.setRzAxisRange(0, 255); Joystick.setThrottleRange(0, 255); That ensures that you get full range output, with no need to calibrate.
@CapungPlastik
@CapungPlastik 2 жыл бұрын
what's the different using "range" and map?
@Johan-ex5yj
@Johan-ex5yj 2 жыл бұрын
@@CapungPlastik In this example the guy is mapping the normal 10 bit analog range of 0 to 1023 to 0 to 255, because he wants the resolution to be bigger (less sensitive). The Joystick library, expects (by default) that the numbers will be 0 to 1023, so you will end up with a Joystick that has only 25% of if it’s full travel. That is why you need to specify that your range is 0 to 255. If however, you use the full 0 to 1023 resolution, you don’t need set the range, and you also do not need to do any mapping. In this case the range command is still useful if you need to invert an axis, then you go: …Range(1023, 0) instead of …Range(0, 1023) .
@manch.gamingrodri8089
@manch.gamingrodri8089 3 жыл бұрын
Enormous thanks for the tutorial and amazing work explaining it, I really didn’t understood the examples of the library and this helped me a ton
@spencer.h561
@spencer.h561 2 жыл бұрын
I’ve been looking for this for so long, this is exactly what I need. I am trying to start making and selling flight simulator equipment and this knowledge is going to be extremely helpful!
@SynisterGatess07
@SynisterGatess07 4 ай бұрын
i ve been looking the whole day for an in depth tutorial and finally found exactly what i needed. thanks
@colins2
@colins2 3 жыл бұрын
Excellent, thanks for posting. I've just built a set of rudder pedals and now need to connect then up, so this tutorial was perfect.
@avm263
@avm263 Жыл бұрын
Thankyou so much my dude! I just bought my leonardo after realising I wasn't able to do this with an uno, but didn't know where to go from there. I have some basic coding with arduino but felt really helpless after finding out about this library, your video helped me so much!!! Have a great day sir.
@nocloo6829
@nocloo6829 4 ай бұрын
Thanks for this very straightforward tutorial! I am new to Arduino and programming and was looking for exactly what you explained. I had been able to read out a potentiometer with arduino and I played around with Hieronymus' examples, but I could not figure out how to merge the two. Thanks to you, I am so much closer to creating my own flight sim peripherals!
@nigelb5370
@nigelb5370 3 жыл бұрын
Many, many, thanks for this tutorial and example code. It was precisely what I needed for my simple DIY button box/potentiometer throttle. I would have been trying to figure out the 'right' code for months if I hadn't found your excellent video. As it was, I was able to program my Arduino in less than ten minutes and it worked perfectly first time.
@mheironimus
@mheironimus 3 жыл бұрын
Thanks for posting this video.
@RUMBLE.com_ClickthruMAN
@RUMBLE.com_ClickthruMAN 3 жыл бұрын
8 data is dat mean it just have 0 to 255 step/precision n how could it has 16bit precision without have latency so much sir?
@tonipaskalin6973
@tonipaskalin6973 3 жыл бұрын
You made my life so much easier, thank you so much for making this video.
@ZachJackson-ri6lf
@ZachJackson-ri6lf 28 күн бұрын
Thank you so much for this video, I have now successfully built my own flight sim Hotas complete with rudder pedals, a handbrake for racing, 2 joysticks for Farm / Construction Sim, and now a one handed controller / keyboard hybrid, and NONE of them would've worked if i hadn't found your video.
@Chef_PC
@Chef_PC 11 ай бұрын
Just this one video has helped me immensely to get my button box going. Thanks!
@vanusy
@vanusy 2 жыл бұрын
Thank you sooooo much. I don't know c++ at all and get my first leonardo, but with your guide i sucsessfully make my own sketch for my purpose. Thank you very much
@garethbarry3825
@garethbarry3825 8 ай бұрын
Incredibly useful and clear - thank you so much for this.
@mirochlebovec6586
@mirochlebovec6586 Ай бұрын
This probably the most comprehensive guide for this library.
@triodit
@triodit Жыл бұрын
Thank you so much! Your a legend and I'm SOOOOO referancing this in my design documentation!
@BokeFlyingSimulations
@BokeFlyingSimulations 2 жыл бұрын
this is an A MA ZING tutorial man. Congratulations, it is VERY helpful!
@the_arrgyle9086
@the_arrgyle9086 3 жыл бұрын
THANK YOU! Made my first DIY Throttle yesterday. Out of an Arduino, Lego, some Wires, Hotglue, Rubber Bands, Hockey Tape and Ziplocks ;-)
@SantaGamerYoutube
@SantaGamerYoutube 3 жыл бұрын
Legos! Haha great
@jeffonquest1001
@jeffonquest1001 3 жыл бұрын
Finally someone that explains it all!
@SkyriderOfficial
@SkyriderOfficial 9 ай бұрын
Most valuable tutorial on the topic. Thanks!!!🎉🎉
@NortheastLance
@NortheastLance 3 жыл бұрын
Dude this was great. It got me started and taught me a bit. Now i gotta figure out how to make a toggle switch act like a button
@BushidoShishido
@BushidoShishido 3 жыл бұрын
Please let me know if you ever figure that out!
@tbryson2
@tbryson2 3 жыл бұрын
Thank you for taking the time to present this! It's exactly what I've been looking for! One question though, when you were calibrating the axis, the visual indication was jumping all over the place! Obviously it didn't affect the outcome, but is that normal and / or something to "worry" about? Will that same jumping around be evident while using the Arduino as a joystick controller?
@hakanviajando
@hakanviajando 3 жыл бұрын
Thank you very much for the greatly detailed video.
@abirmahato648
@abirmahato648 2 ай бұрын
best one out there. hats off man, this is amazing. I have been trying to do this myself for so long. thanks for the help man.
@davekelly4322
@davekelly4322 Жыл бұрын
Just what I needed. Thanks a lot
@sirnewhill
@sirnewhill 3 жыл бұрын
Thanks, this video was very helpful!
@ChainsawDNA
@ChainsawDNA 2 жыл бұрын
Excellent tutorial!
@garytaylor5646
@garytaylor5646 3 жыл бұрын
I just have to say "" Thank you"", I have spent weeks searching KZfaq for your video :) After many headaches of going through Arduino courses etc., I can now do this for my flight sim, totally enjoyed your no waisted info talk, please do more for us old simmers that are not electronics guys but really want to build our sims that work,
@danstechbox7077
@danstechbox7077 3 жыл бұрын
Thanks Gary! I plan on doing some vidoes on the basic concepts of arduino and sim controls, but just started a new job so squeezing it in when I can :)
@cosmicp.o.m.e3460
@cosmicp.o.m.e3460 3 жыл бұрын
Thanks for confirming what I was afraid of misunderstanding :Thumbs UP: :)
@eugenebrown9803
@eugenebrown9803 3 жыл бұрын
waiting on your more complex teachings
@dmmuller
@dmmuller Жыл бұрын
Thanks for taking the time to make this video and explain the steps thoroughly. Did you ever complete the button matrix version at all?
@stueyanderton
@stueyanderton 3 жыл бұрын
Eagerly awaiting Arduino Due video
@danstechbox7077
@danstechbox7077 3 жыл бұрын
It will be coming soon! Will be doing a video on propper button coding and debouncing next, along with probably a tour of the Due, and my experiences with it so far.
@stueyanderton
@stueyanderton 3 жыл бұрын
@@danstechbox7077 Looking forward to it, and thanks for engaging!
@SwoodyCraft
@SwoodyCraft Жыл бұрын
Excellent tut. Thank you
@jmsian3505
@jmsian3505 Жыл бұрын
20:01 changing Arduino Name. Thanks for this!
@casperhxr6018
@casperhxr6018 2 жыл бұрын
Very helpful, thank you!
@Joejoe-vd2do
@Joejoe-vd2do 3 жыл бұрын
I wish I could've liked this video more than once!
@requiem4adreamc
@requiem4adreamc Жыл бұрын
Very detailed and informative video. Thank you very much :) I am gonna make an button box and diy analog handbrake. I hope i can manage to do them :)
@Marcin79W
@Marcin79W 3 жыл бұрын
Thank you, big help!
@sudipthapa9877
@sudipthapa9877 2 жыл бұрын
You are my god bro wow ❤️❤️❤️ ,thank you very very much dude much appreciated.
@chethy7353
@chethy7353 3 жыл бұрын
very helpful bro
@astonishing-a
@astonishing-a 2 ай бұрын
Legend, Thanks for this!
@ProgramAndNectar
@ProgramAndNectar 2 жыл бұрын
this works! thank you!
@danw5996
@danw5996 Жыл бұрын
Thanks for this!
@PuuTV
@PuuTV 3 жыл бұрын
Amazing video, shame you only have 55 subscribers.
@naveenDEAS
@naveenDEAS 3 жыл бұрын
First of all I would like to thank you for providing such an informative and useful video. Really!! Actually I was planning to make a arcade joystick using a keyboard encoder taken out of a usb keyboard. But using a Arduino Leonardo looks much efficient and better. I have some questions!! I am planning to make a Mame arcade encoder with 4 direction keys + around 14 other keys to play and control the settings of Mame. As you know, in arcade fighting games, we press multiple keys simultaneously ( for example, up+right+ button 1 etc), will it be possible to do so without any delays? In computer keyboards, when we press multiple keys, we have problems such as keyboard ghosting and masking. So Arduino leonardo keyboard encoder will have the same problems?
@agenchicken
@agenchicken 3 жыл бұрын
Nice video man good job and ty for helping us! If I can ask you if you can explain how the steering and brake work and how we can use this library for making a steering wheel and if I can. Ty for everything and also you have a really nice voice!
@danstechbox7077
@danstechbox7077 3 жыл бұрын
Thanks for the complement! I do actually do some voice work at times! As for your question, thats fairly straight forward. Instead of defining the Axis as X,Y, Rz, and Throttle as I did in the video, you can define the axis as any of the avalible in Windows HID, as shown in the avalible axis when you define your joystick (I have them listed out in the example code in the description). In your case, you could make a pedal set using Accelerator and Brake as Axis, with possibly a Digital Button for a Clutch (depending on your use case), and then using the Steering Axis for the steering wheel - really depends on how complicated you want your setup to be. The reason you would use the Steering, Brake, and Accelerator axis as opposed to just using an X and Y axis on seperate physical units (such as two potentiometers) is that Windows joins these two together - the Steering, Brake, and Accelerator axis are reserved axis, and are seperated in the HID system so they dont have any dependancies on eachother. While most games can seperate them, there is no guaruntee as different generational implementations of the HID system can get veeeery messy, so it is better to approach it correctly from the HID controller end to avoid any overlaps in the HID software and game decoding. You can pretty much use any potentiometer, or even magnets and Hall-Effect sensors (Will be doing another video on that now my 3D printer is working again), to give you an analog input, however you will need to add a hardware return device (such as a spring or something) to make sure it goes back to reading the middle of the axis, however there are some deadzone tools in both the Windows HID setup and the Joystick 2.0 library (I think) to enable a wider middle section if you cant get an exact centre and find your wheels/rudder/other steering device is slightly leaning when it should be central. This is something I would like to approach in another video with my own Joystick and Flight Control system, but I'm still designing that so in the meantime that should give you a good idea of what to consider when designing/building your own steering wheel and possibly pedal set. You can also make digital buttons work as analog axis at 100% using some clever coding, which I will do in another video shortly, if you want to have a button on the steering wheel for brake but dont want to use a digital button, and would rather use the Brake Axis - but that depends more on how you're building your steering wheel and what games/software you want to use it on. Hope that answers your question well enough, but let me know if you have any more specific questions or would like me to clarify anything.
@agenchicken
@agenchicken 3 жыл бұрын
@@danstechbox7077 Yeah ty for all of the information is really helpful but I have 1 more question I have no problem with the steering wheel and pedals with an optical encoder and potentiometers but the strange thing is in the game f1 2020. I have a very hard time setting the controls and sometimes it does not even detect it. but in the game Asseto corsa I have no such problems and it's working wonderfully. If you have any idea why it's doing that its going to be amazing ty again for the help. Also, I want to have force feedback and I have found a joystick library similar to that one but I am not sure how the schematics go and what should I do if you can help me it will be amazing. This is the library github.com/YukMingLaw/ArduinoJoystickWithFFBLibrary
@tannimkyraxx
@tannimkyraxx 3 жыл бұрын
The Mega and Uno can be flashed to report as HID, but it takes a bit of extra steps and the unojoy library is a little more limited
@fernank017
@fernank017 2 жыл бұрын
i've been trying to figure this out, how would I go about it?
@amrosero
@amrosero 2 жыл бұрын
Hi, I can get a Unojoy device with Mega and Uno, but can you personalize the setup, (Name of HID in PC)?
@arias80rp10
@arias80rp10 7 ай бұрын
Fernan, u should save all that effort and hours u will spend on that, and just buy any board tih atmega32u4 like leonardo or yue @@fernank017
@battlebros7075
@battlebros7075 3 жыл бұрын
Nice Video!!! It resolved a lot of my problems. Is it possible to connect the arduino with a shift register and use the Joystick Library for having more buttons?
@felipeyoshino6951
@felipeyoshino6951 2 жыл бұрын
Easiest like I've ever gave in a video
@JoePCP
@JoePCP 2 жыл бұрын
I would also like to commend you on such an informative and interesting video. I have used your sketch quite sucessfully for my flight deck but have come up against the issue you mentioned, where more than onbe board is used. I.E. they both addess the same buttons. I've followed your description at the end of the video and for the most part undertand what should be done. However the boards.txt file in my system already includes descriptions of a number of diferent boards, should I add the data to my existing boads file or replace it with the one you provided? Also should I just change the product ID or both the vendor and product ID? Sorry to burden you with this but my 77 year old brain is not as quick as it used to be. Regards Joe.
@LockDCS
@LockDCS 3 жыл бұрын
Awesome video. Once you program the board, can you still reprogram it with the IDE if the USB controller still thinks it is a Joystick?
@alessandromarrone5355
@alessandromarrone5355 2 жыл бұрын
thanks for this video that's was very helpful.....can you use distance from ultrasonic sensors as button imput?
@paulb36utube
@paulb36utube 3 жыл бұрын
This is a nice simple explanation. I’ve had to figure out through trial and error ( and a few tears) wish I saw this way earlier. One question I have been able to do a twin joystick with that library. I’ve gotten a twin gimbal (used in RC drones) that run off 3.3v that I’ve hooked up but just can’t get them working together (and the sensitivity is outrages -thinking I need either hardware or software debugging ) [Frsky M9-Gimbal M9 High Sensitivity Hall Sensor Gimbal For Taranis X9D & X9D Plus RC Parts] Any chance of giving it a crack? The software that is.
@johnpeters5906
@johnpeters5906 2 жыл бұрын
Thank you very much, I'am so glad ;) that I have found this video. You did a very good job. I'am going to look for other tutorials. Question; why is it "Up to 2 Hat Switches", has this to do with the number of pins ?.
@gkps2363
@gkps2363 3 жыл бұрын
Can you make a video of the matrix buttons? I think what you said very well helped me a lot
@toyoboi
@toyoboi 3 жыл бұрын
you should make another video. I'm working on my first project (a 6 DOF joystick using a stewart platform) and I'm struggling with quite a bit.
@Nikolas_A
@Nikolas_A Жыл бұрын
I run the multiple joystick example. It enumerates four joysticks (all named Arduino Micro). Is there a way to name each separately? E.g. Joystick1, Joystick2 etc
@Linrox
@Linrox 4 күн бұрын
Very helpful video. Can you show how to use a toggle (on-off) switch as a button.
@gobdav
@gobdav 2 жыл бұрын
Thank you. Finally got my switches to work as button. How would I wire/program a 3 position switch (on/off/on) using this code?
@RedPixels_
@RedPixels_ 2 жыл бұрын
Thanks so much for the tutorial, so useful! I just have one problem: in the Arduino folder there is no "hardware" folder, what could be the reason of this issue?
@techie2337
@techie2337 3 жыл бұрын
Greetings. Thank you for the video. I just found the joystick library and I have been trying to figure out how to use it. I created my own circuit board that hold a Leonardo. One of many questions I have is how would you assign analog inputs coming in from shift registers to individual variables to be called later as buttons? I'm waiting to see how you created an array for multiple buttons as well. I'm very much new to this so watching you explain your code has helped. Still so much I don't understand. Thanks for the videos.
@danstechbox7077
@danstechbox7077 3 жыл бұрын
Will be doing one on button arrays (both binary and row-column) soon. I will also be doing input/output multiplexing using muxing boards (might also be called shift registers but that’s the name I know them under). I am currently writing a series called: “How to (Properly) Arduino to cover the basics of wiring and coding inputs and outputs in an appropriate and board-safe manner, so keep tuned! Waiting on some parts but will be recording soon!
@Vintage_USA_Tech
@Vintage_USA_Tech 3 жыл бұрын
Man that was a great video.... That really helped me understand how this library works and how easy it is to use, 2 question's have you had the time to get the hat switch video done yet? and 2nd you have a folder called hardware in your Arduino folder where you changed the name of the board in the board text file.... I do not have that folder I'm running IDE version 1.8.13 and it is a fresh install.... how do you get that folder with the board information?
@Vintage_USA_Tech
@Vintage_USA_Tech 3 жыл бұрын
Ok scratch that 2nd question I installed the Arduino IDE from the App store and that comes with its own can of worms when it comes to permission's I have a feeling the board.txt file is in there I just need to figure out how to get access to it. Windows is such a turd... cant wait until I can use Linux as a game box.
@BooktownBoy
@BooktownBoy 3 жыл бұрын
@@Vintage_USA_Tech Just create the hardware folder in Documents>Arduino alongside your libraries and sketches folders, then create a named folder inside that, copy the avr folder from the google drive link (unzipped) into that named folder and edit the boads.txt as required. Profit??? Just learned myself so thought I'd chime in :)
@MegaBrettlee
@MegaBrettlee 2 жыл бұрын
hey there great vid one question i had i need two throttles do i just label them as throttle 1 and throttle 2
@BooktownBoy
@BooktownBoy 3 жыл бұрын
This is an excellent video, thank you. Just a question about giving the pro micro's a unique name...would I need to rename, change PID (do I make up PID?) upload to board, then change it again to another unique name before uploading the next sketch to the next pro micro? ie, "joystick" PID x for first pro micro and "throttle" PID y for second one... I couldn't quite follow that part of the vid.
@BooktownBoy
@BooktownBoy 3 жыл бұрын
EDIT: Don't worry, I've sussed it after going over the end of the vid a few times. ^ThumbsUp^
@joaolancha8824
@joaolancha8824 3 жыл бұрын
Hey dude, Amazing video, helped me so much. Im running into a little bit of an issue, i dont know if maybe you can help me. Im currently making a button box for xplane, and to do a test i just connected a toggle switch to the arduino micro and made a joystick (exactly like you did) but with only one button, uploaded the code and tested on the windows manager for usb game devices, everything was working.However, when i connect the arduino micro and go into Xplane the game freezes, do you have any idea what can be causing this issue? Thanks in advance
@danstechbox7077
@danstechbox7077 3 жыл бұрын
Glad it helped you! It could be a number of things. I know XPlane has a few reserved USB device ID's, so you might need to change the device ID as I outline in the video to something further along, just to ensure that it's not clashing with anything. With Toggle Switches, it could be the continous signal - in a few of my games I know i've seen this issue. I am currently working on a function module to take a toggle switch and get the code/windows to treat it as two discrete button presses, but I'll need a bit of fiddling to make sure it works, and likewise will also require some input on the user end to make sure that the switch position matches up with the simulation position. For now, try removing the toggle switches and using push buttons instead - see if that get's XPlane to play nice. Otherwise, try shifting the USB device ID along a bit in case you've hit a reserved value. Hope that helps.
@mattivirta
@mattivirta 3 жыл бұрын
normal flight sim basic need yoke steering 2 potentiometer, trottle,propel,mix,3 pot, rudder,brake 2pot,flap,1pot, or build encoder this, trim wheel i pot,on/off swirtch, light switch,engine start,3-4 encoder to autopilot gauges, radio2 encoder, 7+segment display 2 pcs radio panel, mobiflight can make all other but not can analog inputs, need make arduino leonardo usb hid about 9-12 potentiometers. or 2 leonardo board, and one arduino mega 2560 to mobiflight all switch and buttond and lcd,7.segment displays.
@user-fy3xh7oj7c
@user-fy3xh7oj7c Жыл бұрын
Hello, thanks you, but can you help me with rotation x and rotation y, I can't to turn on them
@johanns.rivera3480
@johanns.rivera3480 Жыл бұрын
it says that I have downloaded the library and it shows in my library folders but i get an error message saying there is so such file as joystick .h
@lalljp
@lalljp 3 жыл бұрын
Thanks, this is great. I've just set up an analog stick so far. I had to use 0 to 255 instead of 0 to 1023 for the read values. But I can't figure out how to reverse an axis. I thought I could just do Joystick.setYAxis(255 - y); but apparently not
@lewild
@lewild 2 жыл бұрын
Hi, i was looking here for same reason but i've found by myself. You should intervert 0 and 255 value like this exemple : (xAxis_,0,1023,255,0). i hope it can help you and other people as us :) PS: i'm french so apologize if it's not very clear.
@Johan-ex5yj
@Johan-ex5yj 2 жыл бұрын
@@lewild Or in the setup section >> Joystick.setXAxisRange(0, 255); // for normal direction Joystick.setYAxisRange(255, 0); // for reverse direction
@andrewjamez
@andrewjamez 3 жыл бұрын
hi there thanks for your tutorial, Are you able to name your device? for example I am building flight sim controllers and want the name of the controller to show in the joystick calibration menu and not just "arduino Leonardo"...
@manamdigeable
@manamdigeable Жыл бұрын
hi, Thx for the tutorial. can I use this program for using rotary encoders in flight simulators ??
@ourlifeofpoint3519
@ourlifeofpoint3519 Жыл бұрын
Very good tutorial, but 1 question. In the Set up USB game controllers the joystick recognized for calibration and use only hen the arduino ide sodtware runs. If the IDE close the controller stop working. Maybe stupid question, but why this happend? Need also software for communication? Thanks!!!
@lancelot4915
@lancelot4915 3 жыл бұрын
Excelent tutorial, the best i found to get and idea of how to have a HID joystick with an Arduino. My question would be, is it possible to wire 32 buttons and four axis to the Leonardo? How?. The library allows it, but don´t know if it is possible with the board.
@danstechbox7077
@danstechbox7077 3 жыл бұрын
The Four Axis wouldnt be an issue with the Leonardo, however with the buttons you'd hit the pin limit pretty quickly. The way I see it, you have three options: 1) Get a board that has the right number of pins AND is USB HID complient and do a One-to-One pinmapping approach - in this case you'd be limited to the Arduino Due 2) Do a Row-Column approach for the buttons using standard keyboard matrixing - there are several guides on how to do this online. 3) Use a Button library, such as AceButton, which has compatibility for Binary button mapping (using base 2 binary as pin inputs) - you'd only need 6 pins for 32 Buttons, in this case. There are approaches using resistor ladders and analog inputs, however depending on your board and other circuitry, this could just complicate things, especially if there's any noise on the wiring or switches. I personally would consider looking at the AceButton library for this, as it has excellent de-bouncing support for button presses too - however, if you want to keep your wiring and code simple, get an Arduino Due. They're avalible on Ebay for about £10-£15 a board. I will be doing a video at some point soon about Binary Button Mapping as I think it's a very valid approach in comparison to Row-Column matrixing.
@tom_gtom6580
@tom_gtom6580 3 жыл бұрын
I think this should work for your issue. www.instructables.com/How-to-access-5-buttons-through-1-Arduino-input/
@lancelot4915
@lancelot4915 3 жыл бұрын
@@tom_gtom6580 Thanks Tom for the link. Reading it now.
@lancelot4915
@lancelot4915 3 жыл бұрын
@@danstechbox7077 Thanks for the answer, after some reading, i finally decided to go with the matrix. The third option is completely new for me, but i will start to research about it now,. At first glance it seems the best solution.
@shaggyprimetime8813
@shaggyprimetime8813 2 жыл бұрын
Hi I need some advice pls when you spoke about card selection I have a uno and the joystick library isn't supported by that card bit is the joystick library essentially designating the card so the computer understands its a joystick or can I still use the understands as a joystick without using the library as I want to make a dual throttle controller for a flight sim using 10k pots any advice is appreciated im new to this thanx
@theshawnmccown
@theshawnmccown 2 жыл бұрын
What would I need to add to set a deadzone?
@rabajter2746
@rabajter2746 2 жыл бұрын
I really like your tutorial, but i have one question. How do you make it work in games ? Even tho the game controllers tab in control panel registers the joystick, games do not want to work with it. Do you know what may be possible fix for it ?
@chiragjeram
@chiragjeram 3 жыл бұрын
thank you sir for nice video, can you guide how can i use yours' beginner guide sketch to make 1 joystick and 20 push buttons on arduino leonardo?
@danstechbox7077
@danstechbox7077 3 жыл бұрын
Hi Chirag Jeram! Thanks for the comment. Hope i can answer your question properly. To use the arduino leonardo, you literally just need to change the board - the only difference between the two in regards to this project are the number of pins and the pin numbering. Nothing in the code would change apart from adding in the extra buttons and removing your unused axis. HOWEVER, although the technical spec says that the board has 20 Digital Pins and 6 Analog pins, a number of these pins are shared due to the nature of the chipset, and as a result you can have a maximum of 20 Digital Pins, 14 Digital Pins and 6 Analog Pins, OR Any variation of the above. For this kind of setup, you would be limited to 18 Digital Pins for buttons, and 2 Analog pins for the X/Y of the joystick. If you reeeally need 20 buttons, you could either go for a button matrix (more complicated option) or swapy the board out for the Arduino Due, which has significantly more Digital Pins, but that may be overkill depending on your project. Below I'll go into the changes for the code, regardless of your board choice (I wont go into button matrixing as that is a video unto itself) In the Joystick Initialisation section, reduce your axis to just including X and Y, everything else for false, and change the number of buttons to 20 (or however many you want). For the Joystick - In the beginner Guide Sketch, you would use the X/Y axis of the Joystick as A0 and A1, set up with the hardware how I wired the joystick up in the video - Just comment out or delete the "#define joy####" lines with whichever axis you dont wish to use, and likewise the Axis Initialization and Axis Reading sections for the axis you are not using. For the Buttons - Duplicate the "#define joyButton####" lines, changing the button number and pin inputs for your buttons to the button number (in this case 1-20) and the pin you are putting it in to in the Arduino board. Likewise, set up the "pinmode" of the extra buttons as demonstrated for button 1-3 in the code, and make sure to do the same for the "LastButton#State" section per button, or none of them will work. You will then need to copy the "Current Button State" IF loop per button in the "Button Reading During Runtime", changing the button Number for every copy. If you want to, rather than copying them individually, you could subnest the IF loop and do a for loop to cycle the test between buttons 1 and 20, but only if you feel confident doing that. Otherwise, everything else should be as it is in the video. Let me know if you have any more questions.
@chiragjeram
@chiragjeram 3 жыл бұрын
@@danstechbox7077 thank you very much for detailed reply....i will make it practically and then let you know how it goes........have a good day !
@erfansn869
@erfansn869 2 жыл бұрын
Thanks What is R1 on board joystick?
@alecont6488
@alecont6488 3 жыл бұрын
Hello, very good tutorial, it served me a lot since I am a novice in this. But I want to ask you a question. How do I achieve as many resolution bits as possible ?? Since I want to make 3 pedals for my driving simulator. Accelerator, brake and clutch and I want you to have the highest possible resolution. I'm a rookie and I don't quite understand MHeironimus' drivingcontroller example. I'd appreciate it if you could help me. Greetings and sorry for my English.
@danstechbox7077
@danstechbox7077 3 жыл бұрын
There's a difference between highest resolution possible and a useable resolution. The max possible resolution on an Arduino based Analog pin is 10 bit, returning a value between 0 and 1023 - this is done as a function of a referance voltage (ideally from the VCC/Vref pin on the arduino board) and a common ground, done via a voltage divider using a potentiometer or a resistor array. The problem with using that resolution of value is jitter, where the returned function voltage is not stable, due to interferance along the wires, manufacturing tollerances on the potentiometer, dust in the contacts, etc... As a result, you get a continually moving input, which can cause a lot of issues with calibration, phantom data values, or inconsistent data. To solve this, we re-map the data to give a smoothed average (otherwise known as debouncing), from the 0-1023 range to another subset. This can be done easily using the map() function, and then taking this value into the Joystick input. As for the value to use, the best way to imagine it is how many "steps" of data you want to be sending. The default would be 1024 different data steps, which at the tollerence as a pedal would be way too much, however you may want different ranges for different pedals. For example, the accelerator and brake would probably be good to start at a 64-value step range, whereas the clutch might be better with a lower resolution range of 32, or maybe even 16. Start with values like that, and then test from there - if it feels too "stepped", use a higher step range. If it feels too "jumpy" or "slippery", use a lower step range. I would suggest working in base 2 for these ranges (4, 8, 16, 32, 64, etc), but you can slip down to intervals of 5 or 10 if you really need to. I hope that explains the general concept, I am working on a small series of videos introducing basic concepts of arduino and microcontroller coding, but just started a new job so will be fitting it in when I have time. Any other questions, just ask.
@IronManhood
@IronManhood Жыл бұрын
Anybody know why my pro micro doesn't register as a game controller? I tested it in game and it seemed to work properly but I'm not able to calibrate it. Pretty annoying honestly. I must admit I'm a beginner and didn't understand the proper procedure for uploading to the board and went through a whole series of suggestions from different threads that I found with google. One suggesting that I uninstall the drivers and reinstall them. I did several times and eventually the board stopped showing as an arduino leonardo. I managed to figure out how to install the drivers located in the arduino ide installation but that didn't seem to fix it. -Should the board be using HID driver from 2006?- Edit: I managed to figure out the issue. It was my goal to include an ADS1115 in my project for higher precision and that was the problem. Specifically, calling the "Adafruit_ADS1X15.h" constructor before the "Joystick.h" constructor. So now I setup the joystick first and then the ads.
@JovendinamicololSP
@JovendinamicololSP Жыл бұрын
guys I'm not an native english speaker so i didn't understand the difference between (THROTTLE and ACCELERATOR) if it's the same thing why there're two ways to say the same thing? my english is a work in progress so Sorry!
@Ultimatevr123
@Ultimatevr123 6 ай бұрын
Yes they are the same thing when people use both terms, the reason there are two terms is because they are technically different terms. So let’s say your driving your car, and you push your foot on the gas pedal, that would be an accelerator, doesn’t matter if it’s an electric care or a gas vehicle, it’s always going to accelerate. A throttle may control engine rpm on something that doesn’t even move, like a lawnmower engine for example. Most times when people say the two words they are interchangeable .
@VstromVroomer
@VstromVroomer 4 ай бұрын
In a nutshell: an accelerator you press and then you stop pressing it it returns to idle. A throttle, you move it and it stays in that state.
@JovendinamicololSP
@JovendinamicololSP 4 ай бұрын
@@Ultimatevr123 thank you it helped a lot
@JovendinamicololSP
@JovendinamicololSP 4 ай бұрын
@@VstromVroomer thanks i took some time trying to understand the about this topic
@thoufeekbaber8597
@thoufeekbaber8597 Жыл бұрын
this is gem..but can i do same procedures in uno??
@Sanchez9241
@Sanchez9241 9 ай бұрын
how to add vibrations to this joystick library?
@stevling1
@stevling1 10 ай бұрын
I'm a bit new to this how do I update that boards.txt file so it works in newer versions like 2.2.1 thangs for the Guide :D
@HansVGinkel
@HansVGinkel 3 жыл бұрын
Hi, is it possible with this Joystick.h 2.0 library to make a XBOX 360 or XBOX ONE PC controller? I have a PC game that only accepts that type of controller. Or do I need the XInput.h library instead? (I'm breaking my head on this)
@danstechbox7077
@danstechbox7077 3 жыл бұрын
Joystick 2.0 take inputs in and spits them out to the OS as a dedicated HID input device, which is recognisable by most kinds of OS. The XInput library emulates control input by pretending to be a Xbox 360 controller, and triggering command presses on that virtual controller. XInput is limited to 10 + 1 Buttons, 2 Two-Axis joysticks, Two analog triggers, and a single D-Pad hat switch. Joystick 2.0 gives you 32 buttons, 10 Axis, and 2 Hat switches depending on your configuration. In theory, it should be able to work with both Joystick.h and Xinput.h as they both produce controllers using the HID interface, but I'd test it on your system as they both use the same family of boards. From there, depending on your use case, choose which library fits your purpose.
@HansVGinkel
@HansVGinkel 3 жыл бұрын
@@danstechbox7077 Thanks for your answer. In the meantime I've tried both libraries. It's only recognised as a XBOX controller with the XInput.h library. It's not being recognised as a XBOX controller with the Joystick.h 2.0 library.
@FERNANDOPENAS
@FERNANDOPENAS 3 жыл бұрын
How do I declare multiple buttons in a single input in this code? I understand the wiring but do not know the code.
@assamita81
@assamita81 Жыл бұрын
Hey there. I'm working on a device using this library. I need to know the status for a specific button at all times. So you set a button by using Joystick.setButton(buttonID, status). Is there any formula that gives you the status of that button? for instance Joystick.readButton(buttonID), and it returns 1 or 0? Important to mention that I'm not using individual pins for buttons, but a Keypad matrix of buttons.
@brianpaavo8192
@brianpaavo8192 2 жыл бұрын
Thank you very much. This was a great video for the first steps, I've successfully created two arduino leonardos each with several buttons and potentiometers. I'm clearly missing something at the end (as I see other commenters have)...I have created an alternate boards.txt file, altered the name, pid, and vid, then uploaded the sketch to one of the leonardos. When I open USB controllers to calibrate I only see one leonardo even though both are plugged in. There's something seeming skipped quickly past on creating a ?second? hardware directory? Went through several times...can you expand on that step please?
@brianpaavo8192
@brianpaavo8192 2 жыл бұрын
Renaming a second Leonardo is much more complex now. On Windows10 the ACTUAL boards.txt file is in the WindowsApps folder which is one of the most heavily protected locations and uneditable without complex permissions changes which are dangerous for other windows apps. The intermediate solutions seems to either use a Linux system OR us an earlier non-admin installation of the IDE. Working on that now.
@Johan-ex5yj
@Johan-ex5yj 2 жыл бұрын
@@brianpaavo8192 My Arduino Pro Micro can be programmed as a Board: “Arduino Leonardo” ; or as a Board: “Arduino Micro”. Both works fine as a Joystick. This gives you 2 different names in Devices. *(and that is just using the standard installation, without adding a boards.txt of your own)* I do not have 2 Arduino Pro Micro boards so can’t test if both will work at the same time. But this is something you can try, and please report back to say if this is a good alternative method.
@tnpotomacrr4792
@tnpotomacrr4792 2 жыл бұрын
It seems I was able to change an Arduino Micro name by finding the boards.txt in the Hardware folder that resides in the Arduino IDE program files. When I added my own boards.txt under the documents/Arduino/Hardware, the boards.txt there was ignored and uploading the sketch would revert back to the boards.txt in the IDE’s program folders.
@xaviercaju
@xaviercaju 11 ай бұрын
Hello! Could be possible to use this for a PlayStation controller?
@86poulin
@86poulin 2 жыл бұрын
Please someone help me. i try and upload the sketch exactly as he wrote it, then i even try and do an example from the uploaded sketch example and i keep getting 'Joystick_' does not name a type; did you mean 'Joystick'? What am i doing wrong?
@jason6344
@jason6344 3 жыл бұрын
I am very new to this and trying to make a joystick that emulates a controllers left analog stick. I have a joystick module and am soon to get a leonardo board . I am not so sure what to do past this.
@danstechbox7077
@danstechbox7077 3 жыл бұрын
If you watch the video and follow along with the way I've wired up the joystick, and when you're defining the code you only need to have the X and Y axis included (along with a button press if you want that in there too), that should do the job.
@patricklux3
@patricklux3 11 ай бұрын
Can I somehow do this With an ESP32 S2
@Magoo277
@Magoo277 2 жыл бұрын
Would this work if I used it for the nintendo switch or do I need a whole different library to work with that?
@lironkalfa5479
@lironkalfa5479 2 жыл бұрын
I can use a 3 analog joystick?
@UzairAli001
@UzairAli001 Жыл бұрын
I can't find boards.txt there is no hardware folder. I'm using Arduino IDE 2.0
@OvaisDIYGarage
@OvaisDIYGarage 2 жыл бұрын
how did you have it to work in fs2020? i tried connecting mine it is being recognized by windows and works on dcs as well, but on fs202 i see the controller but cant assign anythng to it , fs220 doesn't allow me to map anything on my attached board
@CapungPlastik
@CapungPlastik 2 жыл бұрын
Great tutorial! Btw, I've read some other examples. they have different values for the "set Axis" like (-127,127), (0,255), (-512, 512), (0,1023).. any info on this and what value should we choose? regards
@Johan-ex5yj
@Johan-ex5yj 2 жыл бұрын
That is probably related to the mechanical limitations of the setup. Example: You have built your own rudder- pedals. The travel in the potentiometer you are using is limited, only giving a voltage output from 1 to 4 volts (not 0 to 5 volts). If you put this into your sketch (without any range or map) and print out the values you are getting, it will be something like 204 to 818. The rudder in your Simulator (expecting 0 to 1023) will not turn its full range. So what you do to fix that, is set the range like this: Joystick.setRudderRange(204,818). Then everything will work fine.
@CapungPlastik
@CapungPlastik 2 жыл бұрын
@@Johan-ex5yj Hi, sorry if discussing this within the comment section. So I build a wireless drone simulator dongle using this library for the input. Its recepting values within 0-1023 for AETR input. While other simulator accepting the input as like in the game controller tab (after calibrated), some other simulator only works on certain values of input. like 0 to 127 or 180 to 360.. eventually I could manage this using Range and mapping, but when I connect the module to Android, it needs 0-1023 input. So using a mapped values will limit the stick movements. So, is there a way to recognize or manage the input for different device or OS (computer and mobile phone/Windows and Android)? (beside adding a button to switch value based on device 😀) Regards
@Johan-ex5yj
@Johan-ex5yj 2 жыл бұрын
@@CapungPlastik Yes, if you have simulators that expect other input ranges than the standard 0- 1023, you will have to use different range settings in your Arduino sketch. If you want to use the same Arduino micro for these different simulators, I would add a DIP switch connected to some digital inputs as a way to select the range to use. If you are developing your own simulator- interface in Windows or Android, you could use the serial port that the Arduino provides to communicate to your Arduino sketch to specify what range you want to use.
@MonicaYap
@MonicaYap 2 жыл бұрын
@@Johan-ex5yj hello sir can you help me? i am planning to use the potentiometer as a roll and pitch for my diy yoke. It doesn't obtain the full range. I tried the original code from this video, it is 0-1023 , 0-255. In the properties of my arduino, the value is flickering/changing even after I calibrated it. What should I do about this? What value should i use then?
@Johan-ex5yj
@Johan-ex5yj 2 жыл бұрын
@@MonicaYap Do not calibrate, use the min/max numbers obtained from Serial.println(Val) command in your sketch, entering them into Joystick.setRyAxisRange(Min?, Max?) afterwards. If this still gives too poor resolution, you need to find pots with smaller electrical angle (90deg or less), as is used in joysticks. Another way to go is to use Hall Effect Sensors. See this video >> kzfaq.info/get/bejne/ic2hmc-Urai4p5c.html
@malejvelkej_
@malejvelkej_ Жыл бұрын
Hi, i have maybe an issue, when i'm in the game controler properties and i have for exmaple throttle and z rotaion set in the code and when i turn the potentiometr it moves with both of the values please help
@dylans4776
@dylans4776 2 жыл бұрын
Would you happen to know how to hookup a 3 position switch (mainly the coding for that) I’d like to use it as a flaps switch
@Johan-ex5yj
@Johan-ex5yj 2 жыл бұрын
Assuming a centre- off- 3 position switch and using A2 input and RzAxis. Connect a 10kΩ resistor from A2 to Vcc Connect a 30kΩ resistor from A2 to Gnd Connect top terminal of switch to Gnd Connect middle terminal of switch to A2 Connect bottom terminal of switch to Vcc In your Sketch: In the setup section use: Joystick.setRzAxisRange(0, 1023); In the loop section use: Joystick.setRzAxis(analogRead(A2) - 512); This should give you (in your flight sim) a control surface that is centralized when the 3 position switch is in up position, half way down when switch is in middle position, and all the way down when switch is in down position. If your control surface is moving in the wrong direction, simply use Joystick.setRzAxisRange(1023, 0); instead.
DIAL UP YOUR COCKPIT with Arduino and Air Manager:Beginners Guide
26:57
Flight Sim Basics (Part 1): Connecting a Switch
11:27
The Warthog Project
Рет қаралды 74 М.
When You Get Ran Over By A Car...
00:15
Jojo Sim
Рет қаралды 29 МЛН
50 YouTubers Fight For $1,000,000
41:27
MrBeast
Рет қаралды 132 МЛН
3M❤️ #thankyou #shorts
00:16
ウエスP -Mr Uekusa- Wes-P
Рет қаралды 15 МЛН
I made a VR cockpit from PVC pipe
16:14
Akaki Kuumeri
Рет қаралды 93 М.
Beating the $20B Joystick Drift Problem, and giving it away for free
17:30
Hacking a weird TV censoring device
20:59
Ben Eater
Рет қаралды 3 МЛН
The Man Who Solved the World’s Most Famous Math Problem
11:14
Newsthink
Рет қаралды 652 М.
DIY Flight Simulator Joystick
9:10
Tom Stanton
Рет қаралды 1 МЛН
DIY 3D Printed Flight Yoke for 2020 Microsoft Flight Simulator
14:00
Michael Rechtin
Рет қаралды 197 М.
Тигра в команде Вафельки! А ты? 🐯#симбочка #тигра #симба
0:42
Inside Out Team VS God Team #shorts #insideout #god
0:13
SG Highlight
Рет қаралды 13 МЛН
Когда встаёшь первым после посадки самолёта
0:34
Время горячей озвучки
Рет қаралды 1,2 МЛН