Imagen proyecto terminado
DATOS
Universidad de Salamanca – Master Universitario en Profesor de Educación Secundaria Obligatoria, Bachillerato, Formación Profesional y Enseñanza de Idiomas.
Asignatura: Innovación Docente en la Especialidad de
Tecnología.
Curso: 2019/2020
COMPONENTES DEL GRUPO
- Carlos Hernández Calvo
- Daniel Pescador Hernández
CONTEXTO
El siguiente proyecto se puede realizar para alumnos de 4º de la E.S.O. de la asignatura de Tecnología tanto Académicas como Aplicadas.
- Bloque 1: Tecnologías de la Información y la Comunicación.
- Bloque 3: Electrónica.
- Bloque 4: Control y Robótica.
Este proyecto permite implementar un problema de la vida real, como es el caso si el balón ha entrado o no en una portería, con conceptos vistos en la asignatura de Tecnología.
FUNCIONAMIENTO
La tecnología de Gol tiene el siguiente funcionamiento:
En primer lugar, disponemos de 5 sensores de Infrarrojos situados en el larguero de la portería (realizada con una impresora 3D), de manera que puedan detectar si el balón atraviesa la misma. La elección de 5 sensores ha sido debido a la longitud que debían abarcar.
En segundo lugar, vamos a disponer de una pantalla LCD donde se irá reflejando el marcador del partido, además del mensaje de GOL cuando haya entrado la pelota, o de reinicio del mismo cuando sea necesario (mediante un botón pulsador).
Por último, disponemos de servo motor para simular el banderín del asistente de árbitro con un led verde que se encenderá cada vez que haya un gol.
Así pues, cada vez que el balón pase la portería se mostrará el mensaje de GOL por la pantalla LCD, se levantará el banderín y se encenderá la luz LED durante 2 segundos, después de esto la pantalla LCD mostrará el marcador existente. Si se desea reinicializar el partido, se dispone de un botón “switch” para ello.
ESQUEMA DEL CIRCUITO CON FRITZING
Para una mejor visualización se especifican 2 de los 5 sensores de Infrarrojos, los cuales irán situados en las entradas analógicas de la A0 a la A4.
Protoboard
Esquema electrónico
MATERIALES UTILIZADOS
- Arduino MEGA (también podría usarse Arduino UNO)
- 2 protoboard
- 1 LED verde
- 1 pulsador
- 5 sensores de Infrarrojos
- 1 servomotor
- 1 condensador de 100 µF
- 1 pantalla LCD
- 1 potenciómetro 10kΩ
- 1 resistencia 220Ω
- 1 resistencia 10kΩ
- Cables para el montaje de los circuitos
- Portería diseñada con Tinkercad e impresa en 3D
- Caja de cartón
- Césped artificial
- Chinchetas
- Tapón de corcho
- Palo de Chupa-Chups
- Pegamento
- Cinta adhesiva
- Pintura blanca
- Cartulina
CÓDIGO FUENTE
/** PROYECTO OJO DE HALCÓN GOL:
* MUPES UNIVERSIDAD DE SALAMANCA - Innovación Docente en la Especialidad de Tecnología
*
* El siguiente código implementa los pasos necesarios para la detección de 5 sensores de infrarojos en una porteria realizada en Impresión 3D
* Donde cada vez que el balon consigue pasar dicha portería, se enciende un LED, se mueve un servo con el banderín del linier y muestra en
* una pantalla LCD el mensaje de GOL y el Marcador correspondiente.
*
* Creado en Enero de 2020, por los integrantes del grupo:
* - Carlos Hernández Calvo
* - Daniel Pescador Hernández
*
* #################################
*/
// Se incluyen las librerias del Servo y el LCD
#include <Servo.h>
#include <LiquidCrystal.h>
Servo myServo; //creamos el objecto del Servo
//Inicialización de la LCD con cada uno de los PINs
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);
const int analogInPin01 = A0;// Pin analogico 1 para la lectura del Fototransistor
const int analogInPin02 = A1;// Pin analogico 2 para la lectura del Fototransistor
const int analogInPin03 = A2;// Pin analogico 3 para la lectura del Fototransistor
const int analogInPin04 = A3;// Pin analogico 4 para la lectura del Fototransistor
const int analogInPin05 = A4;// Pin analogico 5 para la lectura del Fototransistor
const int OutPin = 13;// Pin para el led indicador
const int InPin = 7; // Pin para el Switch
//Inicialización del valor de los sensores:
int sensorValue01 = 0;
int sensorValue02 = 0;
int sensorValue03 = 0;
int sensorValue04 = 0;
int sensorValue05 = 0;
int varGol = 0; // Inicializamos la variable de goles a 0
String stringMarcador; //Inicializamos el texto del marcador
//Creación de una variable global para el stado del Switch
int switchstate = 0;
void setup() {
// Inicializamos la comunicacion serial a 9600 bps:
Serial.begin(9600);
//"Attach" del servo al pin 9
myServo.attach(9);
//Declaración de los pines de Entrada y Salida
pinMode(InPin, INPUT);
pinMode(OutPin, OUTPUT);
//Configuración del número de caracteres y columnas del LCD.
lcd.begin(16, 2);
//Impresión del mensaje inicial en el LCD
lcd.print("MARCADOR: ");
//Movemos el cursor a la linea 1 segunda columna
lcd.setCursor(0, 1);
stringMarcador += varGol;
stringMarcador += " - 0";
lcd.print(stringMarcador);
}
void loop() {
// Leemos el valor del Switch
// digitalRead() comprueba si tiene voltage el pin o no
switchstate = digitalRead(InPin);
//Leemos los pines de entrada y se lo asignamos a las variables
sensorValue01 = analogRead(analogInPin01);
sensorValue02 = analogRead(analogInPin02);
sensorValue03 = analogRead(analogInPin03);
sensorValue04 = analogRead(analogInPin04);
sensorValue05 = analogRead(analogInPin05);
//Reinicio del Partido al pulsar el botón del Switch
if (switchstate == HIGH) {
varGol = 0;
stringMarcador = "";
//Limpiamos la pantalla antes de poner el nuevo mensaje
lcd.clear();
lcd.setCursor(0, 0);
//Impresión de Primera Línea
lcd.print("INICIO PARTIDO");
//Esperamos 1.5 segundos para volver a inicializar el LCD
delay(1500);
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("MARCADOR: ");
//Movemos el cursor a la linea 1 segunda columna
lcd.setCursor(0, 1);
stringMarcador += varGol;
stringMarcador += " - 0";
lcd.print(stringMarcador);
}
// Si el valor obtenido es menor a 900 entonces detecta el balon (los sensores IR estás configurados para que cuando no destecta ningún obstáculo de valores superiores a 900 hasta 1023)
if(sensorValue01 < 900 || sensorValue02 < 900 || sensorValue03 < 900 || sensorValue04 < 900 || sensorValue05 < 900)
{
Serial.print("GOOOOOL ");
varGol = varGol + 1; //Se aumenta la variable gol
stringMarcador = ""; //Ponemos el texto del marcador vacío
//Se ilumina el led
digitalWrite(OutPin, HIGH);
//Movemos el servo 180° para hacer mover el banderín del linier
myServo.write(179);
//Limpiamos el LCD para poner el mensaje de GOL
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("GOOOOOL!!!!!!");
//Esperamos 2 segundos antes de poner el marcador de nuevo
delay(2000);
lcd.clear();
lcd.setCursor(0, 0);
//Escribimos el número de goles en el marcador
lcd.print("MARCADOR: ");
lcd.setCursor(0, 1);
stringMarcador += varGol;
stringMarcador += " - 0";
lcd.print(stringMarcador);
}
else
{
//Miestras no detecten nada los sensores el Pin estará apagado y el servo no se mueve
digitalWrite(OutPin, LOW);
myServo.write(0);
}
//Imprimimos los valores de los sensores para hacer comprobaciones en el puerto serie
Serial.print("sensor1 = " );
Serial.println(sensorValue01);
Serial.print(" y sensor2 = " );
Serial.println(sensorValue02);
Serial.print(" y sensor3 = " );
Serial.println(sensorValue03);
Serial.print(" y sensor4 = " );
Serial.println(sensorValue04);
Serial.print(" y sensor5 = " );
Serial.println(sensorValue05);
delay(100);
}
No hay comentarios:
Publicar un comentario