Está en la página 1de 3

Sesión 14: Mi robot se mueve siguiendo la luz-

1. Capturar y subir el siguiente programa al Arduino UNO

// Introducción de variables
int LEDD = 4; // LED INDICADOR LDR DERECHO. PIN 4
int LEDI = 5; // LED INDICADOR LDR IZQUIERDO PIN5
int LDRI = 0; // Pin LDR IZQUIERDO. PINA0
int LDRD = 1; // Pin LDR DERECHO PINA1
int SENSORD = 0; // TOMA VALOR LDR DERECHO.
int SENSORI = 0; // TOMA VALOR LDR IZQUIERDO.

// Declaración de puertos I/O digitales


void setup()
{
Serial.begin(115200);
pinMode ( LEDI, OUTPUT ) ; // DECLARACIÓN DE PUERTO DE SALIDA DIGITAL.
pinMode ( LEDD, OUTPUT ) ; // DECLARACIÓN DE PUERTO DE SALIDA DIGITAL.
}

// Mi programa
void loop()
{
SENSORI = analogRead(LDRI); // Leemos el valor Analógico A0. Sensor Izquierdo
SENSORD = analogRead(LDRD); // Leemos el valor Analógico A1. Sensor Derecho

digitalWrite (LEDI, LOW ); // Asignamos un estado lógico BAJO al pin5


digitalWrite (LEDD, LOW ); // Asignamos un estado lógico BAJO al pin4

Serial.println("LDR IZQUIERDO" + String(SENSORI) + " LDR DERECHO" + String(SENSORD));

if (SENSORI > SENSORD)


{
digitalWrite (LEDI, HIGH); // Asignamos un estado lógico ALTO al pin5
delay(50);
}
else
{
if (SENSORI < SENSORD)
{
digitalWrite (LEDD, HIGH); // Asignamos un estado lógico ALTO al pin4
delay(50);
}
}
}

2. Una vez con el programa cargado en el Arduino, abrir el monitor serial (hay que ir al menú Herramientas/Monitor
Serie). Con una lámpara dirigida a los sensores acerca y alejas la luz de los sensores LDR. Y registra lo observado.
a. ¿Qué datos me muestra el monitor serie?
b. Qué me muestra el monitor serie si acerco la luz al LDR Izquierdo y al LDR Derecho.
c. Cuando se enciende el LED Izquierdo
d. Cuando se enciende el LED Derecho.
e. El condicional IF (toma de decisión) cuál es su función al ejecutarse el programa.
f. ¿Hay diferencias a la forma de manejar entradas y salidas digitales?
g. ¿Las entradas analógicas requieren configurarse como entradas?
h. Qué tipo de dato lee la siguiente línea de código.

3. Ahora que ya está un poco más claro como detecta la luz el Arduino vamos hacer que nuestro robot siga la luz

// SEGUIDOR DE LUZ PROGRAMABLE

//DECLARACION DE VARIABLES

int MD = 7; // Motor Derecho. Salida Digita. PIN 7 >>>>>> 2 SN


int MDD = 6; // Motor Derecho. Salida Digital. PIN 6 >>>>>> 6 SN
int MI = 9; // Motor izquierdo. Salida Digital. PIN 9 >>>>>> 10 SN
int MII = 8; // Motor Izquierdo. Salida Digital. PIN 8 >>>>>> 15 SN
int LEDD = 4 // LED INDICADOR LDR DERECHO. PIN 4
int LEDI = 5; // LED INDICADOR LDR IZQUIERDO PIN5
int LDRI = 0; // Pin LDR IZQUIERDO. PINA0
int LDRD = 1; // Pin LDR DERECHO PINA1

int SENSORD = 0; // TOMA VALOR LDR DERECHO.


int SENSORI = 0; // TOMA VALOR LDR IZQUIERDO.

// DECLARACION DE PUERTOS.
void setup()
{
pinMode ( MD, OUTPUT ) ; // DECLARACIÓN DE PUERTO DE SALIDA DIGITAL.
pinMode ( MDD, OUTPUT ) ; // DECLARACIÓN DE PUERTO DE SALIDA DIGITAL.
pinMode ( MI, OUTPUT ) ; // DECLARACIÓN DE PUERTO DE SALIDA DIGITAL.
pinMode ( MII, OUTPUT ) ; // DECLARACIÓN DE PUERTO DE SALIDA DIGITAL.
pinMode ( LEDI, OUTPUT ) ; // DECLARACIÓN DE PUERTO DE SALIDA DIGITAL.
pinMode ( LEDD, OUTPUT ) ; // DECLARACIÓN DE PUERTO DE SALIDA DIGITAL.

//PROGRAMACION
void loop()
{
SENSORI = analogRead(LDRI); // Leemos el valor de A0. Sensor Izquierdo
SENSORD = analogRead(LDRD); // Leemos el valor de A1. Sensor Derecho

digitalWrite (LEDI, LOW );


digitalWrite (LEDD, LOW );
ADELANTE();

Serial.println("Sensor LDR Izquierdo" + String(SENSORI));


Serial.println("Sensor LDR Derecho" + String(SENSORD));

if (SENSORI > SENSORD)


{
IZQUIERDA();
digitalWrite (LEDI, HIGH);
delay(50);
}
else
{
if (SENSORI < SENSORD)
{
DERECHA();
digitalWrite (LEDD, HIGH);
delay(50);
}
else
{
ADELANTE();
}
}
}
// A continuación se declaran las subrutinas a utilizar:
void ADELANTE()
{
digitalWrite(MI, LOW); // GIRA MOTOR IZQUIERDO HACIA ADELANTE
digitalWrite(MII, HIGH);
digitalWrite(MD, LOW); // GIRA MOTOR DERECHO HACIA ADELANTE
digitalWrite(MDD, HIGH);
}

void IZQUIERDA()
{
digitalWrite(MI, LOW); // DETIENE MOTOR IZQUIERDO
digitalWrite(MII, LOW);
digitalWrite(MD, LOW); // GIRA MOTOR DERECHO HACIA ADELANTE
digitalWrite(MDD, HIGH);
}

void DERECHA()
{
digitalWrite(MI, LOW); // GIRA MOTOR IZQUIERDO HACIA ADELANTE
digitalWrite(MII, HIGH);
digitalWrite(MD, LOW); // DETIENE MOTOR DERECHO
digitalWrite(MDD, LOW);
}

También podría gustarte