Comenzando el proyecto

¿Estáis preparadas para empezar con el proyecto? Pero antes:

Solución del RETO 1:

El reto propuesto consistía en que nuestro semáforo tenía que durar en verde un tiempo proporcional al número de coches que hay esperando: Si había muchos coches esperando el semáforo tiene que estar mucho rato en verde para que puedan pasar todos.

int rojo = 6;
int amarillo = 7;
int verde = 8;
// Inicializamos la variable coches, en la que vamos a escribir los coches que hay esperando.
int coches = 0;

void setup() {
    pinMode (rojo , OUTPUT);
    pinMode (amarillo , OUTPUT);
    pinMode (verde , OUTPUT);
    //Inicializamos la semilla del random al valor que se lea del pin analogico 0, para que sea distinta cada vez que empiece el programa.
    randomSeed(analogRead(0));
}

void loop()
{
     // Guardamos en la variable coches el valor resultante de hacer el random.
     coches = random(1,6);
     digitalWrite(rojo,HIGH);
     delay(2000);
     digitalWrite(rojo,LOW);
     delay(50);
     digitalWrite(verde,HIGH);
     // Multiplicamos el numero de coches que hay esperando a que el semáforo se ponga en verde por el tiempo que tarda en pasar un coche, para que puedan pasar todos.
     delay(2000*coches);
     digitalWrite(verde,LOW);
     delay(50);
     digitalWrite(amarillo,HIGH);
     delay(500);
     digitalWrite(amarillo,LOW);
     delay(50);
}

Hoy vamos a aprender cómo funcionana cada unos de los componentes que vamos a utilizar luego en el proyecto:

  • ¿Qué es y cómo funciona un LED?
  • ¿Qué es y cómo funciona una fotoresistencia?
  • ¿Qué es y cómo funciona un zumbador?

Además, cuando termine el día ya podremos desarrollar un primer mini-programa en el que se va a basar el Laser Tag definitivo. Este primer mini-programa va a encender 4 LEDs y para que nosotras los apaguemos, con efecto musical incluido, con nuestro laser .

¿Cómo vamos a hacer todo esto? Muy sencillo:

¿Qué es y cómo funciona un LED?

Ya estuvimos viendo como funciona un led en la entrada anterior, pero aquí teneis la información un poco más detallada:

Un LED es un diodo que nos permite emitir luz.

¿Por qué es importante saber que es un diodo? Porque una característica de los diodos es que tiene polaridad, lo que significa que solo deja pasar la corriente en un sentido. Por eso una de las patillas del LED es más larga que la otra.

La patilla larga se debe conectar al pin que le va a proporcionar la información al LED de cuándo tiene que encenderse o apagarse, y la otra a tierra (GND) .

Pero no podemos conectar directamente la patilla larga del LED al pin de arduino porque ese pin le va a aportar demasiada intensidad y el LED, y con el tiempo la placa Arduino, podrían estropearse. Para que no le llegue tanta intensidad utilizamos resistencias.

Una vez que hayamos colocado el led y la resistencia de 220 ohm, nos quedaré un circuito parecido a este:

conexión de un led a Arduino

Podemos ver paso a paso como se hace en el siguiente video:

Programando un LED:

Cuando escribimos código, todo lo que está puesto detrás de // son notas que el programa se salta y que nosotras podemos aprovechar para añadirle información a nuestro código.

Este ejemplo enciende y apaga el led.

//Inicializamos el led en el pin 2.
const int led = 2; 
 
// Recordatorio: setup() solo lo va a leer el arduino cuando se encienda, nunca más.
void setup() {
 // Tenemos que inicializar el puerto serie, es el que permite enviar la información al monitor serie de arduino.
  Serial.begin(9600);   
  // Definimos el pin del LED como pin de salida (OUTPUT), porque le vamos a mandar la información de que se encienda o se apague.
  pinMode(led , OUTPUT);  
}

// Recordatorio: loop() lo lee el arduino en bucle hasta que se apague.
void loop(){
  // Escribimos en el pin digital de nuestro LED el valor HIGH, que hace que se encienda.
  digitalWrite(led , HIGH);   
  // delay(tiempo) hace que el arduino se espere un tiempo antes de seguir.
  delay(1000);     
  // Luego escribimos el valor LOW, que hace que se apague.
  digitalWrite(led , LOW);    
  delay(1000);                
}  

video programando un led

¿ Qué es y cómo funciona una fotoresistencia?

Una fotorresistencia es un dispositivo al que le varia la resistencia dependiendo de la cantidad de luz que reciba.

Nosotras vamos a aprovecharnos de eso utilizándolo como un interruptor. Un interruptor especial que solo podemos activar con luz, es decir, con nuestro láser.

Las fotorresistencias tienen las dos patillas igual de largas porque da igual cual de las dos usemos para proporcionarle energía y cual para conectarla a tierra (GND), porque funciona exactamente igual que las resistencias que hemos utilizado para los LEDs.

De hecho, para poder conectar una fotorresistencia también vamos a necesitar una resistencia extra, pero mucho mayor que la utilizada para los LEDs, esta va a ser de 10 Kohm.

Una vez que hayamos colocado la fotorresistencia y la resistencia de 10 Kohm, nos quedará un circuito parecido a este:

