Para el siguiente circuito usamos un Punete-H y dos potenciómetros de entre 10k y 20k, como se muestra

La variación de los potes, ocasionará en A0 y/o A1 una entrada de muestreo de en el rango desde 0 a 1023, que DEBEMOS RECONVERTIRLA (Mapearla) al rango de 0 a 255 que es el rango de los motores.
Aqui se muestra el sketch:
/*
Demuestra como controlar motores DC con potenciometros
Gustavo Dutour, 2017
http://roboticadelacosta.uy
*/
// Motor A
int enA = 9;
int in1 = 8;
int in2 = 7;
// Motor B
int enB = 3;
int in3 = 5;
int in4 = 4;
// Potenciometros
int SpeedControl1 = A0;
int SpeedControl2 = A1;
// Variables de velocidad
int MotorSpeed1 = 0;
int MotorSpeed2 = 0;
void setup()
{
pinMode(enA, OUTPUT);
pinMode(enB, OUTPUT);
pinMode(in1, OUTPUT);
pinMode(in2, OUTPUT);
pinMode(in3, OUTPUT);
pinMode(in4, OUTPUT);
}
void loop() {
// Motor A, hacia adelante
digitalWrite(in1, HIGH);
digitalWrite(in2, LOW);
// Motor B, hacia adelante
digitalWrite(in3, HIGH);
digitalWrite(in4, LOW);
// Leemos potenciometros
MotorSpeed1 = analogRead(SpeedControl1);
MotorSpeed2 = analogRead(SpeedControl2);
// Mapeamos el rango a 0-255
MotorSpeed1 = map(MotorSpeed1, 0, 1023, 0, 255);
MotorSpeed2 = map(MotorSpeed2, 0, 1023, 0, 255);
// Ajuste para prevenir el esfuerzo del motor a bajos impulsos
if (MotorSpeed1 < 8)MotorSpeed1 = 0;
if (MotorSpeed2 < 8)MotorSpeed2 = 0;
// Setear velocidad de los motores
analogWrite(enA, MotorSpeed1);
analogWrite(enB, MotorSpeed2);
}
