Skip to content

Instantly share code, notes, and snippets.

@ndusart
Created June 10, 2015 22:07
Show Gist options
  • Select an option

  • Save ndusart/e638e259321c00e99186 to your computer and use it in GitHub Desktop.

Select an option

Save ndusart/e638e259321c00e99186 to your computer and use it in GitHub Desktop.
int latchPin = 4;
int dataPin = 7;
int clockPin= 5;
#define BT_A 0x01
#define BT_B 0x02
#define SELECT 0x04
#define START 0x08
#define ARROW_UP 0x10
#define ARROW_DOWN 0x20
#define ARROW_LEFT 0x40
#define ARROW_RIGHT 0x80
uint8_t BUTTONS = 0;
void setup() {
pinMode(latchPin, OUTPUT);
pinMode(dataPin, INPUT);
pinMode(clockPin, OUTPUT);
digitalWrite(latchPin, LOW);
digitalWrite(clockPin, LOW);
delay(1);
}
void loop() {
int i;
delayMicroseconds(12);
digitalWrite(latchPin, HIGH);
digitalWrite(clockPin, HIGH);
delayMicroseconds(12);
digitalWrite(latchPin, LOW);
delayMicroseconds(12);
digitalWrite(clockPin, LOW);
delayMicroseconds(20);
BUTTONS = 0;
for(i=0; i<8; ++i)
{
if( digitalRead(dataPin) == 0 )
BUTTONS |= (1 << i);
digitalWrite(clockPin, HIGH);
delayMicroseconds(20);
digitalWrite(clockPin, LOW);
delayMicroseconds(20);
}
if( BUTTONS & BT_A )
Joystick.button(1, 1);
else
Joystick.button(1, 0);
if( BUTTONS & BT_B )
Joystick.button(2, 1);
else
Joystick.button(2, 0);
if( BUTTONS & START )
Joystick.button(8, 1);
else
Joystick.button(8, 0);
if( BUTTONS & SELECT )
Joystick.button(7, 1);
else
Joystick.button(7, 0);
if( (BUTTONS & ARROW_UP) && (BUTTONS & ARROW_RIGHT) )
Joystick.hat(45);
else if( (BUTTONS & ARROW_UP) && (BUTTONS & ARROW_LEFT) )
Joystick.hat(315);
else if( (BUTTONS & ARROW_DOWN) && (BUTTONS & ARROW_RIGHT) )
Joystick.hat(135);
else if( (BUTTONS & ARROW_DOWN) && (BUTTONS & ARROW_LEFT) )
Joystick.hat(225);
else if( BUTTONS & ARROW_UP )
Joystick.hat(0);
else if( BUTTONS & ARROW_RIGHT )
Joystick.hat(90);
else if( BUTTONS & ARROW_LEFT )
Joystick.hat(270);
else if( BUTTONS & ARROW_DOWN )
Joystick.hat(180);
else
Joystick.hat(-1);
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment