// Control Debug Program boolean isController = false; // Is Controller Initialized? // Initialize Controller void initController(){ tft.setTextColor(ILI9341_WHITE, ILI9341_BLACK); // Black out Screen tft.setTextSize(2); // Set Text Options and Show Title tft.setCursor(10, 10); tft.println("HackBerry Game Controller"); tft.setTextSize(1); tft.setCursor(100, 210); tft.println("To Exit: Press A & D"); isController = true; } // End Controller void endController(){ tft.fillScreen(ILI9341_BLACK); // Clear Screen state = 1; // Go Back to Main Menu isController = false; clearControls(); // Clears saved controls } // Run Controller void runController(){ if(!isController){initController();} // Initialize Controller getControls(0); // Fetch Current Status of Controls (with 0 ms delay) playSound(); // Play Sound // Print Current State of Joystick if(buttonStatus[0] != lastButtons[0] || buttonStatus[1] != lastButtons[1]){ // If Joystick Position has Changed int joyX = 100; // Default Location of X int joyY = 120; // Default Location of Y if (buttonStatus[0] == -1){joyX = 80; sound(17, 100);} // If X is Left if (buttonStatus[0] == 1){joyX = 120; sound(16, 100);} // If X is Right if (buttonStatus[1] == -1){joyY = 140; sound(14, 100);} // If Y is Down if (buttonStatus[1] == 1){joyY = 100; sound(19, 100);} // If Y is Up // Draw Joysick Visualization tft.fillCircle(100, 120, 80, ILI9341_BLACK); tft.drawCircle(100, 120, 75, ILI9341_WHITE); tft.fillCircle(joyX, joyY, 50, ILI9341_RED); } // Print Current Status of Controls tft.setCursor(50, 225); tft.print("X: "); tft.print(buttonStatus[0]); tft.print(" "); tft.print("Y: "); tft.print(buttonStatus[1]); tft.print(" "); tft.print("A: "); tft.print(buttonStatus[2]); tft.print(" "); tft.print("B: "); tft.print(buttonStatus[3]); tft.print(" "); tft.print("C: "); tft.print(buttonStatus[4]); tft.print(" "); tft.print("D: "); tft.print(buttonStatus[5]); tft.print(" "); // Draw Buttons int a = buttonStatus[2]; // Get A Button Status if (a != lastButtons[2]){ // If A Button has Changed if(a == 1){tft.fillCircle(250, 80, 20, ILI9341_GREEN); sound(12, 100);} else{tft.fillCircle(250, 80, 20, ILI9341_BLACK); tft.drawCircle(250, 80, 20, ILI9341_GREEN);} } int b = buttonStatus[3]; // Get B Button Status if (b != lastButtons[3]){ // If B Button has Changed if(b == 1){tft.fillCircle(210, 120, 20, ILI9341_BLUE); sound(11, 100);} else{tft.fillCircle(210, 120, 20, ILI9341_BLACK); tft.drawCircle(210, 120, 20, ILI9341_BLUE);} } int c = buttonStatus[4]; // Get C Button Status if (c != lastButtons[4]){ // If C Button has Changed if(c == 1){tft.fillCircle(290, 120, 20, ILI9341_YELLOW); sound(9, 100);} else{tft.fillCircle(290, 120, 20, ILI9341_BLACK); tft.drawCircle(290, 120, 20, ILI9341_YELLOW);} } int d = buttonStatus[5]; // Get D Button Status if (d != lastButtons[5]){ // If D Button has Changed if(d == 1){tft.fillCircle(250, 160, 20, ILI9341_PURPLE); sound(7, 100);} else{tft.fillCircle(250, 160, 20, ILI9341_BLACK); tft.drawCircle(250, 160, 20, ILI9341_PURPLE);} } saveControls(); // Save Last State of Controls if(a == 1 && d == 1){endController();} // Exit Program if A & D are Pressed }