// Proyecto - Diseño Interactivo 2 - Juego con Joystick
// Declarando Variables
// Variables para Joystick
// Pines del Joystick
int pinX = A0;
int pinY = A1;
// Variables de Posición
int posicionX = 0;
int posicionY = 0;
// Variables de Almacenamiento para el Joystick
int valorX = 0;
int valorY = 0;
// Variables de Movimiento
int moverX = 0;
int moverY = 0;
// INICIAMOS LA LIBRERÍA
#include <LiquidCrystal.h>
LiquidCrystal lcd(12,11,5,4,3,2); // ORDEN: RS,E,54,D5,D6,D7
byte musicNote [] = {
B00100,
B00110,
B00101,
B00100,
B00100,
B00100,
B11100,
B11100
};
void setup() {
Serial.begin(115200); // Velocdiad de transmisión de datos
// Configurando la pantalla LCD
lcd.begin(16,2);
lcd.createChar(0, musicNote);
lcd.clear();
// Configurando los Puertos
pinMode(pinX, INPUT);
pinMode(pinY, INPUT);
lcd.setCursor(posicionX, posicionY);
lcd.write(byte(musicNote));
}
void loop() {
// Funcionamiento de la pantalla LCD
lcd.setCursor(0,0);
lcd.write(byte(musicNote));
delay(1500);
// Se leen los valores Analogos
valorX = analogRead(pinX);
valorY = analogRead(pinY);
// Mapear los valores del joystick a -1, 0, 1
moverX = map(valorX, 0, 1023, -1, 1);
moverY = map(valorY, 0, 1023, -1, 1);
// Condicional del Movimiento
if (moverX != 0 || moverY != 0) {
lcd.setCursor(posicionX, posicionY);
// Nueva Posición
posicionX += moverX;
posicionY += moverY;
// Limitacion
posicionX = constrain(posicionX, 0, 15);
posicionY = constrain(posicionY, 0, 1);
// Caracter en nueva Posición
lcd.setCursor(posicionX, posicionY);
lcd.write(byte(musicNote));
delay(200);
}
}