TinkerKit Joystick
Overview
The Joystick module is similar to analog j oysticks found in gamepads. It is made made by mounting two
potentiometers at a 90 degrees angle. The potentiometers are connected to a short stick centered by springs.
Output: This module will output roughly 2.5 volts from both outputs when in its resting position. Moving the stick will
cause the outputs to change from 0v to 5v depending on its direction. If you connect this module to an Arduino
through the Tinkerkit Shield, you can expect to read a value of roughly 512 in its resting position (expect small
variations due to tiny imprecisions of the springs and mechanism) When you move the joystick you should see the
values change from 0 to 1023 depending on its position.
Module Description: This module features two 4k7 Ohm linear potentiometers, two standard TinkerKit 3pin
connector, two signal amplifiers, a green LED that signals that the module is correctly powered and two yellow LED
whose brightness depends on the values output by the module.
This module is a SENSOR. Its connectors are OUTPUTs which must be be connected to two of the INPUT
connectors on the TinkerKit Shield.
Code Example
/*
Analog input, analog output, serial output
Reads two analog input pins; a T000030 Jopystick Module Analog Sensor
connected to I0 and I1, maps the result to a range from 0 to 255
and uses the result to set the pulsewidth modulation (PWM) two T010111 LED
Module connected on O0 and O1.
Also prints the results to the serial monitor.
created 7 dec 2010
by Davide Gomba
This example code is in the public domain.
*/
#define O0 11
#define O1 10
#define O2 9
#define O3 6
#define O4 5
#define O5 3
#define I0 A0
#define I1 A1
#define I2 A2
#define I3 A3
#define I4 A4
#define I5 A5
// These constants won't change. They're used to give names
// to the pins used:
const int analogInPin1 = I0; // Analog input pin that the Joystick's first
pin is attached to
const int analogInPin2 = I1; // Analog input pin that the Joystick's
second pin is attached to
const int analogOutPin1= O0; // Analog output pin that the LED is attached
to
const int analogOutPin2= O1; // Analog output pin that the LED is attached
to
int sensorValue1 = 0; // value read from the Joystick's first pin
int sensorValue2 = 0; // value read from the Joystick's second pin
int outputValue1 = 0; // value output to the PWM (analog out)
int outputValue2 = 0; // value output to the PWM (analog out)
void setup() {
// initialize serial communications at 9600 bps:
Serial.begin(9600);
}
void loop() {
// read the both analog in values:
sensorValue1 = analogRead(analogInPin1);
sensorValue2 = analogRead(analogInPin2);
// map it to the range of the analog out:
outputValue1 = map(sensorValue1, 0, 1023, 0, 255);
outputValue2 = map(sensorValue2, 0, 1023, 0, 255);
// change the analog out value:
analogWrite(analogOutPin1, outputValue1);
analogWrite(analogOutPin2, outputValue2);
// print the results to the serial monitor:
Serial.print("Joystick X = " );
Serial.print(sensorValue1);
Serial.print("\t Joystick Y = " );
Serial.print(sensorValue2);
Serial.print("\t output 1 = ");
Serial.print(outputValue1);
Serial.print("\t output 2 = ");
Serial.println(outputValue2);
// wait 10 milliseconds before the next loop
// for the analog-to-digital converter to settle
// after the last reading:
delay(10);
}