martes, 20 de marzo de 2018

LABORATORIO 5


JUEGO DE TIRO A CANASTA CON
INDICADOR DE PUNTOS


FASE 5

IMPLEMENTACIÓN DEL JUEGO


1. COMPETENCIA ESPECIFICA DE LA SESIÓN:
  • Conocer el Display LCD y su funcionamiento
  • Programar eficientemente el LCD
  • Programar HMI para proyecto actual.


2. MARCO TEÓRICO:

Pantalla LCD 16x2 (2x16)

DESCRIPCIÓN:

Pantalla LCD de uso común en proyectos de electrónica, utiliza una interfaz paralela. La pantalla requiere 11 pines de entrada/salida para mostrar el mensaje. Muy utilizada con microcontroladores PIC y Arduino.

FUNCIONAMIENTO DE UNA PANTALLA LCD:


El LCD modifica la luz que lo incide. Dependiendo de la polarización que se esté aplicando, el LCD reflejará o absorberá más o menos luz. Cuando un segmento recibe la tensión de polarización adecuada no reflejará la luz y aparecerá en la pantalla del dispositivo como un segmento oscuro. Seguro que más de un lector habrá visto este fenómeno en calculadoras, relojes, etc.

DESCRIPCIÓN

Una pantalla de cristal líquido o LCD (Liquid Cristal Display) es un dispositivo para la presentación de imágenes o caracteres. En este caso usaremos uno basado en el µControlador Hitachi 44780 o compatible, que muestra 16 o 20 caracteres en 1, 2 o 4 líneas. Las funciones de control son iguales para todos los modelos.

3. EVIDENCIAS DE TAREAS EN EL LABORATORIO:

EJERCICIO 1

PROGRAMA EN CCS C COMPILER




#include <16f877a.h>            
#use delay (clock=20M)           
#fuses HS, NOPROTECT, NOWDT      

#define LCD_ENABLE_PIN        PIN_D3   
#define LCD_RS_PIN            PIN_D2   
#define LCD_RW_PIN            PIN_A0
#define LCD_DATA4             PIN_D4
#define LCD_DATA5             PIN_D5
#define LCD_DATA6             PIN_D6
#define LCD_DATA7             PIN_D7  

#include <lcd.c>                 

int16 dato;

void main ()
{
   lcd_init () ;                       
   printf (lcd_putc, "   CONTADOR") ;  
   dato = 44;                          

   WHILE (true)
   {
      IF (!input(PIN_D0))              /
         {
            dato = dato + 7;
            lcd_gotoxy(1,2);
            printf (lcd_putc, "Valor: %lu", dato) ;
            while (!input(PIN_D0))     
            {}                         
         }
      IF (!input(PIN_D1))
         {
            dato = dato - 5;
            lcd_gotoxy(1,2);
            printf (lcd_putc, "Valor: %lu", dato) ;
            while (!input(PIN_D1))     
            {} 
         }   
    }

}

SIMULACIÓN




ENTRENADOR



EJERCICIO 2

Se implemento un dato +150, cuando el dato sea mayor igual a 1000 se habrá de imprimir la palabra "FULL" y cuando el dato sea 0 la palabra "VALOR MÍNIMO"

PROGRAMA EN CCS C COMPILER




#include <16f877a.h>             
#use delay (clock=20M)           
#fuses HS, NOPROTECT, NOWDT      

#define LCD_ENABLE_PIN        PIN_D3   
#define LCD_RS_PIN            PIN_D2   
#define LCD_RW_PIN            PIN_A0
#define LCD_DATA4             PIN_D4
#define LCD_DATA5             PIN_D5
#define LCD_DATA6             PIN_D6
#define LCD_DATA7             PIN_D7  

#include <lcd.c>                

int16 dato;

