ClubEnsayos.com - Ensayos de Calidad, Tareas y Monografias
Buscar

Demuestra habilidades en tecnologías de la información


Enviado por   •  3 de Julio de 2022  •  Documentos de Investigación  •  1.988 Palabras (8 Páginas)  •  39 Visitas

Página 1 de 8

[pic 1][pic 2]

 [pic 3]

SERVICIO NACIONAL DE ADIESTRAMIENTO EN TRABAJO INDUSTRIAL

[pic 4]

  1. INFORMACIÓN GENERAL

Apellidos y Nombres: 

Aroni Quispe Jorge Jhampiere

ID:

891110

Dirección Zonal/CFP:

Arequipa - Puno

Carrera:

Soporte y Mantenimiento de computadoras

Semestre:

VI

Curso/ Mód. Formativo

Practica remota S6

Tema del Trabajo:    

Demuestra habilidades en tecnologías de la información

  1. PLANIFICACIÓN DEL TRABAJO

ACTIVIDADES/ ENTREGABLES

CRONOGRAMA/ FECHA DE ENTREGA

01

Planificar que idea se va usar.

20/05/2022

02

Diseñar el prototipo del proyecto.

21/05/2022

03

Implementar configuración a l proyecto del juego.

23/05/2022

04

Prueba de errores o variables sin definir.

26/05/2022

05

Ordenando y arreglando detalles finales como leds,

01/06/2022

06

Entrega del trabajo

03/06/2022

[pic 5]

PROCESO DE EJECUCIÓN

OPERACIONES / PASOS /SUBPASOS

SEGURIDAD / MEDIO AMBIENTE / NORMAS -ESTANDARES

Programación básica en Arduino

Programación C o Visual Estudio

Seguimiento de pines a usar en el circuito.

Pines de Arudino

Pruebas de vulnerabilidad si funciona correctamente

INSTRUCCIONES: debes ser lo más explícito posible. Los gráficos ayudan a transmitir mejor las ideas. No olvides los aspectos de calidad, medio ambiente y SHI.

[pic 6]

[pic 7]

PROGRAMACION DEL PROYECTO:

#include <LiquidCrystal.h>

#define PV_BOTON 2

#define PV_COMENZAR 1

#define PV_LEERESCRIBIR 10

#define PV_CONTRASTE 12

#define HUMANO_CORRER1 1

#define HUMANO_CORRER2 2

#define HUMANO_SALTAR 3

#define HUMANO_SALTAR_SUPERIOR '.'         // Utilizar el '.' caracter para la cabeza

#define HUMANO_SALTAR_INFERIOR 4

#define HUMANO_TERRENO_VACIO ' '      // Utiliza el ' ' caracter

#define HUMANO_TERRENO_SOLIDO 5

#define HUMANO_TERRENO_SOLIDO_DERECHA 6

#define HUMANO_TERRENO_SOLIDO_IZQUIERDA 7

#define HEROE_HORIZONTAL_POSICION 1    // Posición horizontal del héroe en la pantalla

#define TERRENO_ANCHO 16

#define TERRENO_VACIO 0

#define TERRENO_BLOQUE_INFERIOR 1

#define TERRENO_BLOQUE_SUPERIOR 2

#define HEROE_POSICION_APAGADO 0          // El héroe es invisible

#define HEROE_POSICION_CORRER_BAJO_1 1  // El héroe corre en la fila inferior (pose 1)

#define HEROE_POSICION_CORRER_BAJO_2 2  // (pose 2)

#define SALTO_DE_POSICION_DE_HEROE_1 3       // Comenzando un salto

#define SALTO_DE_POSICION_DE_HEROE_2 4       // A media altura

#define SALTO_DE_POSICION_DE_HEROE_3 5       // El salto está en la fila superior.

#define SALTO_DE_POSICION_DE_HEROE_4 6       // El salto está en la fila superior.

#define SALTO_DE_POSICION_DE_HEROE_5 7       // El salto está en la fila superior.

#define SALTO_DE_POSICION_DE_HEROE_6 8       // El salto está en la fila superior.

#define SALTO_DE_POSICION_DE_HEROE_7 9       // Hasta la mitad

#define SALTO_DE_POSICION_DE_HEROE_8 10      // Apunto de aterrizar

#define HEROE_POSICION_CORRER_SUPERIOR_1 11 // El heroe corre en la fila superior (pose 1)

#define HEROE_POSICION_CORRER_SUPERIOR_2 12 //                              (pose 2)

int ledv = 8;

int ledr = 7;

LiquidCrystal lcd(11, 9, 6, 5, 4, 3);

static char terrainUpper[TERRENO_ANCHO + 1];

static char terrainLower[TERRENO_ANCHO + 1];

static bool buttonPushed = false;

void initializeGraphics(){

  static byte graphics[] = {

    // posicion de correr 1

    B01100,

    B01100,

    B00000,

    B01110,

    B11100,

    B01100,

    B11010,

    B10011,

    // posicion de correr 2

    B01100,

    B01100,

    B00000,

    B01100,

    B01100,

    B01100,

    B01100,

    B01110,

    // saltar

    B01100,

    B01100,

    B00000,

    B11110,

    B01101,

    B11111,

    B10000,

    B00000,

    // Saltar más bajo

    B11110,

    B01101,

    B11111,

    B10000,

    B00000,

    B00000,

    B00000,

    B00000,

    // Tierra

    B11111,

    B11111,

    B11111,

    B11111,

    B11111,

    B11111,

    B11111,

    B11111,

    // Tierra parte derecha

    B00011,

    B00011,

    B00011,

    B00011,

    B00011,

    B00011,

    B00011,

    B00011,

    // Tierra parte izquierda

    B11000,

    B11000,

    B11000,

    B11000,

    B11000,

    B11000,

    B11000,

    B11000,

  };

  int i;

// Omita el uso del carácter 0, esto permite que se use lcd.print() para

// dibujar rápidamente múltiples caracteres

  for (i = 0; i < 7; ++i) {

          lcd.createChar(i + 1, &graphics[i * 8]);

  }

  for (i = 0; i < TERRENO_ANCHO; ++i) {

    terrainUpper[i] = HUMANO_TERRENO_VACIO;

    terrainLower[i] = HUMANO_TERRENO_VACIO;

  }

}

 // Desliza el terreno hacia la izquierda en incrementos de medio carácter

void advanceTerrain(char* terrain, byte newTerrain){

  for (int i = 0; i < TERRENO_ANCHO; ++i) {

    char current = terrain[i];

    char next = (i == TERRENO_ANCHO-1) ? newTerrain : terrain[i+1];

    switch (current){

      case HUMANO_TERRENO_VACIO:

        terrain[i] = (next == HUMANO_TERRENO_SOLIDO) ? HUMANO_TERRENO_SOLIDO_DERECHA : HUMANO_TERRENO_VACIO;

        break;

      case HUMANO_TERRENO_SOLIDO:

        terrain[i] = (next == HUMANO_TERRENO_VACIO) ? HUMANO_TERRENO_SOLIDO_IZQUIERDA : HUMANO_TERRENO_SOLIDO;

        break;

      case HUMANO_TERRENO_SOLIDO_DERECHA:

        terrain[i] = HUMANO_TERRENO_SOLIDO;

        break;

      case HUMANO_TERRENO_SOLIDO_IZQUIERDA:

        terrain[i] = HUMANO_TERRENO_VACIO;

        break;

    }

  }

}

bool drawHero(byte position, char* terrainUpper, char* terrainLower, unsigned int score) {

  bool collide = false;

  char upperSave = terrainUpper[HEROE_HORIZONTAL_POSICION];

  char lowerSave = terrainLower[HEROE_HORIZONTAL_POSICION];

  byte upper, lower;

  switch (position) {

    case HEROE_POSICION_APAGADO:

      upper = lower = HUMANO_TERRENO_VACIO;

      break;

    case HEROE_POSICION_CORRER_BAJO_1:

      upper = HUMANO_TERRENO_VACIO;

      lower = HUMANO_CORRER1;

      break;

    case HEROE_POSICION_CORRER_BAJO_2:

      upper = HUMANO_TERRENO_VACIO;

      lower = HUMANO_CORRER2;

      break;

    case SALTO_DE_POSICION_DE_HEROE_1:

    case SALTO_DE_POSICION_DE_HEROE_8:

      upper = HUMANO_TERRENO_VACIO;

      lower = HUMANO_SALTAR;

      break;

    case SALTO_DE_POSICION_DE_HEROE_2:

    case SALTO_DE_POSICION_DE_HEROE_7:

      upper = HUMANO_SALTAR_SUPERIOR;

      lower = HUMANO_SALTAR_INFERIOR;

      break;

    case SALTO_DE_POSICION_DE_HEROE_3:

    case SALTO_DE_POSICION_DE_HEROE_4:

    case SALTO_DE_POSICION_DE_HEROE_5:

    case SALTO_DE_POSICION_DE_HEROE_6:

      upper = HUMANO_SALTAR;

      lower = HUMANO_TERRENO_VACIO;

      break;

    case HEROE_POSICION_CORRER_SUPERIOR_1:

      upper = HUMANO_CORRER1;

      lower = HUMANO_TERRENO_VACIO;

      break;

    case HEROE_POSICION_CORRER_SUPERIOR_2:

      upper = HUMANO_CORRER2;

      lower = HUMANO_TERRENO_VACIO;

      break;

  }

  if (upper != ' ') {

    terrainUpper[HEROE_HORIZONTAL_POSICION] = upper;

    collide = (upperSave == HUMANO_TERRENO_VACIO) ? false : true;

  }

  if (lower != ' ') {

    terrainLower[HEROE_HORIZONTAL_POSICION] = lower;

    collide |= (lowerSave == HUMANO_TERRENO_VACIO) ? false : true;

  }

 

  byte digits = (score > 9999) ? 5 : (score > 999) ? 4 : (score > 99) ? 3 : (score > 9) ? 2 : 1;

 

  // Dibujar la escena

  terrainUpper[TERRENO_ANCHO] = '\0';

  terrainLower[TERRENO_ANCHO] = '\0';

  char temp = terrainUpper[16-digits];

  terrainUpper[16-digits] = '\0';

  lcd.setCursor(0,0);

  lcd.print(terrainUpper);

  terrainUpper[16-digits] = temp;  

  lcd.setCursor(0,1);

  lcd.print(terrainLower);

 

  lcd.setCursor(16 - digits,0);

  lcd.print(score);

  terrainUpper[HEROE_HORIZONTAL_POSICION] = upperSave;//

  terrainLower[HEROE_HORIZONTAL_POSICION] = lowerSave;

  return collide;

}

// Manejar la pulsación del botón como una interrupción

void buttonPush() {

  buttonPushed = true;

}

void setup(){

  pinMode(PV_LEERESCRIBIR, OUTPUT);

  digitalWrite(PV_LEERESCRIBIR, LOW);

  pinMode(PV_CONTRASTE, OUTPUT);

  digitalWrite(PV_CONTRASTE, LOW);

  pinMode(PV_BOTON, INPUT);

  digitalWrite(PV_BOTON, HIGH);

  pinMode(PV_COMENZAR, OUTPUT);

  digitalWrite(PV_COMENZAR, HIGH);

 

  pinMode(ledr, OUTPUT);

  pinMode(ledv, OUTPUT);

  // El pin digital 2 se asigna a la interrupción 0

  attachInterrupt(0/*PV_BOTON*/, buttonPush, FALLING);

 

  initializeGraphics();

 

  lcd.begin(16, 2);

}

