Demuestra habilidades en tecnologías de la información
Enviado por MIGUEL CALLASI • 3 de Julio de 2022 • Documentos de Investigación • 1.988 Palabras (8 Páginas) • 39 Visitas
[pic 1][pic 2]
[pic 3]
SERVICIO NACIONAL DE ADIESTRAMIENTO EN TRABAJO INDUSTRIAL
[pic 4]
- 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 |
- PLANIFICACIÓN DEL TRABAJO
N° | 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] |
...