Introduction: Seguidor De Luz Simple

About: Somos el espacio de imaginación, experimentación y prototipado de la PUCV.

¡Hola chic@s! En esta oportunidad vamos a armar un seguidor de luz simple con una Arduino con un par de fotorresistencias y motores, te recomendamos usarlo en lugares de poca iluminación e interiores ¿Te imaginas sales al aire libre a probarlo y el robot intenta seguir el sol? Si quieres ver de inmediato como funciona, puede visitar este link.

¡Empezemos!

Supplies

Los materiales son:

  • 1 x Arduino UNO.
  • 1 x L293D.
  • 2 x Motor DC.
  • 2 x Fotorresistencia 180k Ohm.
  • 1 x Batería 9 V.
  • 2 x Diodo 1n1004
  • 2 x Resistencia 1k Ohm.

Step 1: ¡Preparemos La Base Para Trabajar!

Primero que nada debemos abrir Tinkercad Circuits y poner nuestra Arduino y protoboard para trabajar, entonces:

  1. Dentro de los compoenentes básicos buscamos una Arduino Uno y la arrastramos al entorno de trabajo (imagen 1).
  2. Cambiamos a la pestaña de todos los compoenentes (imagen 2).
  3. Buscamos la placa de desarrollo grande y la arrastramos al lado de la Arduino (imagen 3).
  4. Conectamos la alimentación de la Arduino a la protoboard tal cual se ve en la imagen 4.

¡Listo!

Step 2: ¡Agreguemos Los Componentes! - Sensores De Luz

Las instrucciones para esta sección son:

  1. Busca la fotorresistencia en los componentesy arrastra dos a los lugares indicados en la imagen 1.
  2. Busca una resistencia y arrastrala al espacio de trabajo, luego rotala apretando el botón de giro tres veces (imagen 2 como referencia).
  3. Luego posiciona dos de estas en los lugares indicados en la imagen 3, no hay necesidad de cambiar sus valores por que ya son de 1k Ohm cada una.
  4. Realizar las conexiones a las líneas de alimentación y al pin A4 y A5 de Arduino, tal cual se ve en la imagen 4

¡Pasemos al siguiente paso!

Step 3: ¡Agreguemos Los Componentes! - Control De Motores + Motores

Los pasos para armar esta parte son:

  1. Buscar el control de motor L293D entre los componentes y arrastrarlo hasta el lugar indicado en la imagen 1.
  2. Ahora debes buscar un diodo y lo arrastrarlo hasta el espacio de trabajo, luego girarlo apretando el botón de giro tres veces (imagen 2 de referencia), luego colocarlos en la posición indicada en la imagen 3.
  3. Luego buscar el motor dc simple y arrastrar dos al espacio de trabajo, el de abajo debe ser rotado apretando el botón de giro seis veces (imagen 3 de referencia).
  4. Buscar una batería de 9 V y arrastrarla al espacio de trabajo, luego rotarlo apretando el botón de giro nueve veces (imagen 4 de referencia).
  5. Por último conectar todo los componentes entre sí, usa la imagen 5 como referencia.

¡Listo, avancemos a la programación!

Step 4: ¡Hora De Programar!

Ahora revisaremos el código y entenderemos como funciona, el programa completo es:

int pin_motor_der = 5;
int pin_motor_izq = 6;
float control_der = 0;
float control_izq = 0;

void setup()
{
pinMode(pin_motor_izq, OUTPUT);
pinMode(pin_motor_der, OUTPUT);
Serial.begin(9600);
}

void loop()
{
control_der = 1.0 - analogRead(A4)/1017.0;
control_izq = 1.0 - analogRead(A5)/1017.0;
analogWrite(pin_motor_izq, 255*control_izq);
analogWrite(pin_motor_der, 255*control_der);
}

Primero que nada podemos que se especifican algunas variables al inicio, estas son:

int pin_motor_der = 5;
int pin_motor_izq = 6;
float control_der = 0;
float control_izq = 0;

Dos son int, lo que indica que son valores enteros, pin_motor_der y pin_motor_izq son las variables por las cuales especificamos los pines que controlarán el motor, las dos siguientes son de tipo float, o sea, son valores con decimales, control_der y control_izq se usarán para hacer el control de velocidad de los motores a usar.

La siguiente parte consta de las instrucciones dentro de la función void_setup(), los cuales se ejecutarán solo una vez, estos son:

void setup()
{
pinMode(pin_motor_izq, OUTPUT);
pinMode(pin_motor_der, OUTPUT);
}

En esta parte nos encontramos con pinMode(A,B) el cual nos permite decirle a la arduino "Arduino quiero usar el pin A como B " sinedo B salida (OUTPUT) o entrada(INPUT).

Las últimas instrucciones están dentro de la función void_loop(), estas se ejecutarán constantemente en orden hasta que el Arduino se apage o deje de funcionar.

void loop()
{
control_der = 1.0 - analogRead(A4)/1017.0;
control_izq = 1.0 - analogRead(A5)/1017.0;
analogWrite(pin_motor_izq, 255*control_izq);
analogWrite(pin_motor_der, 255*control_der);
}

Primero que nada tenemos que asignar valores a las variables de control, la idea es poder tener un rango entre 0 y 1 (con decimales, por eso son float) el cual se logra al hacer la lectura del valor de la fotorresistencia mediante la función analogRead(A), donde A es el pin a leer, luego este valor es dividido por 1017.0 para que quede en el rango deseado, por último este valor se resta a uno para pasar de rango "0 a 1" a "1 a 0". Una vez lista las variables estas pasan a la función analogWrite(A,B) la cual nos dice "usar el pin 3 para emitir una señal B" que controlara los motores.

¡Y así es como el programa funciona! (a grandes rasgos)

Step 5: ¡Veamos Nuestro Resultado!

¡Así nos quedó la simulación!