Advertisement
Guest User

Untitled

a guest
Dec 4th, 2016
89
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.63 KB | None | 0 0
  1. #define MASK_UP 0x80
  2. #define MASK_DOWN 0x40
  3. #define MASK_LEFT 0x20
  4. #define MASK_RIGHT 0x10
  5. #define MASK_UPC 0x08
  6. #define MASK_DOWNC 0x04
  7. #define MASK_LEFTC 0x02
  8. #define MASK_RIGHTC 0x01
  9.  
  10. #define MASK_A 0x20
  11. #define MASK_B 0x10
  12. #define MASK_GRAB 0x08
  13. #define MASK_SHIELD 0x04
  14. #define MASK_TILT 0x02
  15. #define MASK_START 0x01
  16.  
  17. byte incomingByte = 0;
  18. bool left = false; // is pressing LEFT
  19. bool right = false; // is pressing RIGHT
  20.  
  21. // the setup function runs once when you press reset or power the board
  22. void setup() {
  23. pinMode(2, OUTPUT); // UP
  24. pinMode(3, OUTPUT); // DOWN
  25. pinMode(4, OUTPUT); // LEFT
  26. pinMode(5, OUTPUT); // RIGHT
  27. pinMode(8, OUTPUT); // C UP
  28. pinMode(9, OUTPUT); // C DOWN
  29. pinMode(10, OUTPUT); // C LEFT
  30. pinMode(11, OUTPUT); // C RIGHT
  31. pinMode(A5, OUTPUT); // A
  32. pinMode(A4, OUTPUT); // B
  33. pinMode(A3, OUTPUT); // GRAB
  34. pinMode(A2, OUTPUT); // SHIELD
  35. pinMode(A1, OUTPUT); // TILT
  36. pinMode(A0, OUTPUT); // START
  37.  
  38. pinMode(13, OUTPUT); // onboard LED pin, just for testing
  39.  
  40. // initialize serial communication at 9600 bits per second:
  41. Serial.begin(9600);
  42. }
  43.  
  44. // the loop function is called repeatedly
  45. void loop() {
  46.  
  47. if (Serial.available() > 1) { // wait for at least 2 bytes
  48. // read the first byte:
  49. incomingByte = Serial.read();
  50.  
  51. if ((incomingByte & MASK_DOWN) > 0) { // down takes priority (should make wavedashing easier)
  52. digitalWrite(2, LOW);
  53. digitalWrite(3, HIGH);
  54. } else {
  55. digitalWrite(3, LOW);
  56. if ((incomingByte & MASK_UP) > 0) digitalWrite(2, HIGH); else digitalWrite(2, LOW);
  57. }
  58.  
  59. if ((incomingByte & MASK_RIGHT) > 0) { // if right is pressed
  60. if (left) {
  61. digitalWrite(4, LOW);
  62. digitalWrite(5, HIGH);
  63. left = false;
  64. right = true;
  65. } else {
  66. if ((incomingByte & MASK_LEFT) > 0) {
  67. if (right) {
  68. digitalWrite(5, LOW);
  69. digitalWrite(4, HIGH);
  70. right = false;
  71. left = true;
  72. } else {
  73. digitalWrite(4, LOW);
  74. digitalWrite(5, LOW);
  75. }
  76. } else {
  77. digitalWrite(4, LOW);
  78. digitalWrite(5, HIGH);
  79. right = true;
  80. }
  81. }
  82. } else { // if right is not pressed
  83. digitalWrite(5, LOW);
  84. if ((incomingByte & MASK_LEFT) > 0) {
  85. digitalWrite(4, HIGH);
  86. left = true;
  87. } else {
  88. digitalWrite(4, LOW);
  89. left = false;
  90. }
  91. right = false;
  92. }
  93.  
  94. if ((incomingByte & MASK_UPC) > 0) { // up smash takes priority (shouldn't ever matter)
  95. digitalWrite(9, LOW);
  96. digitalWrite(8, HIGH);
  97. } else {
  98. digitalWrite(8, LOW);
  99. if ((incomingByte & MASK_DOWNC) > 0) digitalWrite(9, HIGH); else digitalWrite(9, LOW);
  100. }
  101.  
  102. if ((incomingByte & MASK_LEFTC) > 0) { // left smash takes priority (the key is bigger)
  103. digitalWrite(11, LOW);
  104. digitalWrite(10, HIGH);
  105. } else {
  106. digitalWrite(10, LOW);
  107. if ((incomingByte & MASK_RIGHTC) > 0) digitalWrite(11, HIGH); else digitalWrite(11, LOW);
  108. }
  109.  
  110. // read the second byte:
  111. incomingByte = Serial.read();
  112.  
  113. if ((incomingByte & MASK_A ) > 0) digitalWrite(A5, LOW); else digitalWrite(A5, HIGH);
  114. if ((incomingByte & MASK_B ) > 0) digitalWrite(A4, LOW); else digitalWrite(A4, HIGH);
  115. if ((incomingByte & MASK_GRAB ) > 0) digitalWrite(A3, LOW); else digitalWrite(A3, HIGH);
  116. if ((incomingByte & MASK_SHIELD ) > 0) digitalWrite(A2, HIGH); else digitalWrite(A2, LOW);
  117. if ((incomingByte & MASK_TILT ) > 0) digitalWrite(A1, LOW); else digitalWrite(A1, HIGH);
  118. if ((incomingByte & MASK_START ) > 0) digitalWrite(A0, LOW); else digitalWrite(A0, HIGH);
  119.  
  120. }
  121.  
  122. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement