NIVEL I SECCIÓN 9
PARA ACCEDER AL CODIGO BASE DEL CARRO
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// Declaración de constantes enteras globales para nombrar los pines:
// 1. Así no tener que recordar sus números más adelante
// 2. Así cambiar rápido de número de pin, en caso de haber conectado mal
const int pinMotorIzqRetro = 6;
const int pinMotorIzqAvance = 5;
const int pinMotorDerRetro = 3;
const int pinMotorDerAvance = 11;
const int pinPulsador = 13;
const int pinLED = 10;
// Declaración de constantes enteras globales para poner nombre a velocidad y tiempos que se repetirán mucho más adelante:
// 1. Así, poder variar desde aquí una sola vez los valores de pruebas mientras se programa y se ajusta
const int velocidadA = 150;
const int velocidadB = 150;
const int tiempoGiro = 600;
const int tiempoLineal = 1000;
void setup() {
// Código de configuración que se ejecuta una sola vez:
// Configurar los pines como entradas o como salidas
pinMode(pinMotorIzqRetro, OUTPUT);
pinMode(pinMotorIzqAvance, OUTPUT);
pinMode(pinMotorDerRetro, OUTPUT);
pinMode(pinMotorDerAvance, OUTPUT);
pinMode(pinLED, OUTPUT);
delay(6000); // Tiempo para acomodar el robot en el piso
}
void loop() {
// Código que se ejecuta de manera repetida:
// Avance del robot durante el tiempo lineal
// Ambos motores avanzan
analogWrite(pinMotorIzqAvance,velocidadB);
analogWrite(pinMotorDerAvance,velocidadA);
analogWrite(pinMotorIzqRetro,0);
analogWrite(pinMotorDerRetro,0);
delay(tiempoLineal);
// Giro del robot a la derecha durante el tiempo de giro.
// Motor izquierdo avanza, motor derecho retrocede
analogWrite(pinMotorIzqAvance,velocidadB);
analogWrite(pinMotorDerAvance,0);
analogWrite(pinMotorIzqRetro,0);
analogWrite(pinMotorDerRetro,0);
delay(tiempoGiro);
// Retroceso del robot durante el tiempo lineal
// Ambos motores retroceden
analogWrite(pinMotorIzqAvance,velocidadB);
analogWrite(pinMotorDerAvance,velocidadA);
analogWrite(pinMotorIzqRetro,0);
analogWrite(pinMotorDerRetro,0);
delay(tiempoLineal);
//Giro del robot a la izquierda durante el tiempo de giro
// Motor derecho avanza, motor izquierdo retrocede
analogWrite(pinMotorIzqAvance,velocidadB);
analogWrite(pinMotorDerAvance,0);
analogWrite(pinMotorIzqRetro,0);
analogWrite(pinMotorDerRetro,0);
delay(tiempoGiro);
// Retroceso del robot durante el tiempo lineal
// Ambos motores retroceden
analogWrite(pinMotorIzqAvance,velocidadB);
analogWrite(pinMotorDerAvance,velocidadA);
analogWrite(pinMotorIzqRetro,0);
analogWrite(pinMotorDerRetro,0);
delay(tiempoLineal);
// Giro del robot a la derecha durante el tiempo de giro.
// Motor izquierdo avanza, motor derecho retrocede
analogWrite(pinMotorIzqAvance,velocidadB);
analogWrite(pinMotorDerAvance,0);
analogWrite(pinMotorIzqRetro,0);
analogWrite(pinMotorDerRetro,0);
delay(tiempoGiro);
// Avance del robot durante el tiempo lineal
// Ambos motores avanzan
analogWrite(pinMotorIzqAvance,velocidadB);
analogWrite(pinMotorDerAvance,velocidadA);
analogWrite(pinMotorIzqRetro,0);
analogWrite(pinMotorDerRetro,0);
delay(tiempoLineal);
//Giro del robot a la izquierda durante el tiempo de giro
// Motor derecho avanza, motor izquierdo retrocede
analogWrite(pinMotorIzqAvance,velocidadB);
analogWrite(pinMotorDerAvance,0);
analogWrite(pinMotorIzqRetro,0);
analogWrite(pinMotorDerRetro,0);
delay(tiempoGiro);
// Detenimiento del robot
// Ambos motores se quedan quietos y se enciende LED durante el tiempo lineal. Después se apaga el LED
digitalWrite(pinLED,HIGH);
analogWrite(pinMotorIzqAvance,0);
analogWrite(pinMotorDerAvance,0);
analogWrite(pinMotorIzqRetro,0);
analogWrite(pinMotorDerRetro,0);
delay(tiempoLineal);
digitalWrite(pinLED,LOW);
}
