This pedal is very simple: all the audio effects are OFF and when the TAP footswitch is pressed, the relay that connects the input with the output goes ON, letting the signal to pass through the pedal.
As you can see the core code of the effect is simple:
//Activate Relay "C" only when the TAP footswitched is used
digitalWrite(SWC,!digitalRead(TAP_DETECT));
//Keep all the other audio relays OFF
digitalWrite(SWA, LOW);digitalWrite(SWB, LOW);digitalWrite(SWD, LOW);
//Set the LEDs, they will be always green and the red will be activated when the TAP is detected.
digitalWrite(LED1_G,HIGH);digitalWrite(LED2_G,HIGH);
digitalWrite(LED1_R,!digitalRead(TAP_DETECT));
digitalWrite(LED2_R,!digitalRead(TAP_DETECT));
The complete code looks like this:
// CC-by-www.ElectroSmash.com Telegraph Effect Pedal.
// More info about the project at www.ElectroSmash.com/Time-Manipulator
// Pin Definitions:
#define DELAY1 10
#define DELAY2 9
#define SWA 3
#define SWB 14
#define SWC 2
#define SWD 4
#define LED1_G 1
#define LED1_R 0
#define LED2_G 5
#define LED2_R 6
#define ENC_A 16
#define ENC_B 18
#define ENC_GND 17
#define ENC_PUSH 19
#define BYPASS_DETECT 8
#define TAP_DETECT 15
//VARIABLES
unsigned int ENC_counter = 100;
int ENC_aState;
int ENC_aLastState;
int ENC_aState_selection=0;
int ENC_aLastState_selection=0;
// the setup function runs once when you press reset or power the board
void setup()
{
//set the pins //init the values
pinMode(DELAY1, OUTPUT); analogWrite(DELAY1, 100);
pinMode(DELAY2, OUTPUT); analogWrite(DELAY2, 100);
pinMode(SWA, OUTPUT); digitalWrite(SWA, LOW);
pinMode(SWB, OUTPUT); digitalWrite(SWB, LOW);
pinMode(SWC, OUTPUT); digitalWrite(SWC, LOW);
pinMode(SWD, OUTPUT); digitalWrite(SWD, LOW);
pinMode(LED1_G, OUTPUT); analogWrite(LED1_G, 0);
pinMode(LED1_R, OUTPUT); analogWrite(LED1_R, 0);
pinMode(LED2_G, OUTPUT); analogWrite(LED2_G, 0);
pinMode(LED2_R, OUTPUT); analogWrite(LED2_R, 0);
pinMode(ENC_A, INPUT_PULLUP);
pinMode(ENC_B, INPUT_PULLUP);
pinMode(ENC_GND, OUTPUT);
pinMode(ENC_PUSH, INPUT_PULLUP);
pinMode(BYPASS_DETECT, INPUT_PULLUP);
pinMode(TAP_DETECT, INPUT_PULLUP);
ENC_aLastState = digitalRead(ENC_A);
void read_encoder(void);
}
void loop() // the loop function runs over and over again forever
{
//detect if the effect is on or off
while((digitalRead(BYPASS_DETECT) == LOW))
{
digitalWrite(LED1_R,LOW);digitalWrite(LED2_R,LOW);digitalWrite(LED1_G,LOW);digitalWrite(LED2_G,LOW);
}
//Activate Relay "C" only when the TAP footswitched is used
digitalWrite(SWC,!digitalRead(TAP_DETECT));
digitalWrite(SWA, LOW);digitalWrite(SWB, LOW);digitalWrite(SWD, LOW);
//Set the relays
digitalWrite(LED1_G,HIGH);digitalWrite(LED2_G,HIGH);
digitalWrite(LED1_R,!digitalRead(TAP_DETECT));
digitalWrite(LED2_R,!digitalRead(TAP_DETECT));
}