#include <Servo.h>
int x = A0; //vrx analog pin 4
int y = A1; //vry analog pin 5
int button = 2; //sw (switch) digital pin 2
int xValue = 0;
int yValue = 0;
int buttonValue = 0;
Servo servo;
int red= 11;
int green =10;
int blue =9;
int angle=180;
int buzzer = 8;
void setup() {
pinMode (button, INPUT_PULLUP);
Serial.begin(9600);
pinMode(red, OUTPUT);
pinMode(green, OUTPUT);
pinMode(blue, OUTPUT);
servo.attach(12);
}
void loop() {
xValue = analogRead(x);
yValue =analogRead(y);
buttonValue = digitalRead(button);
Serial.print(xValue);
Serial.print('\t');
Serial.print(yValue);
Serial.print('\t');
Serial.println(buttonValue);
///////is only good for wokwi because joystick is upright not sideways
///////for Outschool and real devices - use code from arduino IDE
//right
if ((yValue<300) && (xValue > 300) && (xValue < 800)){
Serial.println("RIGHT - red light");
digitalWrite(red, HIGH);
digitalWrite(blue, LOW);
digitalWrite(green, LOW);
}
//left
else if ((yValue> 800) && (xValue > 300) && (xValue < 800)){
Serial.println("LEFT - green light");
digitalWrite(red, LOW);
digitalWrite(green, HIGH);
digitalWrite(blue, LOW);
}
//up
else if ((xValue> 800) && (yValue > 300) && (yValue < 800)){
Serial.println("UP - magenta light");
digitalWrite(red, HIGH);
digitalWrite(green, LOW );
digitalWrite(blue, HIGH);
}
//down
else if ((xValue<300) && (yValue > 300) && (yValue < 800)){
Serial.println("DOWN - blue light");
digitalWrite(red, LOW);
digitalWrite(green, LOW);
digitalWrite(blue, HIGH);
}
//push button
else if (buttonValue == LOW){ //if button is pushed it is LOW
while (digitalRead(button)==LOW){
Serial.println("no light, buzzer on, servo moves");
digitalWrite(red, LOW);
digitalWrite(green, LOW);
digitalWrite(blue, LOW);
tone (buzzer, 600, 125);
angle=-angle;
servo.write(angle);
delay(1000);
}
}
delay(5);
}