void loop(){

 

 

  static byte heroPos = HEROE_POSICION_CORRER_BAJO_1;

  static byte newTerrainType = TERRENO_VACIO;

  static byte newTerrainDuration = 1;

  static bool playing = false;

  static bool blink = false;

  static unsigned int distance = 0;//

 

  if (!playing) {

    drawHero((blink) ? HEROE_POSICION_APAGADO : heroPos, terrainUpper, terrainLower, distance >> 3);

    if (blink) {

      lcd.setCursor(0,0);

      lcd.print("Pulse Iniciar");

    }

    delay(250);

    blink = !blink;

    if (buttonPushed) {

      initializeGraphics();

      heroPos = HEROE_POSICION_CORRER_BAJO_1;

      playing = true;

      buttonPushed = false;

      distance = 0;

      digitalWrite(ledv, 1);

      digitalWrite(ledr, 0);

    }

    return;//

  }

  // Desplazar el terreno a la izquierda

  advanceTerrain(terrainLower, newTerrainType == TERRENO_BLOQUE_INFERIOR ? HUMANO_TERRENO_SOLIDO : HUMANO_TERRENO_VACIO);

  advanceTerrain(terrainUpper, newTerrainType == TERRENO_BLOQUE_SUPERIOR ? HUMANO_TERRENO_SOLIDO : HUMANO_TERRENO_VACIO);

 

  // Hacer nuevo terreno para entrar a la derecha

  if (--newTerrainDuration == 0) {

    if (newTerrainType == TERRENO_VACIO) {

      newTerrainType = (random(3) == 0) ? TERRENO_BLOQUE_SUPERIOR: TERRENO_BLOQUE_INFERIOR;

      newTerrainDuration = 2 + random(10);

    } else {

      newTerrainType = TERRENO_VACIO;

      newTerrainDuration = 10 + random(10);

    }

  }

   

  if (buttonPushed) {

    if (heroPos <= HEROE_POSICION_CORRER_BAJO_2) heroPos = SALTO_DE_POSICION_DE_HEROE_1;

    buttonPushed = false;

  }  

  if (drawHero(heroPos, terrainUpper, terrainLower, distance >> 3)) {

    playing = false;

    digitalWrite(ledr, 1);

    digitalWrite(ledv, 0); // reinicio del muñeco o programa.

  } else {

    if (heroPos == HEROE_POSICION_CORRER_BAJO_2 || heroPos == SALTO_DE_POSICION_DE_HEROE_8) {

      heroPos = HEROE_POSICION_CORRER_BAJO_1;

    } else if ((heroPos >= SALTO_DE_POSICION_DE_HEROE_3 && heroPos <= SALTO_DE_POSICION_DE_HEROE_5) && terrainLower[HEROE_HORIZONTAL_POSICION] != HUMANO_TERRENO_VACIO) {

      heroPos = HEROE_POSICION_CORRER_SUPERIOR_1;

    } else if (heroPos >= HEROE_POSICION_CORRER_SUPERIOR_1 && terrainLower[HEROE_HORIZONTAL_POSICION] == HUMANO_TERRENO_VACIO) {

      heroPos = SALTO_DE_POSICION_DE_HEROE_5;

    } else if (heroPos == HEROE_POSICION_CORRER_SUPERIOR_2) {

      heroPos = HEROE_POSICION_CORRER_SUPERIOR_1;

    } else {

      ++heroPos;

    }

    ++distance;

   

    digitalWrite(PV_COMENZAR, terrainLower[HEROE_HORIZONTAL_POSICION + 2] == HUMANO_TERRENO_VACIO ? HIGH : LOW);

  }

  delay(50);

}

[pic 8]

[NOMBRE DEL TRABAJO]

[APELLIDOS Y NOMBRES]

[ESCALA]

...

Descargar como (para miembros actualizados) txt (12 Kb) pdf (294 Kb) docx (195 Kb)
Leer 7 páginas más »
Disponible sólo en Clubensayos.com