0% encontró este documento útil (0 votos)
17 vistas9 páginas

Instituto Politécnico Nacional Ipn Centro de Estudios Científicos Y Tecnológicos Número 10 "Carlos Vallejo Márquez" Cec Y T No. 10 "CVM"

Cargado por

kevin021alain
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como DOCX, PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
17 vistas9 páginas

Instituto Politécnico Nacional Ipn Centro de Estudios Científicos Y Tecnológicos Número 10 "Carlos Vallejo Márquez" Cec Y T No. 10 "CVM"

Cargado por

kevin021alain
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como DOCX, PDF, TXT o lee en línea desde Scribd

INSTITUTO POLITÉCNICO NACIONAL

IPN CENTRO DE ESTUDIOS CIENTÍFICOS Y


TECNOLÓGICOS
NÚMERO 10 “CARLOS VALLEJO
MÁRQUEZ” CEC Y T NO. 10 “CVM”

Materia: Microcontroladores
Profesor: Peña González Lorenzo Bertín
Alumno: -Mendoza Acosta Alfredo
-Madrigal Constantino Erick Leonardo
Grupo: 6IM14
Reporte: practica con pantalla plc

Introduccion
En el ámbito de la automatización industrial, los Controladores
Lógicos Programables (PLC) han desempeñado un papel crucial en
la mejora de los procesos productivos. Más allá de su uso en
aplicaciones industriales tradicionales, los PLC también pueden ser
utilizados para desarrollar aplicaciones lúdicas y educativas, como
juegos interactivos. Esta práctica se centra en el desarrollo y
programación de una pantalla de PLC para un juego interactivo. El
objetivo principal de esta práctica es demostrar la versatilidad de
los PLC, así como las habilidades de programación y diseño de
interfaces gráficas de usuario (HMI, Human-Machine Interface)
necesarias para crear una experiencia interactiva.

Desarrollo
Para llevar a cabo esta práctica, se utilizó un PLC con capacidad de
programación avanzada y una pantalla HMI integrada. El juego
desarrollado es una versión sencilla del clásico "dinosaurio", en el
cual el jugador debe recordar que el dinosaurio evite chocar con un
arbusto que se incrementa en dificultad a medida que avanza.

CODIGO
#include <LiquidCrystal.h>

LiquidCrystal lcd(12, 11, 5, 4, 3, 2);

byte DINO_PARADO_PARTE_1[8] = { B00000, B00000, B00010, B00010, B00011, B00011, B00001, B00001 };

byte DINO_PARADO_PARTE_2[8] = { B00111, B00111, B00111, B00100, B11100, B11100, B11000, B01000 };

byte DINO_PIE_DERE_PART_1[8] = { B00000, B00000, B00010, B00010, B00011, B00011, B00001, B00001 };

byte DINO_PIE_DERE_PART_2[8] = {B00111, B00111, B00111, B00100, B11100, B11100, B11000, B00000};

byte DINO_PIE_IZQU_PART_1[8] = {B00000, B00000, B00010, B00010, B00011, B00011, B00001, B00000};

byte DINO_PIE_IZQU_PART_2[8] = {B00111, B00111, B00111, B00100, B11100, B11100, B11000, B01000};

byte DOS_RAMAS_PART_1[8] = {B00000, B00100, B00100, B10100, B10100, B11100, B00100, B00100};

byte DOS_RAMAS_PART_2[8] = {B00100, B00101, B00101, B10101, B11111, B00100, B00100, B00100};

byte AVE_ALAS_PART1[8] = {B00001, B00001, B00001, B00001, B01001, B11111, B00000, B00000};

byte AVE_ALAS_PART2[8] = {B00000, B10000, B11000, B11100, B11110, B11111, B00000, B00000};

//defino variables

int columna_dino1 = 1;

int columna_dino2 = 2;

int fila_dino = 1;

unsigned long reloj=0; //para usar la funcion millis envez de delay

int periodo=100; //es el periodo en milisegundo

int flag=1;

int fila_rama=0;

int columna_rama=13;

int periodo2=100;

unsigned long reloj2=0;

int a=0;

int b=1;

int c=2;

int d=0;

unsigned long reloj3=0;

int periodo3=100;
int puntos =0;

int punto2 =0;

int numerorandom=0;

int columnaave= 13;

int e=0;

int fila_ave=1;

int senalactual=0;

int senalantigua=0;

int f=13;

