Está en la página 1de 6

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 <Keypad.h>

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 <= 1023){
analogWrite(LED_DERECHO, map(X, 520, 1023, 0, 255));
} else {
analogWrite(LED_DERECHO, 0);
}
if (Y >= 0 && Y < 480){
analogWrite(LED_ABAJO, map(Y, 0, 480, 255, 0));
} else {
analogWrite(LED_ABAJO, 0);
}
if (Y > 520 && Y <= 1023){
analogWrite(LED_ARRIBA, map(Y, 520, 1023, 0, 255));
} else {
analogWrite(LED_ARRIBA, 0);
}

digitalWrite(LED_SW, !SW);
}
CIRCUITO IMPLEMENTADO:

También podría gustarte