Advertisement
Guest User

Untitled

a guest
Aug 23rd, 2020
8,451
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 2.71 KB | None | 0 0
  1. // USB Joystick with hall effect sensors
  2. // NOTE: This sketch file is for use with Arduino Leonardo and
  3. //       Arduino Micro only.
  4. //------------------------------------------------------------
  5.  
  6. //change these to define which pins your hall effect sensors or potentiometers are connected.
  7. //to change button connections, scroll down to loop()
  8. #define X_PIN A1
  9. #define Y_PIN A0
  10. #define R_PIN A3
  11. #define T_PIN A2
  12. //change these to change trim and limits. Calibrating your joystick in Windows achieves the same thing
  13. #define X_MIN 0
  14. #define X_MAX 1023
  15. #define X_TRIM 0
  16. #define X_INVERT -1
  17. //to invert an axis, change 1 to -1
  18. #define Y_MIN 0
  19. #define Y_MAX 1023
  20. #define Y_TRIM 0
  21. #define Y_INVERT -1
  22.  
  23. #define R_MIN 0
  24. #define R_MAX 1023
  25. #define R_TRIM 0
  26. #define R_INVERT 1
  27.  
  28. #define T_MIN 0
  29. #define T_MAX 1023
  30. #define T_TRIM 0
  31. #define T_INVERT 1
  32.  
  33.  
  34. #include <Joystick.h>
  35.  
  36. Joystick_ Joystick(0x04,JOYSTICK_TYPE_JOYSTICK,
  37.   7, 0,                  // Button Count, Hat Switch Count
  38.   true, true, false,     // X and Y, but no Z Axis
  39.   false, false, false,   // No Rx, Ry, or Rz
  40.   true, true,            // Yes rudder, yes throttle
  41.   false, false, false);  // No accelerator, brake, or steering
  42.  
  43. void setup() {
  44.   // Initialize Button Pins
  45.   pinMode(2, INPUT_PULLUP);
  46.   pinMode(3, INPUT_PULLUP);
  47.   pinMode(4, INPUT_PULLUP);
  48.   pinMode(5, INPUT_PULLUP);
  49.   pinMode(6, INPUT_PULLUP);
  50.   pinMode(7, INPUT_PULLUP);
  51.   pinMode(8, INPUT_PULLUP);
  52.  
  53.   // Initialize Joystick Library
  54.   Joystick.begin(false); //false = dont send automatically. We will sendState() at the end of the loop
  55.   Joystick.setXAxisRange(-512, 512);
  56.   Joystick.setYAxisRange(-512, 512);
  57.   Joystick.setRudderRange(-512, 512);
  58.   Joystick.setThrottleRange(-512, 512);
  59. }
  60.  
  61.  
  62. void loop() {
  63.   //read buttons. Change pins and button numbers here, if you want to have different number connected to different pin
  64.   Joystick.setButton(0, !digitalRead(3)); //pin 2 LOW means button 0 PRESSED
  65.   Joystick.setButton(1, !digitalRead(2)); //etc.
  66.   Joystick.setButton(2, !digitalRead(5));
  67.   Joystick.setButton(3, !digitalRead(6));
  68.   Joystick.setButton(4, !digitalRead(7));
  69.   Joystick.setButton(5, !digitalRead(4));
  70.   Joystick.setButton(6, !digitalRead(8));
  71.  
  72.   //read analog axes
  73.   int value = map(analogRead(X_PIN) + X_TRIM , X_MIN, X_MAX, -512, 512) * X_INVERT;
  74.   Joystick.setXAxis(value);
  75.   value = map(analogRead(Y_PIN) + Y_TRIM , Y_MIN, Y_MAX, -512, 512) *Y_INVERT;
  76.   Joystick.setYAxis(value);
  77.   value = map(analogRead(R_PIN) + R_TRIM , R_MIN, R_MAX, -512, 512) * R_INVERT;
  78.   Joystick.setRudder(value);
  79.   value = map(analogRead(T_PIN) + T_TRIM , T_MIN, T_MAX, -512, 512) * T_INVERT;
  80.   Joystick.setThrottle(value);
  81.  
  82.   Joystick.sendState();
  83.   delay(10);
  84. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement