```cpp // Definir pines de los sensores TCRT5000 const int sensor1 = 2; const int sensor2 = 3; // Definir pines del sensor HC-SR04 const int triggerPin = 8; const int echoPin = 9; // Definir pines de los motores conectados al L298N const int motor1A = 4; const int motor1B = 5; const int motor2A = 6; const int motor2B = 7; // Velocidad máxima de los motores const int velocidadMaxima = 150; // Definir variables para los valores de los sensores int valorSensor1; int valorSensor2; // Definir variable para la distancia detectada por el sensor HC-SR04 float distancia; void setup() { // Inicializan los pines de los sensores como entrada pinMode(sensor1, INPUT); pinMode(sensor2, INPUT); // Inicializan los pines del sensor HC-SR04 como salida y entrada pinMode(triggerPin, OUTPUT); pinMode(echoPin, INPUT); // Inicializan los pines de los motores como salida pinMode(motor1A, OUTPUT); pinMode(motor1B, OUTPUT); pinMode(motor2A, OUTPUT); pinMode(motor2B, OUTPUT); } void loop() { // Leer los valores de los sensores valorSensor1 = digitalRead(sensor1); valorSensor2 = digitalRead(sensor2); // Leer la distancia detectada por el sensor HC-SR04 distancia = medirDistancia(); // Si la distancia es menor a 40 cm, avanzar hacia el objeto detectado if (distancia < 40) { avanzarRecto(); } // Si ambos sensores detectan el borde blanco, detener los motores else if (valorSensor1 == HIGH && valorSensor2 == HIGH) { detenerMotores(); } // Si el sensor izquierdo detecta el dojo negro, girar hacia la derecha else if (valorSensor1 == LOW) { girarDerecha(); } // Si el sensor derecho detecta el dojo negro, girar hacia la izquierda else if (valorSensor2 == LOW) { girarIzquierda(); } // Si ninguno de los sensores detecta el borde blanco ni el dojo negro ni hay objetos cercanos, avanzar recto else { avanzarRecto(); } } // Función para medir distancia con el sensor HC-SR04 long medirDistancia() { long duracion, distancia; digitalWrite(triggerPin, LOW); delayMicroseconds(2); digitalWrite(triggerPin, HIGH); delayMicroseconds(10); digitalWrite(triggerPin, LOW); duracion = pulseIn(echoPin, HIGH); distancia = (duracion / 2) / 29.1; return distancia; // Retornar distancia en cm } // Función para avanzar recto void avanzarRecto() { analogWrite(motor1A, velocidadMaxima); digitalWrite(motor1B, LOW); analogWrite(motor2A, velocidadMaxima); digitalWrite(motor2B, LOW); } // Función para girar hacia la izquierda void girarIzquierda() { analogWrite(motor1A, velocidadMaxima); digitalWrite(motor1B, LOW); analogWrite(motor2A, LOW); analogWrite(motor2B, velocidadMaxima); } // Función para girar hacia la derecha void girarDerecha() { digitalWrite(motor1A, LOW); analogWrite(motor1B, velocidadMaxima); analogWrite(motor2A, velocidadMaxima); digitalWrite(motor2B, LOW); } // Función para detener los motores void detenerMotores() { digitalWrite(motor1A, LOW); digitalWrite(motor1B, LOW); digitalWrite(motor2A, LOW); digitalWrite(motor2B, LOW); } ```
Excelente video!!! 100% recomendado. Muchas gracias!!!
hola tendra el codigo para descargarse?
```cpp
// Definir pines de los sensores TCRT5000
const int sensor1 = 2;
const int sensor2 = 3;
// Definir pines del sensor HC-SR04
const int triggerPin = 8;
const int echoPin = 9;
// Definir pines de los motores conectados al L298N
const int motor1A = 4;
const int motor1B = 5;
const int motor2A = 6;
const int motor2B = 7;
// Velocidad máxima de los motores
const int velocidadMaxima = 150;
// Definir variables para los valores de los sensores
int valorSensor1;
int valorSensor2;
// Definir variable para la distancia detectada por el sensor HC-SR04
float distancia;
void setup() {
// Inicializan los pines de los sensores como entrada
pinMode(sensor1, INPUT);
pinMode(sensor2, INPUT);
// Inicializan los pines del sensor HC-SR04 como salida y entrada
pinMode(triggerPin, OUTPUT);
pinMode(echoPin, INPUT);
// Inicializan los pines de los motores como salida
pinMode(motor1A, OUTPUT);
pinMode(motor1B, OUTPUT);
pinMode(motor2A, OUTPUT);
pinMode(motor2B, OUTPUT);
}
void loop() {
// Leer los valores de los sensores
valorSensor1 = digitalRead(sensor1);
valorSensor2 = digitalRead(sensor2);
// Leer la distancia detectada por el sensor HC-SR04
distancia = medirDistancia();
// Si la distancia es menor a 40 cm, avanzar hacia el objeto detectado
if (distancia < 40) {
avanzarRecto();
}
// Si ambos sensores detectan el borde blanco, detener los motores
else if (valorSensor1 == HIGH && valorSensor2 == HIGH) {
detenerMotores();
}
// Si el sensor izquierdo detecta el dojo negro, girar hacia la derecha
else if (valorSensor1 == LOW) {
girarDerecha();
}
// Si el sensor derecho detecta el dojo negro, girar hacia la izquierda
else if (valorSensor2 == LOW) {
girarIzquierda();
}
// Si ninguno de los sensores detecta el borde blanco ni el dojo negro ni hay objetos cercanos, avanzar recto
else {
avanzarRecto();
}
}
// Función para medir distancia con el sensor HC-SR04
long medirDistancia() {
long duracion, distancia;
digitalWrite(triggerPin, LOW);
delayMicroseconds(2);
digitalWrite(triggerPin, HIGH);
delayMicroseconds(10);
digitalWrite(triggerPin, LOW);
duracion = pulseIn(echoPin, HIGH);
distancia = (duracion / 2) / 29.1;
return distancia; // Retornar distancia en cm
}
// Función para avanzar recto
void avanzarRecto() {
analogWrite(motor1A, velocidadMaxima);
digitalWrite(motor1B, LOW);
analogWrite(motor2A, velocidadMaxima);
digitalWrite(motor2B, LOW);
}
// Función para girar hacia la izquierda
void girarIzquierda() {
analogWrite(motor1A, velocidadMaxima);
digitalWrite(motor1B, LOW);
analogWrite(motor2A, LOW);
analogWrite(motor2B, velocidadMaxima);
}
// Función para girar hacia la derecha
void girarDerecha() {
digitalWrite(motor1A, LOW);
analogWrite(motor1B, velocidadMaxima);
analogWrite(motor2A, velocidadMaxima);
digitalWrite(motor2B, LOW);
}
// Función para detener los motores
void detenerMotores() {
digitalWrite(motor1A, LOW);
digitalWrite(motor1B, LOW);
digitalWrite(motor2A, LOW);
digitalWrite(motor2B, LOW);
}
```
Gracias participaremos en un concurso si usamos su código le aviso cómo nos fue.😊
como te fué?
Pasa el código
alguien que pase codigo escrito??