conexión fotorresistencia

Podemos ver el proceso de conexión en el siguiente vídeo:

Programando una fotorresistencia o sensor de luz:

Este ejemplo apaga el led cuando detecta luz en la fotorresistencia.

//Inicializamos el led en el pin digital 2.
const int led = 2; 
//Inicializamos la fotorresistencia en el pin analógico A0.
const int foto = A0;
//Creamos una variable límite que es la que va decidir cual es el límite entre estar recibiendo luz o no. El valor del límite depende de la luz que haya en el ambiente, así que tendremos que hacer pruebas.
const int limite = 100;
 
// Recordatorio: setup() solo lo va a leer el arduino cuando se encienda, nunca más.
void setup() {
  Serial.begin(9600);   
  // Definimos el pin del LED como pin de salida (OUTPUT), porque le vamos a mandar la información de que se encienda o se apague.
  pinMode(led , OUTPUT); 
  // Definimos el pin de la fotorresistencia como pin de entrada (INPUT), porque le va a mandar información sobre como se encuentra al arduino.
  pinMode(foto , INPUT);   

}

// Recordatorio: loop() lo lee el arduino en bucle hasta que se apague.
void loop(){
  //Esperamos un segundo y encendemos el led para poder probar el programa más de una vez.
  delay(1000);
  digitalWrite(led,HIGH);
  //Si el valor que leemos de la fotorresistencia es mayor que el límite es porque le está dando la luz del láser y por tanto queremos que se apague.
  if (analogRead(foto) > limite)
  {
     // Escribimos en el pin digital de nuestro LED el valor LOW, que hace que se apague.
     digitalWrite(led,LOW);
  }
                
} 

Aquí tenéis un vídeo de como se programa y de la ejecución final:

¿Qué es y cómo funciona un zumbador?

Los zumbadores, buzzers o altavoces pasivos permiten convertir una señal eléctrica en una onda de sonido.

Nuestro zumbador va a tener 3 patillas:

  • La primera, y mas cercana al dibujito de una S, es la que le manda la información al buzzer, y va a tener que estar conectada a un pin digital que tenga pwm (~).
  • La siguiente es la que le proporciona energía, y va a tener que estar conectada a los 5V.
  • La última es la toma a tierra (GND).

Una vez que hayamos colocado cada uno de los pines en su lugar correspondiente, nos quedaré un circuito parecido a este:

Conexión Zumbador o buzzer

Programando un zumbador:

Este ejemplo apaga el led cuando detecta luz en la fotorresistencia y hace que suene el zumbador.

//Inicializamos el led en el pin digital 2.
const int led = 2; 
//Inicializamos la fotorresistencia en el pin analógico A0.
const int foto = A0;
//Creamos una variable límite que es la que va decidir cual es el límite entre estar recibiendo luz o no. El valor del límite depende del la luz que haya en el ambiente, así que tendremos que hacer pruebas.
const int limite = 100;
//Inicializamos el zumbador en el pin digital con pwm (~) 9.
cont int zumb = 9;
 
// Recordatorio: setup() solo lo va a leer el arduino cuando se encienda, nunca más.
void setup() {
  Serial.begin(9600);   
  // Definimos el pin del LED como pin de salida (OUTPUT), porque le vamos a mandar la información de que se encienda o se apague.
  pinMode(led , OUTPUT); 
  // Definimos el pin de la fotorresistencia como pin de entrada (INPUT), porque le va a mandar información sobre como se encuentra al arduino.
  pinMode(foto , INPUT);   

}

// Recordatorio: loop() lo lee el arduino en bucle hasta que se apague.
void loop(){
  //Esperamos un segundo y encendemos el led para poder probar el programa más de una vez.
  delay(1000);
  digitalWrite(led,HIGH);
  //Si el valor que leemos de la fotorresistencia es mayor que el límite es porque le está dando la luz del láser y por tanto queremos que se apague.
  if (analogRead(foto) > limite)
  {
     // Escribimos en el pin digital de nuestro LED el valor LOW, que hace que se apague.
     digitalWrite(led,LOW);
     // Hacemos sonar durante 300ms el tono de 523Hz.
     tone(zumb, 523, 300);
  }
                
}  

Vídeo de programación del buzzer:

RETO DIARIO

¡El reto de hoy consiste en unir todo lo que hemos aprendido!

Hasta ahora solo tenemos un led, un zumbador y una fotorresistencia funcionado juntas, pero si nuestro juego solo tiene un posible enemigo va a ser muy aburrido.

RETO 2.1: Hacer funcionar el juego con 4 LEDs y 4 fotorresistencias.

Cada LED va a estar unido a una fotorresistencia de manera que acertando con el láser en la fotorresistencia 1 se apague el LED 1.

RETO 2.2: Hacer una canción de la victoria y otra de la derrota con el zumbador (buzzer).

Esta parte del reto la podremos utilizar mañana para cuando en nuestro juego se pueda ganar y perder.

Tenéis para entregar las soluciones de los retos hasta hoy antes de las 21:30 en la carpeta del Drive que creásteis el otro día con el nombre de Reto2.

¡Que la suerte esté siempre de vuestra parte!

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *