
Aprenderás a tomar decisiones con sensores y controlar dos motores. En esta guía encontrarás un montaje concreto, criterios de conexión y un programa funcional de referencia para este circuito.

Un prototipo funcional pensado para practicar electrónica y programación con Arduino. La ilustración muestra la disposición conceptual de los componentes y sirve como referencia visual del montaje.
El Arduino recibe las señales de entrada, ejecuta la lógica del programa y controla las salidas. Antes de energizar, verifica polaridad, GND común y el valor de las resistencias. Los pines indicados son una propuesta de montaje y pueden adaptarse si modificas el código.
Usa esta tabla junto con el diagrama para montar el circuito. Los pines corresponden al programa incluido en este proyecto.
| Componente / terminal | Conectar a Arduino |
|---|---|
| Sensor izquierdo OUT | D2 |
| Sensor derecho OUT | D3 |
| Sensores VCC | 5V |
| Sensores GND | GND |
| L298N ENA | D5 |
| L298N ENB | D6 |
| L298N IN1 | D7 |
| L298N IN2 | D8 |
| L298N IN3 | D9 |
| L298N IN4 | D10 |
| L298N OUT1/OUT2 | Motor izquierdo |
| L298N OUT3/OUT4 | Motor derecho |
| L298N GND | GND Arduino |
| L298N alimentación motor | Batería |
Los pines ENA/ENB controlan velocidad mediante PWM. La alimentación de los motores debe ir a la entrada de potencia del L298N, no al pin 5 V del Arduino. Une las tierras.
Este es un ejemplo funcional para el montaje descrito:
const int IZQ = 2;
const int DER = 3;
const int ENA = 5;
const int ENB = 6;
const int IN1 = 7;
const int IN2 = 8;
const int IN3 = 9;
const int IN4 = 10;
void setup() {
pinMode(IZQ, INPUT);
pinMode(DER, INPUT);
pinMode(ENA, OUTPUT);
pinMode(ENB, OUTPUT);
pinMode(IN1, OUTPUT); pinMode(IN2, OUTPUT);
pinMode(IN3, OUTPUT); pinMode(IN4, OUTPUT);
}
void motorAdelante() {
digitalWrite(IN1,HIGH); digitalWrite(IN2,LOW);
digitalWrite(IN3,HIGH); digitalWrite(IN4,LOW);
analogWrite(ENA,150); analogWrite(ENB,150);
}
void giroIzq() {
digitalWrite(IN1,LOW); digitalWrite(IN2,HIGH);
digitalWrite(IN3,HIGH); digitalWrite(IN4,LOW);
analogWrite(ENA,120); analogWrite(ENB,160);
}
void giroDer() {
digitalWrite(IN1,HIGH); digitalWrite(IN2,LOW);
digitalWrite(IN3,LOW); digitalWrite(IN4,HIGH);
analogWrite(ENA,160); analogWrite(ENB,120);
}
void loop() {
int izq = digitalRead(IZQ);
int der = digitalRead(DER);
if (izq == LOW && der == LOW) motorAdelante();
else if (izq == HIGH && der == LOW) giroIzq();
else if (izq == LOW && der == HIGH) giroDer();
else { analogWrite(ENA,0); analogWrite(ENB,0); }
}Consulta directamente los componentes disponibles en Fasantronic para replicar este proyecto.