Yes for the 555, but you'll need to use different value Resistors and Capacitors so it's timing works how you need. You'll also need to use a modified Astable setup so it has a longer off time than an on time, as that's just how the 555 chip work.
No for how to wire it up to the controller. You can't wire the 555 straight up to the controller, and definitely not to the white wire there, which is a ground line, that's not going to press any buttons at all.
I'd ditch the 555 idea and code up a 12F683 PIC and use it instead. You can adjust the timing to pretty much whatever and have it be far more precise. An alternate Tact button or even a switch would be used to run the code or not, so switch on or button pressed it would press the controller button over and over with a 1 second delay as it's coded below. If the switch is on, press button, wait 1 second, press button, wait 1 second, repeats forever. Switch off nothing happens.
Code:
/*******************************************************************************
Code to do a repeating button press with a 12F683 and a 4066 switch IC
Alternate switch or button is used to make the circuit run or not
*******************************************************************************/
// Define the names for the IO pins used
#define RUN_MACRO_BUTTON GP4_bit
#define CONTROLLER_BUTTON GP5_bit
void INIT(){
OSCCON = 0b01110111; // Set 8mhz Frequency
CMCON0 = 7; // Comparator off (not using it and can cause issues if left on)
OPTION_REG = 0b00000000; // Setup Option Reg for WPU
WPU = 0b00010000; // Enable Weak Pull Up on GPIO4
ANSEL = 0; // Analog Off (using pins as Digital, on/off)
TRISIO0_bit = 0; // Set TRIS GPIO0 as Output
TRISIO1_bit = 0; // Set TRIS GPIO1 as Output
TRISIO2_bit = 0; // Set TRIS GPIO2 as Output
TRISIO3_bit = 1; // GPIO3 is Always Input no matter what it's set at (MCLR)
TRISIO4_bit = 1; // Set TRIS GPIO4 as Input
TRISIO5_bit = 0; // Set TRIS GPIO5 as Output
CONTROLLER_BUTTON = 0; // Make sure the controller button is not pressed
}
void main(){
INIT();
while (1){ // Run forever
while(RUN_MACRO_BUTTON == 0){ // While the run button is pressed or switch is turned on
CONTROLLER_BUTTON = 1; // Turn on 4066 for controller button (press)
delay_ms(50); // Time button is pressed
CONTROLLER_BUTTON = 0; // Turn off 4066 for controller button (release)
delay_ms(1000); // 1 Second delay before doing it all over again
}
}
}
____________________________________________________________________________________________________________________________________
____________________________________________________________________________________________________________________________________
If the controller is a Common Ground type (all of the buttons have one side connected to Ground) you could ditch the 4066 and only need the 12F683 for doing the button press. The code would need changed in that case as well.
Code:
/*******************************************************************************
Code to do a repeating button press with a 12F683 on a CG type controller
Alternate switch or button is used to make the circuit run or not
*******************************************************************************/
// Define the names for the IO pins used
#define RUN_MACRO_BUTTON GP4_bit
#define CONTROLLER_BUTTON GP5_bit
void INIT(){
OSCCON = 0b01110111; // Set 8mhz Frequency
CMCON0 = 7; // Comparator off (not using it and can cause issues if left on)
OPTION_REG = 0b00000000; // Setup Option Reg for WPU
WPU = 0b00010000; // Enable Weak Pull Up on GPIO4
ANSEL = 0; // Analog Off (using pins as Digital, on/off)
TRISIO0_bit = 0; // Set TRIS GPIO0 as Output
TRISIO1_bit = 0; // Set TRIS GPIO1 as Output
TRISIO2_bit = 0; // Set TRIS GPIO2 as Output
TRISIO3_bit = 1; // GPIO3 is Always Input no matter what it's set at (MCLR)
TRISIO4_bit = 1; // Set TRIS GPIO4 as Input
TRISIO5_bit = 1; // Set TRIS GPIO5 as Input
}
void main(){
INIT();
while (1){ // Run forever
while(RUN_MACRO_BUTTON == 0){ // While the run button is pressed or switch is turned on
TRISIO5_bit = 0; // Set pin to Output for button press
CONTROLLER_BUTTON = 0; // Turn on the controller button (press)
delay_ms(50); // Time button is pressed
TRISIO5_bit = 1; // Turn off the controller button (release)
delay_ms(1000); // 1 Second delay before doing it all over again
}
}
}