void main ()
{
   lcd_init () ;                       
   printf (lcd_putc, "   CONTADOR") ; 
   dato = 0;   

   WHILE (true)
   {
  
      IF (!input(PIN_D0))   
         {
            dato = dato + 150;
            lcd_gotoxy(1,2);
            printf (lcd_putc, "Valor: %lu", dato) ;
            while (!input(PIN_D0))     
            {} 
            IF (dato>1000)
            {  dato=1000;
               lcd_gotoxy(1,1);
               printf (lcd_putc, "   FULL      ") ;
            }  
         }
    
      IF (!input(PIN_D1))
         {  
            lcd_gotoxy(1,1);
            printf (lcd_putc, "    CONTADOR    ") ;           
            dato = dato - 150;
            lcd_gotoxy(1,2);
            printf (lcd_putc, "Valor: %lu", dato) ;
            while (!input(PIN_D1))  
            {} 
            IF(dato==0)
            {  dato=0;
               lcd_gotoxy(1,1);
               printf (lcd_putc, "    VALOR MINIMO       ") ;
            }  
         }   
    }


}


ENTRENADOR





VIDEO




OBSERVACIONES

  1.        Se usó al micro controlador en aplicaciones de control electrónico.
  2.        Se desarrolló y ejecuto programas en un micro controlador PIC
  3.           Se configuro y se ejecutó el programa en interfaces básicas del micro controlador.
  4.         Se conoció el Display LCD y su funcionamiento
  5.          Se configuro el programa eficientemente el LCD
  6.       Se programó HMI para proyecto actual.


CONCLUSIONES

  1. Aplicación de los recursos disponibles donde el programa trabajo con el código compilado para realizar la actividad
  2.          Uso de los comandos dirigidos tanto a generar letras o caracteres como decimales requieren el uso de un código conjunto en el cual también  se designa lo que lo distingue a los datos entregados.
  3.          Realizar la rutina repetitiva con el programa puede limitarse haciendo uso de otra directiva justo al final
  4.          calcular la respuesta midiendo o aproximándolo en ms, sea dependiendo de lo que se solicite.
  5.        El manejo de los displays debe de ser ordenado en le código tanto  para señalar que este es abierto como  ordenar que aparezcan los datos que uno desea.


FOTO GRUPAL














LABORATORIO 4

LABORATORIO NRO 4

JUEGO DE TIRO A CANASTA CON
INDICADOR DE PUNTOS




FASE 4

IMPLEMENTACIÓN DEL JUEGO

1. COMPETENCIA ESPECIFICA DE LA SESIÓN:

  • Conocer el uso de las subrutinas
  • Conocer las técnicas de elaboración de programas a través de algoritmos
  • Programación de un proyecto real.


2. MARCO TEÓRICO:

TIPOS DE VARIABLES

Números enteros ( int )

Las variables de tipo entero o int son aquellas que almacenan un número (ya sea positivo o negativo) no decimal . Debido a que cuando creamos una variable reservamos memoria para ella, cada tipo de variable reservará más o menos memoria para representar el dato que almacenarán. Dicho esto, en el caso de variables de tipo int sólo podemos almacenar números que estén dentro del rango -2^31 y 2^31 - 1 . Si intentamos almacenar un número que esté fuera de ese rango nos dará un error de compilación o de ejecución. Por ejemplo, no podríamos almacenar el número 10000000000 en una variable de tipo int. Un ejemplo sería:

Números enteros grandes ( long )

Las variables de tipo entero grandes o long son aquellas que almacenan un número (ya sea positivo o negativo) no decimal . Las variables de tipo long almacenan números que están dentro del rango -2^63 y 2^63 - 1 . Si intentamos almacenar un número que esté fuera de ese rango nos dará un error de compilación o de ejecución. Para representar que un número es de tipo long, añadimos una al final del número:

Números decimales ( double y float )

Si en lugar de números enteros queremos almacenar números decimales, tenemos dos tipos:
  • float: Las variables de tipo float o flotante son aquellos números en precisión simple de 32 bytes en el estándar IEEE 754. Para indicar que un número es de tipo flotante ponemos un punto para separar la parte entera del número de la parte decimal.
  • double: Las variable de tipo double o doble son aquellos números en precisión doble de 64 bytes en el estándar IEEE 754. Para indicar que un número es de tipo flotante ponemos un punto para separar la parte entera del número de la parte decimal.
Si por algún motivo necesitamos especificar si un número es flotante o doble basta con añadir una letra oal final del número tal y como vemos en el siguiente código:
double x = 3.2d;
float y = 4.8f;

