I'm using a arduino Mega2560 an lcd and an analog joystick. my aim is when i move the joystick in a direction the lcd will say which direction its going (forwards, backwards, left and right) and this is something I've done already but i also want to switch "modes" when i press the joystick in and go forwards it says up and when i go backwards it says down but as I stand when i go forwards or backwards the lcd just switches between forwards/up and backwards/down if anyone could help correct my code im sure its something really stupid just need some guidance. thank you
#include <LiquidCrystal.h>
const int SW_pin = 13; // digital pin connected to switch output
const int X_pin = 0; // analog pin connected to X output
const int Y_pin = 1; // analog pin connected to Y output
boolean updown=false;
int switchState = 0;
LiquidCrystal lcd(7, 8, 9, 10, 11, 12);
int xp=0;
void setup() {
pinMode(SW_pin, INPUT);
digitalWrite(SW_pin, HIGH);
Serial.begin(115200);
lcd.begin(16, 2);
lcd.clear();
lcd.setCursor(0,0);
lcd.print("Manual Mode");
}
void loop() {
Serial.print("Switch: ");
Serial.print(digitalRead(SW_pin));
Serial.print("\n");
Serial.print("X-axis: ");
Serial.print(analogRead(X_pin));
Serial.print("\n");
Serial.print("Y-axis: ");
Serial.println(analogRead(Y_pin));
Serial.print("\n\n");
delay(500);
switchState = digitalRead(SW_pin);
if (switchState == HIGH) {
if(updown==true){
updown=false;
} else{
updown=true;
}
}
if (updown == true){
if (analogRead(X_pin)>=500 & analogRead(X_pin)<=600 & analogRead(Y_pin)>=500 & analogRead(Y_pin)<=600){
lcd.clear();
lcd.setCursor(0,0);
lcd.print("Manual Mode 0");
delay(10);
lcd.setCursor(0,1);
lcd.print("Move Joystick");
delay(10);
}else if (analogRead(X_pin)<=500){
lcd.clear();
lcd.setCursor(0,0);
lcd.print("Manual Mode 0");
delay(10);
lcd.setCursor(0,1);
lcd.print("Left");
delay(10);
}else if (analogRead(X_pin)>=600){
lcd.clear();
lcd.setCursor(0,0);
lcd.print("Manual Mode 0");
delay(10);
lcd.setCursor(0,1);
lcd.print("Right");
delay(10);
}else if (analogRead(Y_pin)<=500){
lcd.clear();
lcd.setCursor(0,0);
lcd.print("Manual Mode 0");
delay(10);
lcd.setCursor(0,1);
lcd.print("Forward");
delay(10);
}else if (analogRead(Y_pin)>=600){
lcd.clear();
lcd.setCursor(0,0);
lcd.print("Manual Mode 0");
delay(10);
lcd.setCursor(0,1);
lcd.print("Backwards");
delay(10);
}
}else if (updown == false){
if (analogRead(X_pin)>=500 & analogRead(X_pin)<=600 & analogRead(Y_pin)>=500 & analogRead(Y_pin)<=600){
lcd.clear();
lcd.setCursor(0,0);
lcd.print("Manual Mode 1");
delay(10);
lcd.setCursor(0,1);
lcd.print("Move Joystick");
delay(10);
}else if(analogRead(Y_pin)<=500){
lcd.clear();
lcd.setCursor(0,0);
lcd.print("Manual Mode 1");
delay(10);
lcd.setCursor(0,1);
lcd.print("Up");
delay(10);
}else if (analogRead(Y_pin)>=600){
lcd.clear();
lcd.setCursor(0,0);
lcd.print("Manual Mode 1");
delay(10);
lcd.setCursor(0,1);
lcd.print("Down");
delay(10);
}
}