/*☄☄☄☄☄☄☄☄☄☄☄☄☄☄☄☄☄☄☄☄☄☄☄☄☄☄☄☄☄☄☄☄☄☄☄☄☄☄☄☄☄☄☄☄☄☄☄
☄ ☄
☄ ☘ DATOS GENERALES: ☄
☄ NOMBRE: Uso básico del Joystick. ☄
☄ FECHA: 10 de noviembre de 2024. ☄
☄ VERSIÓN: 1.0. ☄
☄ ☄
☄ AUTOR: M. en C. Esli Castellanos Berján. ☄
☄ E-MAIL: [email protected]. ☄
☄ COMPAÑÍA: Universidad de Colima - Facultad de Telemática. ☄
☄ ☄
☄ uC: ATMEGA - 328p. ☄
☄ Nombre: Arduino UNO. ☄
☄ ☄
☄☄☄☄☄☄☄☄☄☄☄☄☄☄☄☄☄☄☄☄☄☄☄☄☄☄☄☄☄☄☄☄☄☄☄☄☄☄☄☄☄☄☄☄☄☄☄☄
☄ ☄
☄ ☘ DESCRIPCIÓN DEL PROGRAMA: ☄
☄ Arquitectura de software que ejemplifica el uso del Joystick. ☄
☄ Voltaje de operación del joystick: 5V. ☄
☄ ☄
☄☄☄☄☄☄☄☄☄☄☄☄☄☄☄☄☄☄☄☄☄☄☄☄☄☄☄☄☄☄☄☄☄☄☄☄☄☄☄☄☄☄☄☄☄☄☄☄
☄ ☄
☄ ☘ NOTAS: ☄
☄ ☄
☄ ☄
☄☄☄☄☄☄☄☄☄☄☄☄☄☄☄☄☄☄☄☄☄☄☄☄☄☄☄☄☄☄☄☄☄☄☄☄☄☄☄☄☄☄☄☄☄☄☄*/
#define VERT_PIN A0
#define HORZ_PIN A1
#define SEL_PIN 2
#define VALOR_INICIAL 512
#define VALOR_TOPE 1023
#define PWM_MIN 0
#define PWM_MAX 255
#define LED_ARRIBA 10
#define LED_ABAJO 5
#define LED_DERECHA 3
#define LED_IZQUIERDA 9
#define LED_PRESIONAR 4
#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 ) ) );
digitalWrite( LED_PRESIONAR, digitalRead(SEL_PIN) ? LOW:HIGH );
int vert = analogRead(VERT_PIN);
int horz = analogRead(HORZ_PIN);
Serial.print("Eje Y: ");
Serial.println(vert);
Serial.print("Eje X: ");
Serial.println(horz);
Serial.print("Botón: ");
Serial.println(digitalRead(SEL_PIN));
delay(150);
}