Capture the flag
ESTRATEGIA 5. Programación del reto: Capture the flag
• En este momento, los alumnos deberán organizarse para llevar a cabo la programación del reto y el armado del
circuito para que éste funcione.
• ¿Qué se requiere hacer? Se deberá realizar una programación que realice lo siguiente:
• La conversión analógica – digital de las tres fotorresistencias.
• Se verificará, con ayuda del condicional IF – ELSE IF – ELSE el estado de las tres fotorresistencias al mismo
tiempo. Es necesario usar los operadores lógicos AND (&&) para comprobar varias condiciones al mismo
tiempo.
• Si se cumple el caso en el que la fotorresistencia de en medio recibe poca luz y las otras dos de los extremos
siguen recibiéndola, el robot avanzará hacia adelante. Y así con los demás casos que generan los giros a la
derecha, izquierda y el modo inmóvil, cuatro casos en total.
• Los equipos deberán organizarse para que puedan armar el circuito y programar al mismo tiempo, es decir, se
deberán de poner de acuerdo para delegar cada actividad y asimismo, ahorrar tiempo. El circuito a armar se
muestra en la siguiente diapositiva.
// _ ___ _______ ___ ___ ___ ___ _ _ ___ _____ ___
// / |_ )__ / \ / __|_ _| _ \/ __| | | |_ _|_ _/ __|
// | |/ / |_ \ |) | | (__ | || / (__| |_| || | | | \__ \
// |_/___|___/___/ \___|___|_|_\\___|\___/|___| |_| |___/
//
// Práctica: CaptureTheFlag
//
// Made by Eduardo Rafael Ramírez Camarillo
// License: CC-BY-SA 3.0
/* ****************************** CAPTURE THE FLAG **********************************
************ Conversión analógica - digital del valor de TRES fotoresistencias *******
Se utilizan tres LDR para controlar el movimiento del Frogduino; si se tapa una fotorresistencia
se genera un movimiento diferente.
ADELANTE: --- LUZ --- OSCURO --- LUZ ---
DERECHA: --- OSCURO --- LUZ --- LUZ ---
IZQUIERDA: --- LUZ --- LUZ --- OSCURO ---
DETENIDO: --- LUZ --- LUZ --- LUZ ---
***************** IMPLEMENTACIÓN DE LA ESTRUCTURA IF ELSE *********************
***************** el resultado lo mostramos en la TERMINAL **************************
*/
#include <Servo.h>
int ldr1 = 0, ldr2 = 1, ldr3 = 2;
// Pines donde conectaremos los LDR
int val1, val2, val3;
// Variables para almacenar los resultados de las conversión Analog-Dig
int valMax = 200;
Servo ruedaIzq, ruedaDer;
void setup ()
{
Serial.begin (9600); // Inicialización de la comunicación serial
ruedaIzq.attach (13);
ruedaDer.attach(10);
}
void loop ()
{
val1 = analogRead (ldr1);
// Conversión Analog-Dig y lo alamacena en "val1"
val2 = analogRead (ldr2);
// Conversión Analog-Dig y lo alamacena en "val2"
val3 = analogRead (ldr3);
// Conversión Analog-Dig y lo alamacena en "val3"
// map (variable, val min, val max, adaptacion min, adaptacion max);
Serial.print (val1);
Serial.print("\t"); // Código de impresión de un tabulador horizontal
Serial.print (val2);
Serial.print("\t");
Serial.println (val3);
Serial.print ("AVANCE = ");
if (val1 <= valMax && val2 >= valMax && val3 >= valMax)
{
Serial.println ("Izquierda");
ruedaIzq.write (90);
ruedaDer.write (0);
}
else if (val1 >= valMax && val2 <= valMax && val3 >= valMax)
{
Serial.println ("Adelante");
ruedaIzq.write (180);
ruedaDer.write (0);
}
else if (val1 >= valMax && val2 >= valMax && val3 <= valMax)
{
Serial.println ("Derecha");
ruedaIzq.write (180);
ruedaDer.write (90);
}
else
{
Serial.println ("Detenido");
ruedaIzq.write (90);
ruedaDer.write (90);
}
delay (200);
// Pausa para poder visualizar el resultado
}
// FIN