int aceleracion=1;void setup() {

lcd.begin(16, 2);

lcd.createChar(0,DINO_PARADO_PARTE_1);

lcd.createChar(1,DINO_PARADO_PARTE_2);

lcd.createChar(2,DINO_PIE_DERE_PART_1);

lcd.createChar(3,DINO_PIE_DERE_PART_2);

lcd.createChar(4,DINO_PIE_IZQU_PART_1);

lcd.createChar(5,DINO_PIE_IZQU_PART_2);

lcd.createChar(6,DOS_RAMAS_PART_1);

lcd.createChar(7,DOS_RAMAS_PART_2);

void loop() {

if(millis()>reloj+periodo){ //retardo para el pies del dinosaurio

reloj=millis();

if(flag==1){

flag=2;

else if(flag==2){

flag=1;

if(millis()>reloj2+periodo2){ //retardo para la velocidad de las ramas

reloj2=millis();

columna_rama=columna_rama-1;
if(columna_rama<0){

columna_rama=13;

periodo2=periodo2-aceleracion;//aceleracion

numerorandom=random(0,3);//aca debe estar el random ya que es cada vez que regresa a la columna 13

f=columna_rama+1;

lcd.setCursor(f,1); //limpio abajo

lcd.print(" ");

f=columna_rama+1;

lcd.setCursor(f,0); //limpio arriba

lcd.print(" ");

lcd.setCursor(0,1); //limpio arriba

lcd.print(" ");

lcd.setCursor(0, 0);

lcd.print(" ");

a=1;

if(d==0){

if(flag==1){

lcd.setCursor(columna_dino1,fila_dino);

lcd.write(byte(2));

lcd.setCursor(columna_dino2,fila_dino);

lcd.write(byte(3));

if(flag==2){

lcd.setCursor(columna_dino1,fila_dino);

lcd.write(byte(4));

lcd.setCursor(columna_dino2,fila_dino);

lcd.write(byte(5));

if(a==1){

if(numerorandom == 1){

fila_rama = 1;
lcd.createChar(6,DOS_RAMAS_PART_1);

lcd.setCursor(columna_rama,fila_rama);

lcd.write(byte(6));

else if(numerorandom == 2){

fila_rama = 1;

lcd.createChar(7,DOS_RAMAS_PART_2);

lcd.setCursor(columna_rama,fila_rama);

lcd.write(byte(7));

else{ //esta es la parte del ave

columnaave=columna_rama;

columnaave=columnaave-1;

fila_rama = 0;

lcd.createChar(6,AVE_ALAS_PART1);

lcd.setCursor(columnaave,fila_rama);

lcd.write(byte(6));

lcd.createChar(7,AVE_ALAS_PART2);

lcd.setCursor(columna_rama,fila_rama); //columna rama porque debe estar a la izquierda de columan eve

lcd.write(byte(7));

a=0;

//generamos condiciones al choca

if(digitalRead(13)==HIGH && (columna_rama==1||columna_rama==2||columnaave==1||columnaave==2) && fila_rama==0 ){

lcd.clear();

lcd.setCursor(5, 0);

lcd.print("GAME OVER");

delay(2000);

lcd.clear();

columna_rama=15;

periodo2=100;

puntos=0;

punto2=0;
periodo2=100;

if((columna_rama==b||columna_rama==c) && fila_rama==1){ //condicion de la rama

lcd.clear();

lcd.setCursor(5, 0);

lcd.print("GAME OVER");

delay(2000);

lcd.clear();

columna_rama=15;

periodo2=100;

puntos=0;

puntos=2;

periodo2=100;

//condicion del ave

// lcd.clear();

// //lcd.setCursor(5, 0);

//lcd.print("GAME OVER");

// delay(2000);

// lcd.clear();

// columna_rama=15;

// periodo2=100;

// fila_rama=1;

//saltar al presionar pulsador púlsado

if(digitalRead(13)==HIGH){

b=50; //a bc lo pongo un valor mayor a 15 para que no coincida con el movimiento de la columna

c=50;

if(d==0){

lcd.setCursor(0, 1); // LIMPIA ABAJO

lcd.print(" ");

d=1;

lcd.setCursor(columna_dino1,0);
lcd.write(byte(2));

lcd.setCursor(columna_dino2,0);

lcd.write(byte(3));

else{

b=1; //que regrese a su valor de inicio

c=2;

// lcd.setCursor(0, 0);

//lcd.print(" ");

d=0;

//creamos otro retardo para los puntos

if(millis()>reloj3+periodo3){ //reatrdo para los puntos acumulados

reloj3=millis();

lcd.setCursor(14, 1);

lcd.print(puntos);

//if(b==50){ // el que solo cuente cuando esta en el piso es opcional

// }

//else{

puntos=puntos+1;

//}

if(puntos==100){

puntos=0;

punto2=punto2+1;

if(punto2==100){

punto2=0;}

lcd.setCursor(14, 1);

lcd.print(puntos);

lcd.setCursor(14, 0);

lcd.print(punto2);
//detector de cambio de estado

senalactual=digitalRead(13);

if (senalactual != senalantigua)

lcd.setCursor(1, 0);

lcd.print(" ");

senalantigua = senalactual;

//DISEÑADO POR CREA ELECTRONICA

//https://www.youtube.com/watch?v=yki4MBmUFI4&t=2s

Conclusión
El desarrollo de un juego interactivo utilizando un PLC y una pantalla HMI demuestra la
flexibilidad y el potencial creativo de estas herramientas más allá de su uso industrial
convencional. Esta práctica no solo refuerza los conocimientos técnicos en programación
de PLC y diseño de HMI, sino que también fomenta la creatividad y la capacidad de
resolver problemas de forma innovadora. La implementación exitosa del juego
"DINOSAURIO" es un ejemplo concreto de cómo los PLC pueden ser utilizados en
aplicaciones educativas y recreativas, proporcionando una experiencia de aprendizaje
dinámica y divertida.

También podría gustarte