Hello
i was working on gamepad project but Instead of using pin as input button, i use TTP229 I2C for input, its more then 2 week I'm working on it but every time i fail in programing because I'm rookie in Arduino and programing
This is code i used
#include <Gamepad.h>
#define SCL 3
#define SDO 4
byte Key;
byte Read_TTP229_Keypad(void)
{
byte Num;
byte Key_State = 0;
for(Num = 1; Num <= 16; Num++)
{
digitalWrite(SCL, LOW);
if (!digitalRead(SDO))
Key_State = Num;
digitalWrite(SCL, HIGH);
}
return Key_State;
}
int rightXcenter = 500;
int rightYcenter = 500;
int leftXcenter = 500;
int leftYcenter = 500;
double multiplierRX = 0.254; //127 / 500
double multiplierRY = 0.254;
double multiplierLX = 0.254;
double multiplierLY = 0.254;
Gamepad gp;
void setup() {
pinMode(7, INPUT);
pinMode(6, INPUT);
pinMode(5, INPUT);
pinMode(4, INPUT);
Serial.begin(9600);
pinMode(SCL, OUTPUT);
pinMode(SDO, INPUT);
calibrate();
}
void loop() {
int lx, ly, rx, ry;
lx = analogRead(7);
ly = analogRead(6);
rx = analogRead(5);
ry = analogRead(4);
//we need to convert a 0-1000 to -127 - 127
lx = floor((lx - leftXcenter) * multiplierLX);
ly = floor((ly - leftYcenter) * multiplierLY);
rx = floor((rx - rightXcenter) * multiplierRX);
ry = floor((ry - rightYcenter) * multiplierRY);
if(lx > 127) lx = 127;
if(ly > 127) ly = 127;
if(rx > 127) rx = 127;
if(ry > 127) ry = 127;
gp.setLeftXaxis(lx);
gp.setRightXaxis(rx);
gp.setLeftYaxis(ly);
gp.setRightYaxis(ry);
int UPLEFT, UPRIGHT, UP, DOWN, LEFT, RIGHT, RIGHTBUTTON, LEFTBUTTON, X, Y, A, B;
UPLEFT = digitalRead(14);
UPRIGHT = digitalRead(15);
RIGHTBUTTON = digitalRead(0);
LEFTBUTTON = digitalRead(1);
UP = digitalRead(4);
DOWN = digitalRead(5);
LEFT = digitalRead(6);
RIGHT = digitalRead(7);
X = digitalRead(8);
Y = digitalRead(9);
A = digitalRead(10);
B = digitalRead(16);
if(UPLEFT == LOW) //
gp.setButtonState(0, true);
else
gp.setButtonState(0, false);
if(UPRIGHT == LOW)
gp.setButtonState(1, true);
else
gp.setButtonState(1, false);
if(UP == LOW)
gp.setButtonState(2, true);
else
gp.setButtonState(2, false);
if(DOWN == LOW)
gp.setButtonState(3, true);
else
gp.setButtonState(3, false);
if(LEFT == LOW)
gp.setButtonState(4, true);
else
gp.setButtonState(4, false);
if(RIGHT == LOW)
gp.setButtonState(5, true);
else
gp.setButtonState(5, false);
if(RIGHTBUTTON == LOW)
gp.setButtonState(6, true);
else
gp.setButtonState(6, false);
if(LEFTBUTTON == LOW)
gp.setButtonState(7, true);
else
gp.setButtonState(7, false);
if(X == LOW)
gp.setButtonState(8, true);
else
gp.setButtonState(8, false);
if(Y == LOW)
gp.setButtonState(9, true);
else
gp.setButtonState(9, false);
if(A == LOW)
gp.setButtonState(10, true);
else
gp.setButtonState(10, false);
if(B == LOW)
gp.setButtonState(11, true);
else
gp.setButtonState(11, false);
delay(20);
}
void calibrate()
{
int lx, ly, rx, ry;
int i = 0;
while(i < 13)
{
lx = analogRead(7);
ly = analogRead(6);
rx = analogRead(5);
ry = analogRead(4);
bool validLX = lx > (leftXcenter - 100) && lx < (leftXcenter + 100);
bool validLY = ly > (leftYcenter - 100) && ly < (leftYcenter + 100);
bool validRX = rx > (rightXcenter - 100) && rx < (rightXcenter + 100);
bool validRY = ry > (rightYcenter - 100) && ry < (rightYcenter + 100);
if(validLX && validLY && validRX && validRY)
{
i++;
//nothing to do here!
}
else i = 0;
delay(20);
}
leftXcenter = lx;
leftYcenter = ly;
rightXcenter = rx;
rightYcenter = ry;
multiplierLX = (double)127 / (double)lx;
multiplierLY = (double)127 / (double)ly;
multiplierRX = (double)127 / (double)rx;
multiplierRY = (double)127 / (double)ry;
}
My problem is in this line
int UPLEFT, UPRIGHT, UP, DOWN, LEFT, RIGHT, RIGHTBUTTON, LEFTBUTTON, X, Y, A, B;
UPLEFT = digitalRead(14);
UPRIGHT = digitalRead(15);
RIGHTBUTTON = digitalRead(0);
LEFTBUTTON = digitalRead(1);
UP = digitalRead(4);
DOWN = digitalRead(5);
LEFT = digitalRead(6);
RIGHT = digitalRead(7);
X = digitalRead(8);
Y = digitalRead(9);
A = digitalRead(10);
B = digitalRead(16);
this lines defined for particular function equal input pin but i want Instead UPRIGHT = digitalRead(15), for example key 2 = UPRIGHT
I do not know what the correct code for this part, i really confused
Please help or guide me to solve my problem
Thanks