#define VERT_PIN 32
#define HORZ_PIN 2
#define SEL_PIN 17
#define VALOR_INICIAL 2048
#define VALOR_TOPE 4095
#define PWM_MIN 0
#define PWM_MAX 255
#define LED_ARRIBA 33
#define LED_ABAJO 25
#define LED_DERECHA 27
#define LED_IZQUIERDA 26
#define LED_PRESIONAR 16
#define INCREMENTO( a ) a > VALOR_INICIAL ? map ( a, VALOR_INICIAL, VALOR_TOPE, PWM_MIN, PWM_MAX ) : 0
#define DECREMENTO( a ) a < VALOR_INICIAL ? map ( a, VALOR_INICIAL, VALOR_TOPE, PWM_MAX, PWM_MIN ) : 0
void setup ( void ) {
Serial.begin(115200);
pinMode(VERT_PIN, INPUT);
pinMode(HORZ_PIN, INPUT);
pinMode(SEL_PIN, INPUT_PULLUP);
pinMode(LED_ARRIBA, OUTPUT);
pinMode(LED_ABAJO, OUTPUT);
pinMode(LED_IZQUIERDA, OUTPUT);
pinMode(LED_DERECHA, OUTPUT);
pinMode(LED_PRESIONAR, OUTPUT);
}
void loop ( void ) {
analogWrite ( LED_ARRIBA, INCREMENTO ( analogRead ( VERT_PIN ) ) );
analogWrite ( LED_IZQUIERDA, INCREMENTO ( analogRead ( HORZ_PIN ) ) );
analogWrite ( LED_ABAJO, DECREMENTO ( analogRead ( VERT_PIN ) ) );
analogWrite ( LED_DERECHA, DECREMENTO ( analogRead ( HORZ_PIN ) ) );
//map(value, fromLow, fromHigh, toLow, toHigh)
int vert = analogRead(VERT_PIN);
int horz = analogRead(HORZ_PIN);
int boton = digitalRead(SEL_PIN);
if(boton == 0){digitalWrite(LED_PRESIONAR, HIGH);}else{digitalWrite(LED_PRESIONAR, LOW);}
Serial.print("Eje Y: ");
Serial.println(vert);
Serial.print("Eje X: ");
Serial.println(horz);
Serial.print("Botón: ");
Serial.println(boton);
delay(150);
}
/*#include <Wire.h>
#include <LiquidCrystal_I2C.h>
//Crear el objeto lcd dirección 0x3F y 16 columnas x 2 filas
LiquidCrystal_I2C lcd(0x27,16,2); //
const int joystick_x_pin = A0;
/// primero usar una funcion para saber cual es el valor del estado reposo del joystock
/// el valor maximo es de 1023
const int joystick_y_pin = A3;
void setup() {
// variables del joystick
int x_adc_val, y_adc_val; //valor
float x_volt, y_volt; // vcc
// Inicializar el LCD
lcd.init();
Serial.begin(115200); Define baud rate for serial communication
//Encender la luz de fondo.
lcd.backlight();
// Escribimos el Mensaje en el LCD en una posición central.
lcd.setCursor(0, 0);
lcd.print("Eric Daniel Puente Ruiz");
lcd.setCursor(0, 1); // (columna, fila)
lcd.print("20192964");
// JOYSTICK
x_adc_val = analogRead(joystick_x_pin);
y_adc_val = analogRead(joystick_y_pin);
x_volt = ( ( x_adc_val * 3.3 ) / 4095 ); //Convert digital value to voltage
y_volt = ( ( y_adc_val * 3.3 ) / 4095 ); //Convert digital value to voltage
Serial.print("X_Voltage = ");
Serial.print(x_volt);
Serial.print("\t");
Serial.print("Y_Voltage = ");
Serial.println(y_volt);
delay(100);
}
void loop() {
//desplazamos una posición a la izquierda
lcd.scrollDisplayLeft();
delay(500);
}*/