TolentinoCotesta

XY_Joystick

Jul 17th, 2018
138
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.19 KB | None | 0 0
  1. #define UP_VAL 1000
  2. #define DW_VAL 25
  3. #define RX_VAL 1000
  4. #define SX_VAL 25
  5.  
  6. #define VRX_PIN A0
  7. #define VRY_PIN A1
  8. #define SW_PIN  A2
  9.  
  10. // Usiamo una enumerazione per identificare le azioni eseguite con il joystick
  11. enum direzione{ BUTTON, UP, DOWN, RIGHT, LEFT, NOT };
  12.  
  13. direzione joystick(void){
  14.   unsigned int X,Y;
  15.   X = analogRead(VRX_PIN);  // Destra - Sinistra
  16.   Y = analogRead(VRY_PIN);  // Su - Giù
  17.   delay(50);
  18.  
  19.   if(digitalRead(SW_PIN) == LOW){
  20.     delay(50);  // Semplice antirimbalzo per il pulsante
  21.     return BUTTON;
  22.   }
  23.   else if(Y >= UP_VAL)
  24.     return UP;
  25.   else if(Y <= DW_VAL)
  26.     return DOWN;
  27.   else if(X >= RX_VAL)  
  28.     return RIGHT;
  29.   else if(X <= SX_VAL)
  30.     return LEFT;
  31.   else
  32.     return NOT;
  33. }
  34.  
  35. void setup() {
  36.   pinMode(SW_PIN, INPUT_PULLUP);
  37.   Serial.begin(9600);
  38. }
  39.  
  40. void loop() {
  41.   switch(joystick()){
  42.     case BUTTON:
  43.       Serial.println("Button pressed");
  44.       break;
  45.     case UP:
  46.       Serial.println("Up");
  47.       break;
  48.     case DOWN:
  49.       Serial.println("Down");
  50.       break;
  51.     case LEFT:
  52.       Serial.println("Left");
  53.       break;
  54.     case RIGHT:
  55.       Serial.println("Right");
  56.       break;
  57.     case NOT:
  58.       break;
  59.   }
  60.  
  61. }
Add Comment
Please, Sign In to add comment