// Pin Definitions:
#define DELAY1 9 // 22 //PB1 pin D9 di uno pin 15 di AT328
#define DELAY2 10 //9 ////PB2 pin D10 di uno pin 16 di AT328
#define SWA 3 //PD3 pin D3
#define SWB 1 //PC0 pin A0
#define SWC 2 //PD2 pin D3
#define SWD 4 //PD4 pin D4
#define LED1_G 1
#define LED1_R 0
#define LED2_G 5
#define LED2_R 6
#define ENC_A A2 //16//PC2 pin A2
#define ENC_B A3 //18 //PC3 pin A3
#define ENC_GND 17 //
#define ENC_PUSH 19 //
#define BYPASS_DETECT 8 //Push detection PB0 pin 14 AT238 pin D8 di uno
#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;
void read_encoder(void);
// the setup function runs once when you press reset or power the board
void setup()
{
Serial.begin(9600);
//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);
pinMode(ENC_B, INPUT);
pinMode(ENC_GND, OUTPUT);
pinMode(ENC_PUSH, INPUT_PULLUP);
pinMode(BYPASS_DETECT, INPUT_PULLUP);
pinMode(TAP_DETECT, INPUT_PULLUP);
//ENC_aLastState = digitalRead(ENC_A);
}
int lastClk = HIGH;
void loop() // the loop function runs over and over again forever
{
Serial.println(" Time Manipulator");
//detect if the effect is on or off
int newClk = digitalRead(ENC_A);
Serial.println(newClk);
if (newClk != lastClk) {
// There was a change on the CLK pin
lastClk = newClk;
int dtValue = digitalRead(ENC_B);
if (newClk == LOW && dtValue == HIGH) {
Serial.println("Rotated clockwise ⏩");
// ENC_counter+=5;
}
if (newClk == LOW && dtValue == LOW) {
Serial.println("Rotated counterclockwise ⏪");
//ENC_counter-=5;
}
}
delay(10);
while((digitalRead(BYPASS_DETECT) == LOW))
{
digitalWrite(LED1_R,LOW);digitalWrite(LED2_R,LOW);digitalWrite(LED1_G,LOW);digitalWrite(LED2_G,LOW);
}
//read_encoder();
readEncoder2();
delay(1000);
//update the delay value based on the encoder reading
analogWrite(DELAY1, ENC_counter);
analogWrite(DELAY2, ENC_counter);
Serial.println(ENC_counter);
//update the LED colors
digitalWrite(LED1_G, HIGH); digitalWrite(LED2_G, HIGH);digitalWrite(LED1_R,LOW); digitalWrite(LED2_R,LOW);
//set the audio relay
digitalWrite(SWA, HIGH);digitalWrite(SWB, HIGH);digitalWrite(SWC, HIGH);digitalWrite(SWD, HIGH);
}
void read_encoder(void)
{
ENC_aState = digitalRead(ENC_A); // Reads the "current" state
if (ENC_aState != ENC_aLastState)
{
if (digitalRead(ENC_B) != ENC_aState)
{if(ENC_counter>50)ENC_counter-=5;}
else
{if(ENC_counter<230)ENC_counter+=5;}
}
ENC_aLastState = ENC_aState; // Updates the prev. state
}
void readEncoder2(void)
{
int newClk = digitalRead(ENC_A);
if (newClk != lastClk) {
// There was a change on the CLK pin
lastClk = newClk;
int dtValue = digitalRead(ENC_B);
if (newClk == LOW && dtValue == HIGH) {
Serial.println("Rotated clockwise ⏩");
ENC_counter+=5;
}
if (newClk == LOW && dtValue == LOW) {
Serial.println("Rotated counterclockwise ⏪");
ENC_counter-=5;
}
}
}