YOU WILL USE THE KNOWLEDGE YOU HAVE GAINED IN BUILDING CIRCUITS ON THE BREADBOARD AS WELL AS WHAT YOU HAVE LEARNED ABOUT CODING TO COMPLETE THE FINAL PROJECT.
FINAL PROJECT - YOU MUST ASSIGN PINS FOR THE LED'S IN THE CODE (See BELOW, IT IS COMPLETE, MINUS THE ASSIGNMENT OF PINS. YOU DO NOT NEED TO ADD IT TO AN EXAMPLE CODE). SAVE YOUR NEW CODE IN YOUR DOCUMENTS SO THAT YOU DON'T LOSE IT. WIRE A JOYSTICK AND A SERIES OF 5 LED's, SO THAT THE JOYSTICK CONTROLS WHICH LED TURNS ON. THE DIFFERENT COLORED LED IS FOR THE PUSH BUTTON (IT WILL BE ON, PUSHING DOWN ON THE JOYSTICK WILL TURN IT OFF). ONCE YOU GET IT TO WORK WITH THE LED'S IN A STRAIGHT LINE, REARRANGE THE LED'S TO MATCH WITH THE DIRECTION THAT THE JOYSTICK IS PUSHED (up, down, left, right). YOU MUST USE BOTH SCHEMATICS and combine them in order for it to work. USE THE MALE TO FEMALE JUMPER WIRES TO CONNECT THE JOYSTICK (BE AWARE OF HOW THE PINS ARE LABELLED ON THE JOYSTICK) TO THE ARDUINO AND BREADBOARD. YOU MAY SEPARATE IT SO THAT YOU ONLY HAVE THE NUMBER OF WIRES YOU NEED. GOOD LUCK.
Use 5 - 220 Ohm resistors.
// Arduino pin numbers
const int SW_pin = 2; // digital pin connected to switch output
const int Y_pin = 1; // analog pin connected to X output
const int X_pin = 0; // analog pin connected to Y output
const int UP_LED_pin = ;
const int DOWN_LED_pin = ;
const int LEFT_LED_pin = ;
const int RIGHT_LED_pin = ;
const int SW_LED_pin = ;
const int UD = 0;
const int LR = 0;
const int MID = 10;
int YAxisMid = 0;
int XAxisMid = 0;
int YAxis = 0;
int XAxis = 0;
void setup() {
pinMode(SW_pin, INPUT);
digitalWrite(SW_pin, HIGH);
pinMode( SW_LED_pin, OUTPUT);
pinMode( UP_LED_pin, OUTPUT);
pinMode( DOWN_LED_pin , OUTPUT);
pinMode( LEFT_LED_pin , OUTPUT);
pinMode( RIGHT_LED_pin , OUTPUT);
Serial.begin(9600);
YAxisMid = analogRead(Y_pin);
XAxisMid = analogRead(X_pin);
}
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");
*/
YAxis = analogRead(Y_pin);
XAxis = analogRead(X_pin);
digitalWrite( SW_LED_pin , !digitalRead(SW_pin));
chkUpDown(YAxis);
chkLeftRight(XAxis);
// delay(500);
}
void chkUpDown( int Y)
{
if(Y < YAxisMid - MID){
digitalWrite(UP_LED_pin, HIGH);
}else{
digitalWrite(UP_LED_pin, LOW);
}
if(Y > YAxisMid + MID){
digitalWrite(DOWN_LED_pin, HIGH);
}else{
digitalWrite(DOWN_LED_pin, LOW);
}
}
void chkLeftRight( int X)
{
if( X > XAxisMid + MID){
digitalWrite(LEFT_LED_pin, HIGH);
}else{
digitalWrite(LEFT_LED_pin, LOW);
}
if(X < XAxisMid - MID){
digitalWrite(RIGHT_LED_pin, HIGH);
}else{
digitalWrite(RIGHT_LED_pin, LOW);
}
}
const int SW_pin = 2; // digital pin connected to switch output
const int Y_pin = 1; // analog pin connected to X output
const int X_pin = 0; // analog pin connected to Y output
const int UP_LED_pin = ;
const int DOWN_LED_pin = ;
const int LEFT_LED_pin = ;
const int RIGHT_LED_pin = ;
const int SW_LED_pin = ;
const int UD = 0;
const int LR = 0;
const int MID = 10;
int YAxisMid = 0;
int XAxisMid = 0;
int YAxis = 0;
int XAxis = 0;
void setup() {
pinMode(SW_pin, INPUT);
digitalWrite(SW_pin, HIGH);
pinMode( SW_LED_pin, OUTPUT);
pinMode( UP_LED_pin, OUTPUT);
pinMode( DOWN_LED_pin , OUTPUT);
pinMode( LEFT_LED_pin , OUTPUT);
pinMode( RIGHT_LED_pin , OUTPUT);
Serial.begin(9600);
YAxisMid = analogRead(Y_pin);
XAxisMid = analogRead(X_pin);
}
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");
*/
YAxis = analogRead(Y_pin);
XAxis = analogRead(X_pin);
digitalWrite( SW_LED_pin , !digitalRead(SW_pin));
chkUpDown(YAxis);
chkLeftRight(XAxis);
// delay(500);
}
void chkUpDown( int Y)
{
if(Y < YAxisMid - MID){
digitalWrite(UP_LED_pin, HIGH);
}else{
digitalWrite(UP_LED_pin, LOW);
}
if(Y > YAxisMid + MID){
digitalWrite(DOWN_LED_pin, HIGH);
}else{
digitalWrite(DOWN_LED_pin, LOW);
}
}
void chkLeftRight( int X)
{
if( X > XAxisMid + MID){
digitalWrite(LEFT_LED_pin, HIGH);
}else{
digitalWrite(LEFT_LED_pin, LOW);
}
if(X < XAxisMid - MID){
digitalWrite(RIGHT_LED_pin, HIGH);
}else{
digitalWrite(RIGHT_LED_pin, LOW);
}
}