Usare Joystick come pulsanti di navigazione

Ciao,
come sempre sono qui a chiedervi di aiutarmi a capire.
Vorrei usare un joystick resistivo come se fosse una pulsantiera su-giu-destra-sinistra usando solo due pin analogici.
Come potrei fare a farlo funzionare con tale funzione?

Ho trovato questa libreria che potrebbe fare al caso mio ma non riesco a farla funzionare.
JoystickController.rar
Per esempio ho provato a buttare giu due righe per accendere e spegnere un led in questo caso quello di arduino sulla porta 13:

#include "JoystickController.h"
JoystickController controller;

void setup(){
  Serial.begin(9600);
  pinMode(13, OUTPUT);
}
void loop(){
  controller.update();
int direct = controller.getDirection();

switch (direct){
        case  JoystickController::DIRECTION_UP:
        Serial.println("UP");
        break;

        case  JoystickController::DIRECTION_DOWN:
        Serial.println("DOWN");
        break;
    }
       delay(1000);

       if(JoystickController::DIRECTION_UP){
       digitalWrite(13,HIGH);}
    
       if(JoystickController::DIRECTION_DOWN){
       digitalWrite(13,LOW);}
    }

Ma il led si accende ma non si spegne piu. Invece a video ovvero nella seriale visualizzo correttamente i nomi della direzione che muovo.
Dove sbaglio?

[EDIT] aggiunto CODE TAGs. Uwe [/EDIT]

non conosco quella libreria, ma secondo me se usi la funzione analogRead e ti leggi il valore dei 2 potenziometri ti diverti di più e hai un maggior controllo di ciò che succede :stuck_out_tongue:

comunque leggendo il codice vedo un errore, così dovrebbe funzionare:

#include "JoystickController.h"
JoystickController controller;

void setup(){
  Serial.begin(9600);
  pinMode(13, OUTPUT);
}
void loop(){
  controller.update();
int direct = controller.getDirection();

switch (direct){
        case  JoystickController::DIRECTION_UP:
        Serial.println("UP");
        break;

        case  JoystickController::DIRECTION_DOWN:
        Serial.println("DOWN");
        break;
    }
       if(direct==JoystickController::DIRECTION_UP){
       digitalWrite(13,HIGH);}
    
       if(direct==JoystickController::DIRECTION_DOWN){
       digitalWrite(13,LOW);}
       delay(1000);
    }

la variabile che tu devi verificare è direct (come hai fatto nello switch), il resto sono valori fissi

Ma tu guarda un errore banale ti fa perdere la testa!!!
Comunque la libreria è ottima fa in modo di usare un joystick e dei tastini come un joypad da consolle!
provala...

Grazie...

di niente, la libreria la proverò se ho tempo :wink: ma avevo già fatto una cosa simile per provare a fare il controllo remoto del mio robot e mi piace di più usare le cose che faccio io :slight_smile: