// Definir pines para los sensores infrarrojos
int sensorIzquierdo = 2;
int sensorIzquierdoCentro = 3;
int sensorDerechoCentro = 4;
int sensorDerecho = 5;
// Definir pines para los motores del carrito
int motorIzquierdoA = 6;
int motorIzquierdoB = 7;
int motorDerechoA = 8;
int motorDerechoB = 9;
void setup() {
// Configurar pines como entrada o salida
pinMode(sensorIzquierdo, INPUT);
pinMode(sensorIzquierdoCentro, INPUT);
pinMode(sensorDerechoCentro, INPUT);
pinMode(sensorDerecho, INPUT);
pinMode(motorIzquierdoA, OUTPUT);
pinMode(motorIzquierdoB, OUTPUT);
pinMode(motorDerechoA, OUTPUT);
pinMode(motorDerechoB, OUTPUT);
}
void loop() {
// Leer valores de los sensores
int izquierdo = digitalRead(sensorIzquierdo);
int izquierdoCentro = digitalRead(sensorIzquierdoCentro);
int derechoCentro = digitalRead(sensorDerechoCentro);
int derecho = digitalRead(sensorDerecho);
// Lógica de seguimiento de línea
if (izquierdo == LOW && izquierdoCentro == LOW && derechoCentro == LOW && derecho == LOW) {
// El carrito está sobre la línea
avanzar();
} else if (izquierdo == HIGH && izquierdoCentro == LOW && derechoCentro == LOW && derecho == LOW) {
// Giro a la izquierda
girarIzquierda();
} else if (izquierdo == LOW && izquierdoCentro == LOW && derechoCentro == LOW && derecho == HIGH) {
// Giro a la derecha
girarDerecha();
} else {
// Otros casos, ajustes necesarios
detener();
}
}
// Funciones de control de motores
void avanzar() {
digitalWrite(motorIzquierdoA, HIGH);
digitalWrite(motorIzquierdoB, LOW);
digitalWrite(motorDerechoA, HIGH);
digitalWrite(motorDerechoB, LOW);
}
void girarIzquierda() {
digitalWrite(motorIzquierdoA, LOW);
digitalWrite(motorIzquierdoB, HIGH);
digitalWrite(motorDerechoA, HIGH);
digitalWrite(motorDerechoB, LOW);
}
void girarDerecha() {
digitalWrite(motorIzquierdoA, HIGH);
digitalWrite(motorIzquierdoB, LOW);
digitalWrite(motorDerechoA, LOW);
digitalWrite(motorDerechoB, HIGH);
}
void detener() {
digitalWrite(motorIzquierdoA, LOW);
digitalWrite(motorIzquierdoB, LOW);
digitalWrite(motorDerechoA, LOW);
digitalWrite(motorDerechoB, LOW);
}
Comentarios
Publicar un comentario