-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathJoystick.cpp
93 lines (79 loc) · 2.21 KB
/
Joystick.cpp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
#include "Joystick.h"
Joystick::Joystick(uint8_t pinJoystickX, uint8_t pinJoystickY, uint8_t pinJoystickButton, int noActionLimit, int minRange, int maxRange)
{
m_pinJoystickX = pinJoystickX;
m_pinJoystickY = pinJoystickY;
m_pinJoystickButton = pinJoystickButton;
pinMode(m_pinJoystickButton, INPUT_PULLUP);
pinMode(m_pinJoystickX, INPUT);
pinMode(m_pinJoystickY, INPUT);
m_XValue = 0;
m_YValue = 0;
m_buttonValue = false;
m_minRange = minRange;
m_maxRange = maxRange;
m_noActionLimit = (((maxRange + minRange) / 2 - noActionLimit) < minRange) ? 0 : noActionLimit; // out of range check
m_joystickLowLimit = (maxRange + minRange) / 2 - m_noActionLimit;
m_joystickHighLimit = (maxRange + minRange) / 2 + m_noActionLimit;
m_XAxisInverted = false;
m_YAxisInverted = false;
}
int Joystick::getXValue()
{
m_XValue = map(
analogRead(m_pinJoystickX),
m_minAnalogRange,
m_maxAnalogRange,
m_XAxisInverted ? m_maxRange : m_minRange,
m_XAxisInverted ? m_minRange : m_maxRange
);
return m_XValue;
}
int Joystick::getYValue()
{
m_YValue = map(
analogRead(m_pinJoystickY),
m_minAnalogRange,
m_maxAnalogRange,
m_YAxisInverted ? m_maxRange : m_minRange,
m_YAxisInverted ? m_minRange : m_maxRange
);
return m_YValue;
}
bool Joystick::getbuttonValue()
{
m_buttonValue = digitalRead(m_pinJoystickButton);
return m_buttonValue;
}
int Joystick::getLowLimit()
{
return m_joystickLowLimit;
}
int Joystick::getHighLimit()
{
return m_joystickHighLimit;
}
int Joystick::getNoActionLimit()
{
return m_noActionLimit;
}
void Joystick::invertXAxis()
{
m_XAxisInverted = !m_XAxisInverted;
}
void Joystick::invertYAxis()
{
m_YAxisInverted = !m_YAxisInverted;
}
String Joystick::toString()
{
String str = "";
str = str + "[" + m_minRange + "][" + m_maxRange + "] | X: ("+ m_joystickLowLimit + ") " + m_XValue + " (" + m_joystickHighLimit + ") | ";
str = str + "Y: ("+ m_joystickLowLimit + ") " + m_YValue + " (" + m_joystickHighLimit + ") | ";
str = str + " button: " + m_buttonValue;
return str;
}
void Joystick::toSerial()
{
Serial.println(toString());
}