/*βββββββββββββββββββββββββββββββββββββββββββββββ
β β
β β 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);
}