lunes, 24 de enero de 2022

Simulador de Penaltis

 SIMULADOR DE PENALTIS


DATOS

Alumno: Alberto Martín Mateos
Asignatura: Innovación Docente de la Especialidad de Tecnología
Máster: Máster Universitario en Profesor de Educación Secundaria Obligatoria y Bachillerato, Formación Profesional y Enseñanza de Idiomas
Centro: Universidad de Salamanca
Curso: 2021/2022


CONTEXTO

El simulador de penaltis es un proyecto elaborado con Arduino que podría incluirse en la asignatura de Control y Robótica de 3ºESO. Comentar que este proyecto trabaja la ODS de innovación al utilizar nuevas tecnologías y aplicar la robótica a los fundamentos de electrónica explicados en asignaturas de cursos anteriores.

Para su elaboración, se han utilizado diferentes elementos que se explican en el vídeo ilustrativo junto con la explicación de su funcionamiento.

                         



ESQUEMA DEL CIRCUITO

A continuación, se muestra el diseño elaborado con Thinkercad y el código utilizado para su implementación. Hay que comentar que los Josticks en esta plataforma se simulan con dos potenciómetros que van a ser los ejes X e Y.



MATERIALES UTILIZADOS
  • Placa Arduino Uno
  • Protoboard
  • LED verde
  • LED Rojo
  • 2 resistencias de 220Ω
  • 1Zumbador pasivo
  • 2 Josticks
  • Pantalla LCD
  • Potenciómetro controlador de pantalla LCD
  • Cables para el circuito
  • Cable puerto USB

IMÁGENES DEL CIRUITO

Por último, se muestran unas imágenes del circuito.






CÓDIGO DE LA APLICACIÓN

//Simulador de penaltis
//Alberto Martín Mateos

//Incluir libreria de la pantalla LCD
#include <LiquidCrystal.h>

// Inicializar la libreria con los números de los pins correspondientes
LiquidCrystal lcd(7, 8, 9, 10, 11, 12);



const int buzzer = 2 // Variable para definir el pin digital de salida del buzzer activo

const int X_pin_j1 = A0; // Variable para definir el pin analogico conectado a la salida de direccion X del J1
const int Y_pin_j1 = A1; // Variable para definir el pin analogico conectado a la salida de direccion y del J1
const int X_pin_j2 = A2; // Variable para definir el pin analogico conectado a la salida de direccion X del J2
const int Y_pin_j2 = A3; // Variable para definir el pin analogico conectado a la salida de direccion Y del J2

int value_Y_pin_j1=0;// Variable para guardar el valor de la coordenada Y del jostick J1
int value_Y_pin_j2=0;// Variable para guardar el valor de la coordenada Y del jostick J2

void setup() {
  
  pinMode(3, OUTPUT);//Inicializar un LED como pin de salida
  pinMode(4, OUTPUT); //Inicializar un LED como pin de salida
  pinMode(buzzer,OUTPUT);//Inicializar el buzzer como pin de salidai
  
  pinMode(SW_pin_j1, INPUT); // Inicializar el Switch del J1 como entrada
  pinMode(SW_pin_j2, INPUT); // Inicializar el Switch del J2 como entrada
  
  lcd.begin(16, 2); //Configurar el numero de columnas y filas de la pantalla LCD
  lcd.print("Tanda de penaltis"); // Imprimir el mensaje en la pantalla LCD
  Serial.begin(9600);
}

void loop() {
    
    lcd.setCursor(0, 1); //Se selecciona la segunda linea de la pantalla LCD
    lcd.print("Dispare!");
    delay(2000);
    value_Y_pin_j1 =analogRead(Y_pin_j1); //Recoge el valor de la dirección Y del jostick J1
    value_Y_pin_j2 =analogRead(Y_pin_j2); //Recoge el valor de la dirección Y del jostick J2
    
    lcd.setCursor(0, 1);//Se selecciona la segunda linea de la pantalla LCD
    //Comprobación de la posición de los dos josticks. En caso de que la dirección sea la misma, se para el penalti.
    //Si no tienen la misma dirección los dos josticks, será gol
  if(value_Y_pin_j1 <400 && value_Y_pin_j2 <400){
      lcd.print("Parada!!");
    }
    else if(value_Y_pin_j1 <1300 && value_Y_pin_j1 >600 && value_Y_pin_j2 <1300 && value_Y_pin_j2 >600){
      lcd.print("Parada!!");
    }
     else if(value_Y_pin_j1 <570 && value_Y_pin_j1 >450 && value_Y_pin_j2 <570&& value_Y_pin_j2 >450){
      lcd.print("Parada!!");
    }
    else{
      lcd.print("Gool!!!!");
      int var = 0;
      //Cuando se marca gol, suena 30 veces el buzzer y se encienden y apagan los LEDS
      while(var < 30){
        digitalWrite(3, HIGH); // Encender el LED Verde del pin 3
        digitalWrite(4, HIGH);  // Encendder el LED Rojo del pin 4
        digitalWrite(buzzer,HIGH); // Encender el Buzzer
        delay(50);
        digitalWrite(3, LOW); // Apagar el LED Verde del pin 3
        digitalWrite(4, LOW);  // Apagar el LED Rojo del pin 4
        digitalWrite(buzzer,LOW); // Apagar el buzzer
        delay(50);
        var++;
      }      
    }
    
}

No hay comentarios:

Publicar un comentario