Practica 6

UNIVERSIDAD NACIONAL AUTÓNOMA DE MÉXICO FACULTAD DE ESTUDIOS SUPERIORES ARAGÓN LABORATORIO DE MICROPROCESADORES Y MICROC

Views 135 Downloads 0 File size 573KB

Report DMCA / Copyright

DOWNLOAD FILE

Recommend stories

Citation preview

UNIVERSIDAD NACIONAL AUTÓNOMA DE MÉXICO FACULTAD DE ESTUDIOS SUPERIORES ARAGÓN LABORATORIO DE MICROPROCESADORES Y MICROCONTROLADORES PRACTICA 6: PERIFERICOS DE ENTRADA

CORONA ORTEGA BRANDON ZALETA ANDRADE SERGIO RESÉNDIZ ESPÍNDOLA DAVID

GRUPO: 8583

Objetivo Se aprenderá a procesar en el microcontrolador de ardiuno la información proveniente desde distintos periféricos de entrada.  Actividades previas Se observaron los videos 9 y 17 “Teclado keypad 4x4 y simple control de acceso” y “Módulo Joystick analógico “del canal de YouTube “BitwiseAr”.   1. ¿Qué es un periférico de entrada? Son aquellos que hacen 'entrar' información en el microprocesador (o microcontrolador) a través de dispositivos manejados por el usuario. 2. Investiga cómo funciona un teclado matricial 4x4.  Agrupa varios pulsadores y permite controlarlos empleando un número de conductores inferior al que se necesitaría al usarlos de forma individual. El teclado tiene agrupados los pulsadores en filas y columnas formando una matriz. 3. Investiga cómo funciona un joystick. El funcionamiento está basado en el movimiento en dos dimensiones de una palanca, este movimiento es capturado por dos potenciómetros (uno para cada movimiento), de este modo se entiende que para cada movimiento en cada dirección será regulado un potenciómetro. Con este módulo joystick se puede utilizar el cambio de valor resistivo para tomar lectura con dos entradas analógicas en el Arduino. Este módulo de joystick cuenta con cinco pines. GND: Pin conectado a tierra. +5V: pin de alimentación(5v). VRx: pin de lectura de potenciómetro para el eje de las x’s. VRy: pin de lectura de potenciómetro para el eje de las y’s. SW: es un pin adicional que se utiliza para un push button en la parte inferior. 4. Explica qué es la zona de reposo de un joystick.  Cuando el joystick se encuentra en la posición inicial o media en algunos casos no se mantiene en un valor medio.

Materiales  Placa de programación Arduino Uno  Cable USB a USB tipo B  Protoboard  Teclado numérico matricial 4x4 ARD 320  Joystick para arduino ARD-358  1 resistencia de 10 k Ω  5 resistencias de 330 Ω  5 LEDs  Cables tipo Dupont de 15 cm Desarrollo 1. Se elaboró un circuito en el que se introdujo una contraseña de 6 símbolos mediante el teclado matricial 4x4. Si la contraseña era correcta, en el monitor serie de Arduino se mostró el mensaje “contraseña correcta”, de lo contrario se mostraría el mensaje “contraseña incorrecta” (la contraseña correcta fue 54B6D3).

CIRCUITO IMPLEMENTADO:

CODIGO DEL PROGRAMA: Se utilizó la librería: Keypad by Mark Stanley and Alexander Brevig #include const byte FILAS = 4; const byte COLUMNAS = 4; char keys[FILAS][COLUMNAS] = { {'1','2','3','A'}, {'4','5','6','B'}, {'7','8','9','C'}, {'*','0','#','D'} };

byte pinesFilas[FILAS] = {9,8,7,6}; byte pinesColumnas[COLUMNAS] = {5,4,3,2}; Keypad teclado = Keypad(makeKeymap(keys), pinesFilas, pinesColumnas, FILAS, COLUMNAS); char TECLA; char CLAVE[7]; char CLAVE_MAESTRA[7] = "123456"; byte INDICE = 0;

void setup() { Serial.begin(9600); } void loop(){ TECLA = teclado.getKey(); if (TECLA) { CLAVE[INDICE] = TECLA; INDICE++; Serial.print(TECLA); } if(INDICE == 6) { if(!strcmp(CLAVE, CLAVE_MAESTRA)) Serial.println(" Correcta"); else Serial.println(" Incorrecta"); INDICE = 0; } } 2. Se elaboró un circuito en el que dependiendo de la dirección en que se mueve el joystick se iluminaron cuatro leds. Los cuatros leds deberían tener salida PWM y tener una intensidad proporcional a la posición del joystick, además de estar dispuestos en forma de cruz sobre la protoboard, un quinto led se mostraba si el joystick se presionaba hacia abajo.  CODIGO DEL PROGRAMA: int X; int Y; int LED_IZQUIERDO = 3; int LED_DERECHO = 5; int LED_ABAJO = 6; int LED_ARRIBA = 9;

int PULSADOR = 10; int LED_SW = 11; int SW; void setup(){ pinMode(LED_IZQUIERDO, OUTPUT); pinMode(LED_DERECHO, OUTPUT); pinMode(LED_ABAJO, OUTPUT); pinMode(LED_ARRIBA, OUTPUT); pinMode(LED_SW, OUTPUT); pinMode(PULSADOR, INPUT); } void loop(){ X = analogRead(A0); Y = analogRead(A1); SW = digitalRead(PULSADOR); if (X >= 0 && X < 480){ analogWrite(LED_IZQUIERDO, map(X, 0, 480, 255, 0)); } else { analogWrite(LED_IZQUIERDO, 0); } if (X > 520 && X = 0 && Y < 480){ analogWrite(LED_ABAJO, map(Y, 0, 480, 255, 0)); } else { analogWrite(LED_ABAJO, 0); } if (Y > 520 && Y