Created
June 10, 2015 22:07
-
-
Save ndusart/e638e259321c00e99186 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| 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