Tutorial: Joystick shield with Arduino

The Joystick Shield is an Arduino add-on that has a 2 axis joystick and 5 buttons (one in the joystick). We can use it to control a lot of things that needs analog and digital commands. Here we have the circuit extracted from the datasheet):

Here we have a sample code, modified from here.

//Create variables for each button on the Joystick Shield to assign the pin numbers

char button0=3, button1=4, button2=5, button3=6;
char sel=2;

void setup(void)
{
pinMode(sel, INPUT); //Set the Joystick 'Select'button as an input
digitalWrite(sel, HIGH); //Enable the pull-up resistor on the select button

pinMode(button0, INPUT); //Set the Joystick button 0 as an input
digitalWrite(button0, HIGH); //Enable the pull-up resistor on button 0

pinMode(button1, INPUT); //Set the Joystick button 1 as an input
digitalWrite(button1, HIGH); //Enable the pull-up resistor on button 1

pinMode(button2, INPUT); //Set the Joystick button 2 as an input
digitalWrite(button2, HIGH); //Enable the pull-up resistor on button 2

pinMode(button3, INPUT); //Set the Joystick button 3 as an input
digitalWrite(button3, HIGH); //Enable the pull-up resistor on button 3

Serial.begin(9600); //Turn on the Serial Port at 9600 bps
}

void loop(void)
{
Serial.print(analogRead(0)); //Read the position of the joysticks X axis and print it on the serial port.
Serial.print(",");
Serial.print(analogRead(1)); //Read the position of the joysticks Y axis and print it on the serial port.
Serial.print(",");
Serial.print(digitalRead(sel)); //Read the value of the select button and print it on the serial port.
Serial.print(",");
Serial.print(digitalRead(button0)); //Read the value of the button 0 and print it on the serial port.
Serial.print(",");
Serial.print(digitalRead(button1)); //Read the value of the button 1 and print it on the serial port.
Serial.print(",");
Serial.print(digitalRead(button2)); //Read the value of the button 2 and print it on the serial port.
Serial.print(",");
Serial.println(digitalRead(button3)); //Read the value of the button 3 and print it on the serial port.

//Wait for 100 ms, then go back to the beginning of 'loop' and repeat.
delay(100);
}

Upload the code to your board and open the serial monitor. You will see the numbers as below:

Move the joystick around and watch the first 2 values changing. The following numbers represents the buttons. Push one of them and the value will become zero.

References:

http://www.sparkfun.com/products/9760

http://dlnmh9ip6v2uc.cloudfront.net/datasheets/Dev/Arduino/Shields/...

http://www.sparkfun.com/Code/Joystick_Shield_Example.zip

Views: 4155

Tags: arduino, joystick, shield, tutorial

Comment

You need to be a member of GarageLab (arduino, electronics, robotics, hacking) to add comments!

Join GarageLab (arduino, electronics, robotics, hacking)

Latest Activity

Profile IconAllan Paculan and Nilesh Parmar joined GarageLab (arduino, electronics, robotics, hacking)
5 hours ago
keith vasilakes replied to Andy S's discussion Arduino MEGA boolean?
"sounds like an uninitialized variable when used in your task, what ever that is"
18 hours ago
GarageLab posted blog posts
yesterday
Fajer commented on GarageLab's blog post Tutorial: Make your line following robot
"Hi there can u stop the motors if there are no more lines??"
Tuesday
Profile IconDivergent Programmer, avengineer01, Fajer and 3 more joined GarageLab (arduino, electronics, robotics, hacking)
Tuesday
GarageLab posted blog posts
Tuesday
David Hay posted a status
"Just finished the first phaseof a homebrewing project. Holds temps & is consistent. Check it out: www.callaid-taigh-gruide.com"
Monday
GarageLab posted blog posts
Oct 24
GarageLab posted a blog post

Scientists Create a Real Hoverboard

Ever since the fictional hoverboards in 1989’s Back to the Future Part II children (and adults)…See More
Oct 22
Colin Goldberg posted a discussion

Can I use my Samsung Tab 4 tablet as a usb host to a beaglebone board black?

Hi,As a newbie to this space, I would like to know what to think about before I try to connect my…See More
Oct 21
Antonio Turner posted a status
Oct 21
GarageLab posted blog posts
Oct 21
Profile IconGeorge Ray Learmond, Steve Barnes and Diego Leite Mendes joined GarageLab (arduino, electronics, robotics, hacking)
Oct 20
GarageLab posted a blog post
Oct 17
Stu porley is now a member of GarageLab (arduino, electronics, robotics, hacking)
Oct 16
GarageLab posted blog posts
Oct 16
Atari Punk Console posted a status
"I backed Garag Lab Kick Starter Project the Garagino, I can't wait till I get my Garagino! https://www.kickstarter.com/projects/931487098/g"
Oct 15
Profile IconDan bgarage and Joe Cannella joined GarageLab (arduino, electronics, robotics, hacking)
Oct 15
GarageLab posted blog posts
Oct 14
Profile IconSim Wilkins G. Entendez, Charles Hamilton and Colin Goldberg joined GarageLab (arduino, electronics, robotics, hacking)
Oct 13

© 2014   Created by Marcelo Rodrigues.

Badges  |  Report an Issue  |  Terms of Service