Controlling DC Motors
Table
| Función del código | Pin Arduino | Conexión en L293D / módulo | Dirección |
|---|---|---|---|
| IN1 motor 1 | D9 | U1 1A | Salida digital |
| IN2 motor 1 | D8 | U1 2A | Salida digital |
| ENA1 motor 1 PWM | D10 | U1 EN1,2 | Salida PWM |
| IN3 motor 2 | D5 | U1 3A | Salida digital |
| IN4 motor 2 | D6 | U1 4A | Salida digital |
| ENA2 motor 2 PWM | D3 | U1 EN3,4 | Salida PWM |
| Bluetooth TX | D0/RX | BT1 UART-TX | Entrada serie Arduino |
| Bluetooth RX | D1/TX por R1/R2 | BT1 UART-RX | Salida serie Arduino con divisor |
Ini
[env:uno] platform = atmelavr board = uno framework = arduino monitor_speed = 9600
Cpp
// Motor 1 int IN1 = 9; int IN2 = 8; int ENA1 = 10; // Motor 2 int IN4 = 6; int IN3 = 5; int ENA2 = 3; int speedmotor = 127; // 1 = Hacia delante, 2 = Hacia atras, 3 = Giro derechas, 4 = Giro izquierdas int movimiento = 0; int movAnterior = -1; bool estado = true; void setup() { Serial.begin(9600); // HC-05 normalmente trabaja a 9600 baud en modo datos pinMode(IN1, OUTPUT); pinMode(IN2, OUTPUT); pinMode(ENA1, OUTPUT); pinMode(IN3, OUTPUT); pinMode(IN4, OUTPUT); pinMode(ENA2, OUTPUT); digitalWrite(IN1, LOW); digitalWrite(IN2, LOW); digitalWrite(IN3, LOW); digitalWrite(IN4, LOW); analogWrite(ENA1, 0); analogWrite(ENA2, 0); Serial.println("CONTROL INALAMBRICO CONECTADO "); } void loop() { if (Serial.available()) { movimiento = Serial.parseInt(); } if (movimiento != movAnterior) { movAnterior = movimiento; if (movimiento == 0) { Serial.println("Coche Detenido"); digitalWrite(IN1, LOW); digitalWrite(IN2, LOW); digitalWrite(IN3, LOW); digitalWrite(IN4, LOW); analogWrite(ENA1, 0); analogWrite(ENA2, 0); estado = true; } else if (movimiento == 1) { Serial.println("Ir hacia adelante: " + String(speedmotor)); digitalWrite(IN1, HIGH); digitalWrite(IN2, LOW); digitalWrite(IN3, LOW); digitalWrite(IN4, HIGH); analogWrite(ENA1, speedmotor); analogWrite(ENA2, speedmotor); estado = true; } else if (movimiento == 2) { Serial.println("Ir hacia atras: " + String(speedmotor)); digitalWrite(IN1, LOW); digitalWrite(IN2, HIGH); digitalWrite(IN3, HIGH); digitalWrite(IN4, LOW); analogWrite(ENA1, speedmotor); analogWrite(ENA2, speedmotor); estado = true; } else if (movimiento == 3) { Serial.println("Girar hacia la derecha: " + String(speedmotor)); digitalWrite(IN1, HIGH); digitalWrite(IN2, LOW); digitalWrite(IN3, HIGH); digitalWrite(IN4, LOW); analogWrite(ENA1, speedmotor); analogWrite(ENA2, 0); estado = true; } else if (movimiento == 4) { Serial.println("Girar hacia la izquierda: " + String(speedmotor)); digitalWrite(IN1, LOW); digitalWrite(IN2, HIGH); digitalWrite(IN3, LOW); digitalWrite(IN4, HIGH); analogWrite(ENA1, 0); analogWrite(ENA2, speedmotor); estado = true; } Serial.println("movimiento: " + String(movimiento)); if (movimiento == 5 && estado == true) { Serial.println("speedmotor antes de cambiar: " + String(speedmotor)); speedmotor = speedmotor - 50; speedmotor = constrain(speedmotor, 10, 255); Serial.println("speedmotor despues de cambiar: " + String(speedmotor)); analogWrite(ENA1, speedmotor); analogWrite(ENA2, speedmotor); delay(500); estado = false; } else if (movimiento == 6 && estado == true) { Serial.println("speedmotor antes de cambiar: " + String(speedmotor)); speedmotor = speedmotor + 50; speedmotor = constrain(speedmotor, 10, 255); Serial.println("speedmotor despues de cambiar: " + String(speedmotor)); analogWrite(ENA2, speedmotor); analogWrite(ENA1, speedmotor); delay(500); estado = false; } delay(1000); } }
Welcome 👋
Flux helps you build PCBs faster with an AI teammate!
Create your account to collaborate, stay updated, fork your own version, and get instant answers from our AI agent.