/*
Joystick Demo
*/
const int JOY_X_PIN = A0;
const int JOY_Y_PIN = A1;
const int SWITCH_PIN = 12;
const int GRN_LED_PIN = 11;
const int YEL_LED_PIN = 10;
const int RED_LED_PIN = 9;
const int BLU_LED_PIN = 8;
bool switchState = false;
int oldSwVal = HIGH; // INPUT_PULLUP idles HIGH
int oldXval = 0;
int oldYval = 0;
void turnLedsOff() {
digitalWrite(GRN_LED_PIN, LOW);
digitalWrite(YEL_LED_PIN, LOW);
digitalWrite(RED_LED_PIN, LOW);
digitalWrite(BLU_LED_PIN, LOW);
}
void setup() {
Serial.begin(9600);
pinMode(GRN_LED_PIN, OUTPUT);
pinMode(YEL_LED_PIN, OUTPUT);
pinMode(RED_LED_PIN, OUTPUT);
pinMode(BLU_LED_PIN, OUTPUT);
pinMode(SWITCH_PIN, INPUT_PULLUP);
Serial.println("Joystick Demo\n");
}
void loop() {
int joyXvalue = analogRead(JOY_X_PIN);
// if the joystick has changed...
if (joyXvalue > (oldXval + 5) || joyXvalue < (oldXval - 5)) {
oldXval = joyXvalue;
turnLedsOff();
switchState = false;
if (joyXvalue > 923) {
Serial.println("Left");
digitalWrite(YEL_LED_PIN, HIGH);
}
if (joyXvalue < 100) {
Serial.println("Right");
digitalWrite(BLU_LED_PIN, HIGH);
}
}
int joyYvalue = analogRead(JOY_Y_PIN);
if (joyYvalue > (oldYval + 5) || joyYvalue < (oldYval - 5)) {
oldYval = joyYvalue;
turnLedsOff();
switchState = false;
if (joyYvalue > 923) {
Serial.println("Up");
digitalWrite(GRN_LED_PIN, HIGH);
}
if (joyYvalue < 100) {
Serial.println("Down");
digitalWrite(RED_LED_PIN, HIGH);
}
}
int switchValue = digitalRead(SWITCH_PIN);
if (switchValue != oldSwVal) {
oldSwVal = switchValue;
if (switchValue == LOW) {
Serial.println("Button pressed");
switchState = !switchState;
digitalWrite(GRN_LED_PIN, HIGH);
digitalWrite(YEL_LED_PIN, HIGH);
digitalWrite(RED_LED_PIN, HIGH);
digitalWrite(BLU_LED_PIN, HIGH);
}
if (!switchState) turnLedsOff();
delay(20);
}
}