/*WT.2019
/*
* This code contains the follow functions:
* - void setup(): Sets pins 1, 2, 3, 4, 5, 6, 7, 8, 9 to input with pull-up resistors enabled and begins Keyboard functionality
* - void loop(): Main loop - reads pin voltages and sends out corresponding keystrokes via USB
*/
/*
* Pinout:
* - "HIGH" voltage button contacts - pins 1, 2, 3, 4, 5, 6, 7, 8, 9
* - "GND" voltage button contacts - GND pin
*/
#include <Keyboard.h>
int centerStatus=1;
int centerStatusPrev=1;
int downleftStatus=1;
int downleftStatusPrev=1;
int downrightStatus=1;
int downrightStatusPrev=1;
int upStatus=1;
int upStatusPrev=1;
int leftStatus=1;
int leftStatusPrev=1;
int downStatus=1;
int downStatusPrev=1;
int rightStatus=1;
int rightStatusPrev=1;
int startStatus=1;
int startStatusPrev=1;
int selectStatus=1;
int selectStatusPrev=1;
int up2Status=1;
int up2StatusPrev=1;
int left2Status=1;
int left2StatusPrev=1;
int down2Status=1;
int down2StatusPrev=1;
int right2Status=1;
int right2StatusPrev=1;
int start2Status=1;
int start2StatusPrev=1;
int select2Status=1;
int select2StatusPrev=1;
void setup()
{
pinMode(1,INPUT_PULLUP);
pinMode(2,INPUT_PULLUP);
pinMode(3,INPUT_PULLUP);
pinMode(4,INPUT_PULLUP);
pinMode(5,INPUT_PULLUP);
pinMode(6,INPUT_PULLUP);
pinMode(7,INPUT_PULLUP);
pinMode(8,INPUT_PULLUP);
pinMode(9,INPUT_PULLUP);
pinMode(10,INPUT_PULLUP);
pinMode(16,INPUT_PULLUP);
pinMode(14,INPUT_PULLUP);
pinMode(15,INPUT_PULLUP);
pinMode(18,INPUT_PULLUP);
pinMode(19,INPUT_PULLUP);
Keyboard.begin();
}
void loop()
{
centerStatus=digitalRead(1);
downrightStatus=digitalRead(2);
downleftStatus=digitalRead(3);
upStatus=digitalRead(4);
leftStatus=digitalRead(5);
downStatus=digitalRead(6);
rightStatus=digitalRead(7);
startStatus=digitalRead(8);
selectStatus=digitalRead(9);
up2Status=digitalRead(10);
down2Status=digitalRead(16);
left2Status=digitalRead(14);
right2Status=digitalRead(15);
start2Status=digitalRead(18);
select2Status=digitalRead(19);
//Center Panel PRESSED
if (centerStatus!=centerStatusPrev && centerStatus==LOW)
{
Keyboard.press('a');
centerStatusPrev=centerStatus;
}
//Center Panel RELEASED
if (centerStatus!=centerStatusPrev && centerStatus==HIGH)
{
Keyboard.release('a');
centerStatusPrev=centerStatus;
}
//downleft ARROW PRESSED
if (downleftStatus!=downleftStatusPrev && downleftStatus==LOW)
{
Keyboard.press('s');
downleftStatusPrev=downleftStatus;
}
//downleft ARROW RELEASED
if (downleftStatus!=downleftStatusPrev && downleftStatus==HIGH)
{
Keyboard.release('s');
downleftStatusPrev=downleftStatus;
}
//downright ARROW PRESSED
if (downrightStatus!=downrightStatusPrev && downrightStatus==LOW)
{
Keyboard.press('d');
downrightStatusPrev=downrightStatus;
}
//downright ARROW RELEASED
if (downrightStatus!=downrightStatusPrev && downrightStatus==HIGH)
{
Keyboard.release('d');
downrightStatusPrev=downrightStatus;
}
//UP ARROW PRESSED
if (upStatus!=upStatusPrev && upStatus==LOW)
{
Keyboard.press('f');
upStatusPrev=upStatus;
}
//UP ARROW RELEASED
if (upStatus!=upStatusPrev && upStatus==HIGH)
{
Keyboard.release('f');
upStatusPrev=upStatus;
}
//LEFT ARROW PRESSED
if (leftStatus!=leftStatusPrev && leftStatus==LOW)
{
Keyboard.press('g');
leftStatusPrev=leftStatus;
}
//LEFT ARROW RELEASED
if (leftStatus!=leftStatusPrev && leftStatus==HIGH)
{
Keyboard.release('g');
leftStatusPrev=leftStatus;
}
//DOWN ARROW PRESSED
if (downStatus!=downStatusPrev && downStatus==LOW)
{
Keyboard.press('h');
downStatusPrev=downStatus;
}
//DOWN ARROW RELEASED
if (downStatus!=downStatusPrev && downStatus==HIGH)
{
Keyboard.release('h');
downStatusPrev=downStatus;
}
//RIGHT ARROW PRESSED
if (rightStatus!=rightStatusPrev && rightStatus==LOW)
{
Keyboard.press('j');
rightStatusPrev=rightStatus;
}
//RIGHT ARROW RELEASED
if (rightStatus!=rightStatusPrev && rightStatus==HIGH)
{
Keyboard.release('j');
rightStatusPrev=rightStatus;
}
//start ARROW PRESSED
if (startStatus!=startStatusPrev && startStatus==LOW)
{
Keyboard.press('k');
startStatusPrev=startStatus;
}
//start ARROW RELEASED
if (startStatus!=startStatusPrev && startStatus==HIGH)
{
Keyboard.release('k');
startStatusPrev=startStatus;
}
//select ARROW PRESSED
if (selectStatus!=selectStatusPrev && selectStatus==LOW)
{
Keyboard.press('l');
selectStatusPrev=selectStatus;
}
//select ARROW RELEASED
if (selectStatus!=selectStatusPrev && selectStatus==HIGH)
{
Keyboard.release('l');
selectStatusPrev=selectStatus;
}
//up2 ARROW PRESSED
if (up2Status!=up2StatusPrev && up2Status==LOW)
{
Keyboard.press('q');
up2StatusPrev=up2Status;
}
//up2 ARROW RELEASED
if (up2Status!=up2StatusPrev && up2Status==HIGH)
{
Keyboard.release('q');
up2StatusPrev=up2Status;
}
//left2 ARROW PRESSED
if (left2Status!=left2StatusPrev && left2Status==LOW)
{
Keyboard.press('w');
left2StatusPrev=left2Status;
}
//left2 ARROW RELEASED
if (left2Status!=left2StatusPrev && left2Status==HIGH)
{
Keyboard.release('w');
left2StatusPrev=left2Status;
}
//down2 ARROW PRESSED
if (down2Status!=down2StatusPrev && down2Status==LOW)
{
Keyboard.press('e');
down2StatusPrev=down2Status;
}
//down2 ARROW RELEASED
if (down2Status!=down2StatusPrev && down2Status==HIGH)
{
Keyboard.release('e');
down2StatusPrev=down2Status;
}
//right2 ARROW PRESSED
if (right2Status!=right2StatusPrev && right2Status==LOW)
{
Keyboard.press('r');
right2StatusPrev=right2Status;
}
//right2 ARROW RELEASED
if (right2Status!=right2StatusPrev && right2Status==HIGH)
{
Keyboard.release('r');
right2StatusPrev=right2Status;
}
//start2 ARROW PRESSED
if (start2Status!=start2StatusPrev && start2Status==LOW)
{
Keyboard.press('t');
start2StatusPrev=start2Status;
}
//start2 ARROW RELEASED
if (start2Status!=start2StatusPrev && start2Status==HIGH)
{
Keyboard.release('t');
start2StatusPrev=start2Status;
}
//select2 ARROW PRESSED
if (select2Status!=select2StatusPrev && select2Status==LOW)
{
Keyboard.press('y');
select2StatusPrev=select2Status;
}
//select2 ARROW RELEASED
if (select2Status!=select2StatusPrev && select2Status==HIGH)
{
Keyboard.release('y');
select2StatusPrev=select2Status;
}
}