-
-
Save timeclock98/de2df871a5f5484a4b27c8f44bdb3f77 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// LED Variables | |
const int ledL1 = 10; | |
const int ledL2 = 11; | |
const int ledL3 = 12; | |
const int ledL4 = 13; | |
const int ledR1 = 9; | |
const int ledR2 = 8; | |
const int ledR3 = 7; | |
const int ledR4 = 6; | |
// Mic Variables | |
int analogPin = A0; | |
int micVal = 0; | |
// Timers | |
int mainTimer = 0; | |
int extraTimer = 0; | |
int timer1 = 0; | |
int timer2 = 0; | |
int timer3 = 0; | |
bool t1 = 0; | |
bool t2 = 0; | |
bool t3 = 0; | |
int btimer1 = 0; | |
int btimer2 = 0; | |
int btimer3 = 0; | |
bool bt1 = 0; | |
bool bt2 = 0; | |
bool bt3 = 0; | |
int switchvar = 5; // Change for different modes (LED patterns) | |
void setup(){ | |
Serial.begin(9600); | |
pinMode(ledL1, OUTPUT); | |
pinMode(ledL2, OUTPUT); | |
pinMode(ledL3, OUTPUT); | |
pinMode(ledL4, OUTPUT); | |
pinMode(ledR1, OUTPUT); | |
pinMode(ledR2, OUTPUT); | |
pinMode(ledR3, OUTPUT); | |
pinMode(ledR4, OUTPUT); | |
} | |
void loop(){ | |
micVal = analogRead(analogPin); // Read mic input | |
//Serial.println(micVal); // (Debug) | |
if(switchvar == 1){ // First LED pattern | |
if(micVal >= 344 && mainTimer > 100){ | |
if(t1 == 0){t1 = 1;} | |
else if(t2 == 0){t2 = 1;} | |
else if(t3 == 0){t3 = 1;} | |
if(bt1 == 0){bt1 = 1;} | |
else if(bt2 == 0){bt2 = 1;} | |
else if(bt3 == 0){bt3 = 1;} | |
mainTimer = 0; | |
} | |
if(t1 == 1){ // Call an instance to a function to run leds | |
topFunc(&timer1, &t1); | |
} | |
if(bt1 == 1){ | |
bottomFunc(&btimer1, &bt1); | |
} | |
if(t2 == 1){ | |
topFunc(&timer2, &t2); | |
} | |
if(bt2 == 1){ | |
bottomFunc(&btimer2, &bt2); | |
} | |
if(t3 == 1){ | |
topFunc(&timer3, &t3); | |
} | |
if(bt3 == 1){ | |
bottomFunc(&btimer3, &bt3); | |
} | |
mainTimer = mainTimer + 10; | |
delay(10); // debounce | |
} | |
else if(switchvar == 2){ // Second LED pattern | |
if(micVal >= 344 && mainTimer > 100){ | |
if(t1 == 0){t1 = 1;} | |
else if(t2 == 0){t2 = 1;} | |
else if(t3 == 0){t3 = 1;} | |
if(bt1 == 0){bt1 = 1;} | |
else if(bt2 == 0){bt2 = 1;} | |
else if(bt3 == 0){bt3 = 1;} | |
mainTimer = 0; | |
} | |
if(t1 == 1){ | |
BOTHAwaySlow(&timer1, &t1, 1); | |
} | |
if(bt1 == 1){ | |
BOTHAwaySlow(&btimer1, &bt1, 0); | |
} | |
if(t2 == 1){ | |
BOTHAwaySlow(&timer2, &t2, 1); | |
} | |
if(bt2 == 1){ | |
BOTHAwaySlow(&btimer2, &bt2, 0); | |
} | |
if(t3 == 1){ | |
BOTHAwaySlow(&timer3, &t3, 1); | |
} | |
if(bt3 == 1){ | |
BOTHAwaySlow(&btimer3, &bt3, 0); | |
} | |
mainTimer = mainTimer + 5; | |
delay(10); // debounce | |
} | |
else if(switchvar == 3){ // Third LED pattern | |
if(micVal >= 344 && mainTimer > 100){ | |
if(t1 == 0){t1 = 1;} | |
else if(t2 == 0){t2 = 1;} | |
else if(t3 == 0){t3 = 1;} | |
if(bt1 == 0){bt1 = 1;} | |
else if(bt2 == 0){bt2 = 1;} | |
else if(bt3 == 0){bt3 = 1;} | |
mainTimer = 0; | |
} | |
if(t1 == 1){ | |
BOTHUpSlope(&timer1, &t1); | |
} | |
if(t2 == 1){ | |
BOTHUpSlope(&timer2, &t2); | |
} | |
if(t3 == 1){ | |
BOTHUpSlope(&timer3, &t3); | |
} | |
mainTimer = mainTimer + 2; | |
delay(10); // debounce | |
} | |
else if(switchvar == 4){ // Fourth LED pattern | |
bt1 = 0; | |
if(t1 != 0){bt1 = 1; extraTimer = 0; btimer1 = 0;} | |
if(micVal >= 344 && mainTimer > 100){ | |
if(t1 == 0){t1 = 1;} | |
else if(t2 == 0){t2 = 1;} | |
else if(t3 == 0){t3 = 1;} | |
mainTimer = 0; | |
} | |
if(bt1 == 0){ | |
extraTimer++; | |
if(extraTimer >= 100){BOTHUpDown(&btimer1, &bt1);} | |
} | |
else{ | |
if(t1 == 1){ | |
BOTHDown(&timer1, &t1); | |
} | |
if(t2 == 1){ | |
BOTHDown(&timer2, &t2); | |
} | |
if(t3 == 1){ | |
BOTHDown(&timer3, &t3); | |
} | |
} | |
mainTimer = mainTimer + 2; | |
delay(10); // debounce | |
} | |
else if(switchvar == 5){ // Fith LED pattern | |
if(micVal >= 344 && mainTimer > 90){ | |
if(t1 == 0){t1 = 1;} | |
else if(t2 == 0){t2 = 1;} | |
else if(t3 == 0){t3 = 1;} | |
if(bt1 == 0){bt1 = 1;} | |
else if(bt2 == 0){bt2 = 1;} | |
else if(bt3 == 0){bt3 = 1;} | |
mainTimer = 0; | |
} | |
if(t1 == 1){ | |
BOTHUpFast(&timer1, &t1); | |
} | |
if(t2 == 1){ | |
BOTHUpFast(&timer2, &t2); | |
} | |
if(t3 == 1){ | |
BOTHUpFast(&timer3, &t3); | |
} | |
mainTimer = mainTimer + 2; | |
delay(10); // debounce | |
} | |
//Serial.println(timer1); // (Debug) | |
} | |
/////////////// Functions /////////////// | |
// Third LED Pattern Functions | |
void BOTHUpFast(int *timer,bool *t){ | |
if(*timer == 10){ | |
digitalWrite(ledR4, HIGH); | |
} | |
else if(*timer == 500){ // +200 but -20 every row | |
digitalWrite(ledR3, HIGH); | |
} | |
else if(*timer == 100){ | |
timeDelay(ledR2, ledR4); | |
} | |
else if(*timer == 150){ | |
timeDelay(ledR1, ledR3); | |
} | |
else if(*timer == 200){ | |
timeDelay(ledL1, ledR2); | |
} | |
// Top LEDs | |
else if(*timer == 250){ | |
timeDelay(ledL2, ledR1); | |
} | |
else if(*timer == 300){ | |
timeDelay(ledL3, ledL1); | |
} | |
else if(*timer == 350){ | |
timeDelay(ledL4, ledL2); | |
} | |
else if(*timer == 400){ | |
digitalWrite(ledL3, LOW); | |
} | |
else if(*timer == 450){ | |
digitalWrite(ledL4, LOW); | |
*t = 0; | |
*timer = 0; | |
return; | |
} | |
*timer = *timer + 10; | |
} | |
// Fourth LED Pattern Functions | |
void BOTHUpDown(int *timer,bool *t){ | |
if(*timer == 5){ // Up | |
digitalWrite(ledR4, HIGH); | |
} | |
else if(*timer == 100){ | |
digitalWrite(ledR3, HIGH); | |
} | |
else if(*timer == 190){ | |
timeDelay(ledR2, ledR4); | |
} | |
else if(*timer == 270){ // 80 | |
timeDelay(ledR1, ledR3); | |
} | |
else if(*timer == 320){ // 50 | |
timeDelay(ledL1, ledR2); | |
} | |
// Top LEDs | |
else if(*timer == 350){ // 30 | |
timeDelay(ledL2, ledR1); | |
} | |
else if(*timer == 400){ // 50 | |
timeDelay(ledL3, ledL1); | |
} | |
else if(*timer == 480){ // 80 | |
timeDelay(ledL4, ledL2); | |
} | |
else if(*timer == 570){ | |
digitalWrite(ledL3, LOW); | |
} | |
else if(*timer == 800){ // Down | |
digitalWrite(ledL3, HIGH); | |
} | |
else if(*timer == 890){ | |
timeDelay(ledL2, ledL4); | |
} | |
else if(*timer == 970){ // 80 | |
timeDelay(ledL1, ledL3); | |
} | |
else if(*timer == 1020){ // 50 | |
timeDelay(ledR1, ledL2); | |
} | |
// Top LEDs | |
else if(*timer == 1050){ // 30 | |
timeDelay(ledR2, ledL1); | |
} | |
else if(*timer == 1100){ // 50 | |
timeDelay(ledR3, ledR1); | |
} | |
else if(*timer == 1180){ // 80 | |
timeDelay(ledR4, ledR2); | |
} | |
else if(*timer == 1270){ | |
digitalWrite(ledR3, LOW); | |
} | |
else if(*timer == 1370){ | |
digitalWrite(ledR4, LOW); | |
*t = 0; | |
*timer = 0; | |
return; | |
} | |
*timer = *timer + 5; | |
} | |
void BOTHDown(int *timer,bool *t){ | |
if(*timer == 10){ | |
digitalWrite(ledL4, HIGH); | |
} | |
else if(*timer == 100){ | |
digitalWrite(ledL3, HIGH); | |
} | |
else if(*timer == 200){ | |
timeDelay(ledL2, ledL4); | |
} | |
else if(*timer == 300){ | |
timeDelay(ledL1, ledL3); | |
} | |
else if(*timer == 400){ | |
timeDelay(ledR1, ledL2); | |
} | |
// Top LEDs | |
else if(*timer == 500){ | |
timeDelay(ledR2, ledL1); | |
} | |
else if(*timer == 600){ | |
timeDelay(ledR3, ledR1); | |
} | |
else if(*timer == 700){ | |
timeDelay(ledR4, ledR2); | |
} | |
else if(*timer == 800){ | |
digitalWrite(ledR3, LOW); | |
} | |
else if(*timer == 900){ | |
digitalWrite(ledR4, LOW); | |
*t = 0; | |
*timer = 0; | |
return; | |
} | |
*timer = *timer + 20; | |
} | |
// Third LED Pattern Functions | |
void BOTHUpSlope(int *timer,bool *t){ | |
if(*timer == 10){ | |
digitalWrite(ledR4, HIGH); | |
} | |
else if(*timer == 200){ // +200 but -20 every row | |
digitalWrite(ledR3, HIGH); | |
} | |
else if(*timer == 380){ | |
timeDelay(ledR2, ledR4); | |
} | |
else if(*timer == 540){ | |
timeDelay(ledR1, ledR3); | |
} | |
else if(*timer == 680){ | |
timeDelay(ledL1, ledR2); | |
} | |
// Top LEDs | |
else if(*timer == 800){ | |
timeDelay(ledL2, ledR1); | |
} | |
else if(*timer == 900){ | |
timeDelay(ledL3, ledL1); | |
} | |
else if(*timer == 980){ | |
timeDelay(ledL4, ledL2); | |
} | |
else if(*timer == 1040){ | |
digitalWrite(ledL3, LOW); | |
} | |
else if(*timer == 1080){ | |
digitalWrite(ledL4, LOW); | |
*t = 0; | |
*timer = 0; | |
return; | |
} | |
*timer = *timer + 10; | |
} | |
// Second LED Pattern Functions | |
void BOTHAwaySlow(int *timer,bool *t, bool switcher){ | |
if(switcher == 1){ | |
if(*timer == 10){ | |
digitalWrite(ledL1, HIGH); | |
} | |
else if(*timer == 100){ | |
digitalWrite(ledL2, HIGH); | |
} | |
else if(*timer == 150){ | |
timeDelay(ledL3, ledL1); | |
} | |
else if(*timer == 200){ | |
timeDelay(ledL4, ledL2); | |
} | |
else if(*timer == 300){ | |
digitalWrite(ledL3, LOW); | |
} | |
else if(*timer == 400){ | |
digitalWrite(ledL4, LOW); | |
*t = 0; | |
*timer = 0; | |
return; | |
} | |
} | |
else if(switcher == 0){ | |
if(*timer == 10){ | |
digitalWrite(ledR1, HIGH); | |
} | |
else if(*timer == 100){ | |
digitalWrite(ledR2, HIGH); | |
} | |
else if(*timer == 150){ | |
timeDelay(ledR3, ledR1); | |
} | |
else if(*timer == 200){ | |
timeDelay(ledR4, ledR2); | |
} | |
else if(*timer == 300){ | |
digitalWrite(ledR3, LOW); | |
} | |
else if(*timer == 400){ | |
digitalWrite(ledR4, LOW); | |
*t = 0; | |
*timer = 0; | |
return; | |
} | |
} | |
*timer = *timer + 10; | |
} | |
// First LED Pattern Functions | |
void topFunc(int *timer,bool *t){ | |
if(*timer == 10){ | |
timeDelay(ledL1, ledL4); | |
} | |
else if(*timer == 100){ | |
timeDelay(ledL2, ledL1); | |
} | |
else if(*timer == 150){ | |
timeDelay(ledL3, ledL2); | |
} | |
else if(*timer == 200){ | |
timeDelay(ledL4, ledL3); | |
} | |
else if(*timer == 300){ | |
digitalWrite(ledL4, LOW); | |
*t = 0; | |
*timer = 0; | |
return; | |
} | |
*timer = *timer + 10; | |
} | |
void bottomFunc(int *timer,bool *t){ | |
if(*timer == 10){ | |
timeDelay(ledR1, ledR4); | |
} | |
else if(*timer == 100){ | |
timeDelay(ledR2, ledR1); | |
} | |
else if(*timer == 150){ | |
timeDelay(ledR3, ledR2); | |
} | |
else if(*timer == 200){ | |
timeDelay(ledR4, ledR3); | |
} | |
else if(*timer == 300){ | |
digitalWrite(ledR4, LOW); | |
*t = 0; | |
*timer = 0; | |
return; | |
} | |
*timer = *timer + 10; | |
} | |
void timeDelay(const int led1, const int led2){ | |
digitalWrite(led1, HIGH); | |
digitalWrite(led2, LOW); | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment