Piedra Papel o Tijera

Descargar como pdf o txt
Descargar como pdf o txt
Está en la página 1de 10

2023

PIEDRA PAPEL
O TIJERA
 BAEZ LOPEZ PAOLA
 GONZALES BARRON JOSUE MOISES
 HERNANDEZ VAZQUEZ EDUARDO
RAFAEL
 SAAVEDRA VENTURA ANA LAURA
 TOVAR HERNANDEZ ARTURO UZIEL
Introducción.
El autómata programable o PLC (controlador lógico programable), está
omnipresente en las industrias de procesos y fabricación de hoy en día.
Construido inicialmente para reemplazar los sistemas de relés electromecánicos,
ofrece una solución más sencilla para modificar el funcionamiento de un sistema
de control.

En sí mismo, un autómata programable o PLC es un sistema de control


informático industrial que supervisa continuamente el estado de los dispositivos
de entrada y toma decisiones basadas en un programa personalizado para
controlar el estado de los dispositivos de salida.

Estos controladores pueden automatizar un proceso específico, una función de


la máquina o incluso toda una línea de producción.

Casi cualquier línea de producción, función de la máquina o proceso puede


mejorarse en gran medida utilizando este tipo de sistema de control. Sin
embargo, el mayor beneficio en el uso de un PLC es la capacidad de cambiar y
replicar la operación o el proceso mientras se recoge y se comunica la
información vital.

Otra ventaja de un sistema PLC es que es modular. Es decir, puede mezclar y


combinar los tipos de dispositivos de entrada y salida para que se adapten mejor
a su aplicación.

El autómata programable o PLC recibe información de los sensores o


dispositivos de entrada conectados, procesa los datos y activa las salidas
basándose en parámetros programados.

Dependiendo de las entradas y salidas, un PLC puede monitorear y registrar


datos de tiempo de ejecución como la productividad de la máquina o la
temperatura de funcionamiento, iniciar y detener automáticamente los procesos,
generar alarmas si una máquina no funciona correctamente, y más.

Los controladores lógicos programables son una solución de control flexible y


fijo, adaptable a casi cualquier aplicación.
Desarrollo.
En primer lugar, tenemos todas las partes que conlleva un autómata, los cuales
son:
 ESTADOS DE INICIO:
entrada

 ESTADOS FINALES:
qG
qP
qE

 ESTADOS:
Entrada (Tiro del usuario)
Azar piedra
Azar papel
Azar tijera

 VOCABULARIO:
∑ = {piedra, papel, tijera}

 TABLA DE TRANSICIONES:
piedra (2) papel (3) tijera (4)

entrada (0) Azar piedra Azar papel Azar tijera


azar piedra (1) Empate Perder Ganar
azar papel (2) Perder Ganar Empate
azar tijera (3) Ganar Empate Perder
ganar (4) x x x
perder (5) x x X
empatar (6) x x x
Teniendo esto, realizamos nuestro autómata:

Azar
piedra qG

papel qP
entrada Azar tijera
papel

qE

Azar
tijera

Tomando como referencia la siguiente imagen, desarrollaremos la programación


de este sistema programable (piedra, papel o tijera).

Realizamos el siguiente código:


int buttonState = 0; int clickScissors = 0;
int clickRock = 0; int compChoise = 0;
int startGame = 0; int userChoise = 0;
int clickPaper = 0; int userWin = 0;
int compWin = 0; pinMode(11, OUTPUT);
int Q0 = 0; //Comp
int delta[7][3]={ pinMode(A1, OUTPUT);
{2,3,4}, pinMode(A2, OUTPUT);
{6,5,4}, pinMode(A3, OUTPUT);
{5,4,6}, }
{4,6,5},
{0,0,0}, int entrada (){
{0,0,0}, Serial.println ("Entrada");
{0,0,0} int detener = 0;
}; int tiro = 0;
int estado_actual = Q0; while (detener == 0){
int reinicio = 0; delay(10); // Wait for 10 millisecond(s)
int tirada = 0; //Piedra
clickRock = digitalRead(2);
void setup(){ if (clickRock == HIGH) {
pinMode(2, INPUT); Serial.println("Starting Game");
Serial.begin(9600); digitalWrite(5, HIGH);
//botones tiro = 0;
pinMode(2, INPUT); detener = 1;
pinMode(3, INPUT); } else {
pinMode(4, INPUT); digitalWrite(5, LOW);
//user }
pinMode(5, OUTPUT); //Paper
pinMode(6, OUTPUT); clickPaper = digitalRead(3);
pinMode(7, OUTPUT); if (clickPaper == HIGH) {
//RGB Serial.println("Starting Game");
pinMode(9, OUTPUT); digitalWrite(6, HIGH);
pinMode(10, OUTPUT); tiro = 1;
detener = 1; }
} else { return (compChoise - 1);
digitalWrite(6, LOW); }
}
//Tijeras int azar_papel(){
clickScissors = digitalRead(4); int compChoise = 0;
if (clickScissors == HIGH) { compChoise = random(1, 3 + 1);
Serial.println("Starting Game"); digitalWrite(A1, HIGH);
digitalWrite(7, HIGH); if (compChoise == 1) {
tiro = 2; digitalWrite(A1, HIGH);
detener = 1; }
} else { if (compChoise == 2) {
digitalWrite(7, LOW); digitalWrite(A2, HIGH);
}} }
return tiro; if (compChoise == 3) {
} digitalWrite(A3, HIGH);
}
int azar_piedra(){ return (compChoise - 1);
int compChoise = 0; }
compChoise = random(1, 3 + 1);
digitalWrite(A1, HIGH); int azar_tijeras(){
if (compChoise == 1) { int compChoise = 0;
digitalWrite(A1, HIGH); compChoise = random(1, 3 + 1);
} digitalWrite(A1, HIGH);
if (compChoise == 2) { if (compChoise == 1) {
digitalWrite(A2, HIGH); digitalWrite(A1, HIGH);
} }
if (compChoise == 3) { if (compChoise == 2) {
digitalWrite(A3, HIGH); digitalWrite(A2, HIGH);
} }
if (compChoise == 3) { int ejecutar(int funcion){
digitalWrite(A3, HIGH); int seleccion = 0;
} switch(funcion){
return (compChoise - 1); case 0:
} seleccion = entrada();
break;
int user_gana (){
analogWrite(10,0); case 1:
analogWrite(11,255); seleccion = azar_piedra();
analogWrite(9,0); break;
Serial.println("User wins");
Serial.println(" "); case 2:
} seleccion = azar_papel();
break;
int comp_gana(){
analogWrite(10,255); case 3:
analogWrite(11,0); seleccion = azar_tijeras();
analogWrite(9,0); break;
Serial.println("Computer wins");
Serial.println(" "); case 4:
} seleccion = user_gana();
break;
int empate(){
analogWrite(10,0); case 5:
analogWrite(11,0); seleccion = comp_gana();
analogWrite(9,255); break;
Serial.println("Empate");
Serial.println(" "); case 6:
seleccion = empate(); digitalWrite(A3, LOW);
break;
} /*if (estado_actual == 4 or
estado_actual == 5 or estado_actual ==
return seleccion; 6){
} reinicio = 0;
//Serial.println("Inicia while");
void loop(){ while (reinicio == 0){
tirada = ejecutar(estado_actual); if (digitalRead(2) or digitalRead(3) or
digitalRead(4)){
Serial.println(tirada);
reinicio = 1;
estado_actual =
delta[estado_actual][tirada]; }
}
delay(1000); // Wait for 1000 Serial.println("Termina while");*/
millisecond(s)
//}
digitalWrite(A1, LOW);
}
digitalWrite(A2, LOW);

Resultados.
Al momento de pulsar un botón, ya sea piedra, papel o tijera, se prendera nuestro
foco a elegir y el procesador encendedor el led que ha seleccionadoy
posteriormente la maquina realiza la selección de piedra, papel o tijera, y el led
RGB que nos indica si ganamos (verde), perdimos (rojo) o empatamos (amarillo).
Conclusión.
Sobre este trabajo puedo concluir que implica la interacción con entradas (por
ejemplo, botones para seleccionar la opción) y salidas (por ejemplo, LEDs para
mostrar el resultado). Así mismo, el juego requiere el seguimiento de variables
para almacenar las opciones del jugador y la computadora, así como la lógica
para determinar el resultado del juego según las reglas predefinidas.
Puedo concluir que, durante la programación y prueba del juego, nos
encontramos desafíos y problemas que requieran resolución. Esto contribuye al
desarrollo de habilidades de resolución de problemas y depuración de código.
A la hora de conectar botones y LEDs al Arduino brinda una experiencia práctica
en la integración de hardware y software. Hemos llegado a aprender sobre la
importancia de las resistencias, la lectura de pines de entrada y la activación de
salidas.
Puedo decir que, la elaboración de este trabajo fue algo laborioso pero los
resultados han sido buenos. Desarrollar un autómata con Arduino proporciona
una introducción accesible y educativa a la robótica y la programación. Esto
significa que incluso aquellos sin una profunda experiencia técnica pueden
aprender a programar y construir un autómata de manera efectiva. La comunidad
activa de Arduino y los recursos disponibles facilitan el proceso de aprendizaje,
lo que puede fomentar la participación en proyectos de automatización.
He llegado a la conclusión de que en los autómatas ayudan a elaborar mucho
mejor el orden y lógica de este juego llamado piedra, papel o tijera. Aunque
Arduino es ideal para proyectos educativos y prototipos simples, puede enfrentar
limitaciones cuando se trata de autómatas más complejos o aplicaciones
industriales a gran escala. En entornos donde se requiere una mayor
complejidad, rendimiento y escalabilidad, puede ser necesario migrar a
plataformas más avanzadas y especializadas.
Bibliografía.

 Mayol i Badía, A. (2009). Autómatas programables: ( ed.). Marcombo.


https://elibro.net/es/lc/tesi/titulos/45838
 Oliveira, J. (2012). Modelo de sistema viable como herramienta de diseño
para un programa ingeniería de sistemas: ( ed.). Red Enlace.
https://elibro.net/es/lc/tesi/titulos/98563

También podría gustarte