// LED Pins
int forward_LED = 9;
int reverse_LED = 10;
int left_LED = 12;
int right_LED = 8;
int mower_LED = 7;
// Joystick Pins
int xPin = A1;
int yPin = A0;
int sPin = 11;
// Read Values
int xVal;
int yVal;
int sVal;
// Joystick Angle
float posX;
float posY;
// Mower state
bool mower_state = LOW;
void setup() {
Serial.begin(9600);
pinMode(xPin, INPUT);
pinMode(yPin, INPUT);
pinMode(sPin, INPUT_PULLUP);
pinMode(forward_LED, OUTPUT);
pinMode(reverse_LED, OUTPUT);
pinMode(left_LED, OUTPUT);
pinMode(right_LED, OUTPUT);
pinMode(mower_LED, OUTPUT);
}
void loop() {
// Read Joystick
sVal = digitalRead(sPin);
xVal = analogRead(xPin);
yVal = analogRead(yPin);
posX = map(xVal, 0, 1023, -1, 1);
posY = map(yVal, 0, 1023, -1, 1);
if(posX||posY == 0)
{
digitalWrite(forward_LED, LOW);
digitalWrite(reverse_LED, LOW);
digitalWrite(left_LED, LOW);
digitalWrite(right_LED, LOW);
}
if(posX == 1)
{
digitalWrite(forward_LED, LOW);
digitalWrite(reverse_LED, LOW);
digitalWrite(left_LED, HIGH);
digitalWrite(right_LED, LOW);
}
if(posX == -1)
{
digitalWrite(forward_LED, LOW);
digitalWrite(reverse_LED, LOW);
digitalWrite(left_LED, LOW);
digitalWrite(right_LED, HIGH);
}
if(posY == 1)
{
digitalWrite(forward_LED, HIGH);
digitalWrite(reverse_LED, LOW);
digitalWrite(left_LED, LOW);
digitalWrite(right_LED, LOW);
}
if(posY == -1)
{
digitalWrite(forward_LED, LOW);
digitalWrite(reverse_LED, HIGH);
digitalWrite(left_LED, LOW);
digitalWrite(right_LED, LOW);
}
if(sVal == 0)
{
mower_state = !mower_state;
delay(500);
}
digitalWrite(mower_LED, mower_state);
Serial.println(mower_LED);
Serial.println(mower_state);
}