Aiuto Arduino pro micro: plugin joystick e potenziometro impazzito

Oltre al consiglio di Guglielmo volevo aggiungere qualche considerazione e consiglio.

Intanto se non indenti bene rischi di non riuscire a comprendere bene il flusso del programma. Non parlo di questo programma perché semplicissimo (e mi pare di aver capito che non l'hai fatto tu...), ma se ti abitui dall'inizio a scrivere correttamente ti troverai meglio in futuro con cose più complesse. Per indentare automaticamente c'è quel comando che ti ha indicato Guglielmo, ma si attiva anche premendo Ctrl-T.

Poi mi pare di capire che chi lo ha scritto non abbia poi molta esperienza di programmazione in C/C++ perché vedo graffe quasi "a caso", ad esempio in:

{int pot = analogRead(A0);
int mapped = map(pot,0,1023,0,255);
{Joystick.setThrottle(mapped);}}

la graffa che racchiude il comando setThrottle è inutile perché i comandi interni ad una coppia di graffe sono già un blocco che verrà eseguito in sequenza.
Non è necessario mettere le graffe in ogni comando, quindi basta scrivere (qui ti inizio a dare un senso dell'indentazione):

void loop()
{
  int pot = analogRead(A0);
  int mapped = map(pot,0,1023,0,255);
  Joystick.setThrottle(mapped);
}

Poi è definita una costante per configurare il pin da leggere:

const int pinToButtonMap = A0;

ma poi non la usa mai. Va benissimo mettere variabili o costanti di configurazione ma poi vanno usate :slight_smile: e comunque ti consiglio non solo di assegnare un nome più significativo possibile, ma anche sempre di metterle all'inizio del codice, per rendere più semplice la loro gestione.

Poi per gli input analogici non è necessario fare pinMode() in quanto sono sempre in input.

Per finire, la loop() viene eseguita moltissime volte al secondo, non credo che ti serva avere una tale risoluzione (oltre al fatto che può dare problemi di coerenza dei dati letti, ma ne parleremo più avanti), forse ti basta avere una decina di letture al secondo, e per fare questo basta fare una pausa di 100 millisecondi ad ogni ciclo.

Per cui, riassumo tutto in una cosa del genere:

// Analog eBrake-Handbrake
// PIN A0 to 10k pot output - Throttle Axis
// Use with Arduino ProMicro.
// Tested and working in DiRT RALLY + ASSETTO CORSA
// by AMSTUDIO
// 20.1.2017
#include <Joystick.h>

//  Configurazione:
// Pin del potenziometro
const int pinThrottle = A0;
// Pausa tra letture
const int ritardo = 100;

void setup() 
{
  Joystick.begin();
}

void loop()
{
  int pot = analogRead(pinThrottle);
  int mapped = map(pot,0,1023,0,255);
  Joystick.setThrottle(mapped);
  delay(ritardo); // Pausa
}