Example Code for Joystick EventDriven
Last revision 2025/12/10
This article presents example code for managing joystick inputs using an event-driven approach with Arduino, covering detection of directional and button presses.
Sample Code
/*
* function: test dfr0008
* by: lisper ([email protected])
* created: 2013-11-04
*
*/
#include <Arduino.h>
#define up_button 8
#define down_button A1
#define left_button 9
#define right_button 12
#define stick_button A0
#define level_stick A3
#define vertical_stick A2
int vertical_value=0; //current value
int level_value=0; //current value
int vertical_valuep=0; //previous value
int level_valuep=0; //previous value
uint16_t key_delay_time = 20; // for ispressed ()
//
void setup () {
pinMode (stick_button, INPUT);
pinMode (level_stick, INPUT);
pinMode (vertical_stick, INPUT);
pinMode (up_button, INPUT);
pinMode (down_button, INPUT);
pinMode (left_button, INPUT);
pinMode (right_button, INPUT);
Serial.begin (9600);
}
//
void loop () {
vertical_value = analogRead (vertical_stick);
level_value = analogRead (level_stick);
if (vertical_value != vertical_valuep) {
Serial.print ("vertical=");
Serial.println (vertical_value);
}
if (level_value != level_valuep) {
Serial.print ("level=");
Serial.println (level_value);
}
vertical_valuep = vertical_value;
level_valuep = level_value;
if (ispressed (up_button))
Serial.println ("up pressed");
if (ispressed (down_button))
Serial.println ("down pressed");
if (ispressed (left_button))
Serial.println ("left pressed");
if (ispressed (right_button))
Serial.println ("right pressed");
if (ispressed (stick_button))
Serial.println ("stick pressed");
delay (10);
}
//check button
boolean ispressed (uint8_t key) {
if (digitalRead (key) == 0) {
delay (key_delay_time);
if (digitalRead (key) == 0)
return true;
}
return false;
}
Was this article helpful?
