Pilotaggio motore DC con Joystick SENZA ponte H

Ciao a tutti,
Sono nuovo di questo forum e sono un principiante.
Ho imparato da me a controllare la velocità di un motore DC con un potenziometro e a usare un joystick per far funzionare dei LED e un buzzer.
Ora vorrei capire come utilizzare il joystick potenziometrico con lo scopo di regolare la velocità e il verso di rotazione del motore: chiedendo ad amici elettronici mi hanno spiegato che si può usare il joystick come se fosse un potenziometro e in modo che il motore giri in un verso spostando il joystick a destra, e nell’altro verso spostandolo a sinistra.
Qualcuno sarebbe capace di creare un codice simile, magari spiegando ciò che si sta scrivendo?
Pubblico ciò che fino a ora sono riuscito a elaborare per conto mio.
Grazie in anticipo per l’attenzione.

codice motori-joystick:

int JOYSTICK_X = A0;
int JOYSTICK_Y = A1;
int JOYSTICK_BUTTON = 5;
int MOTOR_UP = 9;
int MOTOR_RIGHT = 10;
int MOTOR_LEFT = 8;
nt LED = 13;
int potenziometro_up = A2;
int potenziometro_right = A3;
int potenziometro_left = A4;

void setup(){
  pinMode(JOYSTICK_BUTTON, INPUT_PULLUP);
  pinMode(MOTOR_UP, OUTPUT);
  pinMode(MOTOR_RIGHT, OUTPUT);
  pinMode(MOTOR_LEFT, OUTPUT);
  pinMode(LED, OUTPUT);
}

void loop(){
  
  //inserisco i parametri per attivare i motori 
  int x = analogRead(JOYSTICK_X);
  int y = analogRead(JOYSTICK_Y);
  int button =! digitalRead(JOYSTICK_BUTTON);

  digitalWrite(MOTOR_RIGHT, x < 400);
  digitalWrite(MOTOR_LEFT, x > 600);
  digitalWrite(MOTOR_UP, y > 600);
delay(100);
}

codice motore-potenziometro:

int motore = 9;
int pulsante = 5;
int potenziometro = A2;

unsigned long ultimoTempoDebounce = 0;
int ultimaLettura = LOW;
int attesaDebounce = 400;
int motorStato = LOW;

void setup(){
  pinMode(motore, OUTPUT);
  pinMode(pulsante, INPUT);
}

void loop(){
  int lettura = digitalRead(pulsante);
  if(lettura != ultimaLettura and lettura == HIGH){
    if(!motorStato){
      ultimoTempoDebounce = millis();
    }
    motorStato =!motorStato;
  }
  ultimaLettura = lettura;

  if(motorStato){
    if((millis()-ultimoTempoDebounce) > attesaDebounce){
      int motorSpeed = map(analogRead(potenziometro), 0, 1023, 70, 255);
      analogWrite(motore, motorSpeed);
    }else{
      analogWrite(motore, 255);
    }
  }else{
    analogWrite(motore, 0);
  }
  delay(50);
}

Prima di tutto ti segnalo che, nella sezione in lingua Inglese, si può scrivere SOLO in Inglese ... quindi, per favore, la prossima volta presta più attenzione in quale sezione metti i tuoi post ...

... poi, essendo il tuo primo post, nel rispetto del regolamento della sezione Italiana del forum (… punto 13, primo capoverso), ti chiedo cortesemente di presentarti IN QUESTO THREAD (spiegando bene quali conoscenze hai di elettronica e di programmazione ... possibilmente evitando di scrivere solo una riga di saluto) e di leggere con molta attenzione il su citato REGOLAMENTO ... Grazie.

Guglielmo

P.S.: Il tuo post è già stato spostato nell'opportuna sezione del forum "Italiano”dove puoi proseguire la discussione.
P.P.S.: Ti ricordo che, purtroppo, fino a quando non sarà fatta la presentazione nell’apposito thread, nessuno ti potrà rispondere, quindi ti consiglio di farla al più presto. :wink: