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: 11205

Comment

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

Join GarageLab (arduino, electronics, robotics, hacking)

Latest Activity

Frank Turner is now a member of GarageLab (arduino, electronics, robotics, hacking)
20 hours ago
Marcelo Rodrigues and swapnil are now friends
Tuesday
Marcelo Rodrigues replied to swapnil's discussion Tiny 85 based Thermometer
"Dear Swapnil, Since you don't have any experience with programming you should consider start…"
Monday
swapnil posted a discussion

Tiny 85 based Thermometer

Hi, can any one guide me how to make the tiny 85 based Thermometer which will glow the LED…See More
Sunday
Spyros Svoronos is now a member of GarageLab (arduino, electronics, robotics, hacking)
Sunday
K Biju is now a member of GarageLab (arduino, electronics, robotics, hacking)
Nov 29
Profile Iconswapnil and Yasser joined GarageLab (arduino, electronics, robotics, hacking)
Nov 28
udit is now a member of GarageLab (arduino, electronics, robotics, hacking)
Nov 25
Aqeel munir is now a member of GarageLab (arduino, electronics, robotics, hacking)
Nov 23
Profile IconSubbu and Graymon Cadiente joined GarageLab (arduino, electronics, robotics, hacking)
Nov 21
Tim Walller is now a member of GarageLab (arduino, electronics, robotics, hacking)
Nov 18
Dmitry Slepov posted a blog post

Open Platform Communications Server from Tibbo

OPC stands for «Open Platform Communications» that is a set of specifications and standards for…See More
Nov 17
Hrithik Bansal is now a member of GarageLab (arduino, electronics, robotics, hacking)
Nov 17
Martin Tavarez is now a member of GarageLab (arduino, electronics, robotics, hacking)
Nov 14
Brian Sivils is now a member of GarageLab (arduino, electronics, robotics, hacking)
Nov 7
Keren Fi is now a member of GarageLab (arduino, electronics, robotics, hacking)
Nov 3
Profile IconHENRY NUNES and evilhacker joined GarageLab (arduino, electronics, robotics, hacking)
Oct 31
Profile IconJames Pearce and caca joined GarageLab (arduino, electronics, robotics, hacking)
Oct 27
Profile IconWilliam Johnson and Todd Enger joined GarageLab (arduino, electronics, robotics, hacking)
Oct 24
Carlos Kwiek posted a blog post

ESP8266_MQTT_LAMP_ON_OFF

Turning on and off a lamp on the internet and smartphone using ESP8266 with MQTT languageThank you…See More
Oct 24

© 2016   Created by Marcelo Rodrigues.   Powered by

Badges  |  Report an Issue  |  Terms of Service