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 https://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); }