/* TO ADD
- DEBUG MODE
- DISPLAY MORE INTERACTIVE
- VISUALISER ON DISPLAY WHEN INACTIVE
*/
//IMPORT MIDI PACKAGE
#include <TM1637TinyDisplay.h>
//ASSIGN PINS
const int speedPotPin = A0;
const int mixPotPin = A1;
const int buttonPin = 2;
const int led1Pin = 3;
const int led2Pin = 5;
//ASSIGNING DISPLAY PINS
const int CLK = 9;
const int DIO = 10;
TM1637TinyDisplay display(CLK, DIO);
//DECLARING OUR OTHER VARIABLES
int switchSpeed;
int effectLevel;
int cycle;
float startMS;
bool bypass;
void setup() {
Serial.begin(9600);
//CONFIG DISPLAY
display.begin();
display.setBrightness(0x0f);
//SET PIN MODES
pinMode(speedPotPin, INPUT);
pinMode(mixPotPin, INPUT);
pinMode(buttonPin, INPUT);
pinMode(led1Pin, OUTPUT);
pinMode(led2Pin, OUTPUT);
//MIDI SETUP BELOW
}
void loop() {
//WE GRAB THIS SO WE CAN WORK OUT THE LOOP RUNTIME LATER
startMS = millis();
//TURN TIME POT VALUE INTO MILLISECONDS FROM 1000 to 10
switchSpeed = map(analogRead(speedPotPin), 0, 1023, 1000, 10);
//TURN MIX POT VALUE INTO MIDI LEVEL FROM 127 to 0
effectLevel = map(analogRead(mixPotPin), 0, 1023, 127, 0);
//CHECK IF BYPASS BUTTON PRESSED
bypass = (digitalRead(buttonPin) == HIGH) ? true : false;
// DETERMINES HOW MANY TIME THE CURRENT EFFECT SPEED HAS ELAPSED
cycle = (millis() / switchSpeed) + 2;
// ACTIVATE EFFECT IF CYCLE NUMBER IS EVEN AND BYPASS SWITCH NOT PRESSED
if (cycle % 2 == 0 && !bypass) {
//WRITE CODE FOR MIDI BELOW
//WRITE CODE FOR MIDI ABOVE
digitalWrite(led1Pin, LOW);
digitalWrite(led2Pin, HIGH);
} else {
//WRITE CODE FOR MIDI BELOW
//WRITE CODE FOR MIDI ABOVE
digitalWrite(led1Pin, HIGH);
digitalWrite(led2Pin, LOW);
};
//SHOW MS ON DISPLAY
ManageDisplay();
//10MS DELAY HELPS KEEP LOOP STABLE
delay(10 - (millis() - startMS));
}
void ManageDisplay() {
};