Verdadero o Falso ( boolean )

Más adelante veremos herramientas para controlar el flujo de ejecución del programa las cuales se basan en el uso de condiciones ante las cuales el programa se ejecutará de una forma u de otra. Normalmente, esas condiciones serán de la forma:
Si esVerdadero
  Hacer A
Sino 
  Hacer B


Símbolos o caracteres ( char )

Ya hemos hablado de los números, pero ¿qué sucede con las letras o símbolos? Podríamos usar variables de tipo int para almacenarlas, pero al hacer eso en lugar de guardar el símbolo como tal, se almacenaría su correspondiente valor en formato decimal en ASCII y tendríamos que manualmente interpretar dicho número para pasarlo a su correspondiente símbolo si quisiéramos por ejemplo imprimirlo por consola. Para evitar esto, tenemos las variables de tipo char :
char a = 'a';
char b = 'b';

Cadenas de texto ( String )

Hemos solucionado el problema de almacenar en memoria símbolos individuales. Supongamos que queremos trabajar con secuencias de símbolos o cadenas de texto . Con lo visto hasta ahora tendríamos que crear tantas variables de tipo char como letras tenga la cadena. Un ejemplo rápido, si quisiéramos representar el Quijote con variables char tendríamos un total aproximadamente de 2059005 letras en él contando las letras repetidas. Resulta inviable crear tantas variables de tipo char, ¿verdad? Sin ir tan lejos, para la palabra "perro" tendríamos que crear 5 variables. Para solucionar esto, Java nos facilita el trabajo al definir una clase llamada String la cual representa la secuencia o el vector de símbolos que componen una palabra, una frase, un párrafo, etc. Siguiendo el código del ejemplo,
String perro = "perro";
String gato = "gato";

3. EVIDENCIAS DE TAREAS EN EL LABORATORIO:

EJERCICIO


PROGRAMA EN CCS C COMPILER:








ENTRENADOR:

Se completo los números decodificados para que la cuenta de cada display llegue hasta 9 después se puso un tiempo de retardo de 1 ms  luego las unidades, decenas, centenas y unidades de millar.

Al presionar "A5" (se inserta la moneda) se escucha un "BIP" durante 500 ms eso indica que se inicia el juego, luego al presionar "D0" el dato cuenta +7 y suena un "BIP" durante 500 ms, después te indica que si llega hasta 50 puntos sonara 3 "BIPs" durante 500 ms.


Se presiono A5 para iniciar el juego sonando un BIP.


El dato cuenta +7 sonando un BIP.


Cuenta +14 sonando un BIP y así sucesivamente.


Hasta el momento que llega a 49, el programa te dice que si llega hasta el valor de 50 sonara e BIPs.







VÍDEO DE LA TAREA HECHA EN CLASE:






         OBSERVACIONES
  •        Se uso el micro controlador en aplicaciones de control electrónico.
  •        Se creo y ejecuto programas en un microcontrolador PIC
  •     Se dio configuración a interfaces básicas del microcontrolador.
  •                  Se entendió el Display de 7 segmentos y su funcionamiento
  •                 Comprensión y aplicación las técnicas de multiplexación
  •     Se programó el HMI para juego de encestar.


CONCLUSIONES
  •   La actividad se centro en el display de 7 segmentos con código binario donde los comandos deben establecerse en un orden especifico, ya que los comandos no serán correctamente transmitidos a la tarjeta entrenadora
  •   Las funciones condicionales se aplican en conjunto con algún dispositivo como el pulsador para dar una respuesta
  •   La iteración es realizable mediante el comando delay, acortando el tiempo de retraso.
  • Operaciones matemáticas en conjunto  con los comandos son factibles en la experiencia.
  • Aplicación de varias funciones que respondan a la vez a partir de una señal

INTEGRANTES: 
RICARDO PARIONA MONTOYA(ricardo.pariona@tecsup.edu.pe)




YANIRA CHAMBILLA CONDORI( yanira.chambilla@tecsup.edu.pe)



ANGEL DE JESÚS HUARACHI ESCALANTE(angel.huarachi@tecsup.edu.pe)