Hey! Thanks in advance for all help and suggestions. Every idea is valuable. So, basically what I want be able to do is switch the mode (counter) while blinky() is running. I want to stop the blinky() and run case:2 by pushing select. This is just example code from a huge project I'm working on where blinky() would be really big. Do I need to use interrupts? And how would I do that. Thanks again for all the support, you guys are great!
int mode = 8; //Mode selection button
int select = 7; //Select button
int counter = 0; //Counter # for modes
int LED1 = 9;
int LED2 = 10;
int LED3 = 11;
int LED4 = 12;
void setup()
{
pinMode(mode, INPUT_PULLUP);
pinMode(select, INPUT_PULLUP);
pinMode(LED1, OUTPUT);
pinMode(LED2, OUTPUT);
pinMode(LED3, OUTPUT);
pinMode(LED4, OUTPUT);
}
/////////////////////////////////////////////////////////////////////////////////////
void loop()
{
int selectVal = digitalRead(select);
int switchVal = digitalRead(mode);
if(switchVal == LOW)
{
delay(500);
counter ++;
if(counter == 3)
{
counter = 1;
}
}
///////////////////////////////////////////
switch(counter)
{
case 1:
digitalWrite(LED4, LOW);
digitalWrite(LED3, HIGH);
if(selectVal == LOW)
{
blinky();
}
break;
case 2:
digitalWrite(LED3, LOW);
digitalWrite(LED4, HIGH);
break;
}
}
////////////////////////////////////////////////////////////////////////////////////////////
// METHODS // METHODS // METHODS // METHODS // METHODS // METHODS // METHODS // METHODS ////
////////////////////////////////////////////////////////////////////////////////////////////
void blinky()
{
digitalWrite(LED1, HIGH);
delay(200);
digitalWrite(LED1, LOW);
digitalWrite(LED2, HIGH);
delay(200);
digitalWrite(LED2, LOW);
digitalWrite(LED1, HIGH);
delay(200);
digitalWrite(LED1, LOW);
digitalWrite(LED2, HIGH);
delay(200);
digitalWrite(LED2, LOW);
digitalWrite(LED1, HIGH);
delay(200);
digitalWrite(LED1, LOW);
digitalWrite(LED2, HIGH);
delay(200);
digitalWrite(LED2, LOW);
digitalWrite(LED1, HIGH);
delay(200);
digitalWrite(LED1, LOW);
digitalWrite(LED2, HIGH);
delay(200);
digitalWrite(LED2, LOW);
digitalWrite(LED1, HIGH);
delay(200);
digitalWrite(LED1, LOW);
digitalWrite(LED2, HIGH);
delay(200);
digitalWrite(LED2, LOW);
digitalWrite(LED1, HIGH);
delay(200);
digitalWrite(LED1, LOW);
digitalWrite(LED2, HIGH);
delay(200);
digitalWrite(LED2, LOW);
digitalWrite(LED1, HIGH);
delay(200);
digitalWrite(LED1, LOW);
digitalWrite(LED2, HIGH);
delay(200);
digitalWrite(LED2, LOW);
digitalWrite(LED1, HIGH);
delay(200);
digitalWrite(LED1, LOW);
digitalWrite(LED2, HIGH);
delay(200);
digitalWrite(LED2, LOW);
digitalWrite(LED1, HIGH);
delay(200);
digitalWrite(LED1, LOW);
digitalWrite(LED2, HIGH);
delay(200);
digitalWrite(LED2, LOW);
digitalWrite(LED1, HIGH);
delay(200);
digitalWrite(LED1, LOW);
digitalWrite(LED2, HIGH);
delay(200);
digitalWrite(LED2, LOW);
digitalWrite(LED1, HIGH);
delay(200);
digitalWrite(LED1, LOW);
digitalWrite(LED2, HIGH);
delay(200);
digitalWrite(LED2, LOW);
digitalWrite(LED1, HIGH);
delay(200);
digitalWrite(LED1, LOW);
digitalWrite(LED2, HIGH);
delay(200);
digitalWrite(LED2, LOW);
digitalWrite(LED1, HIGH);
delay(200);
digitalWrite(LED1, LOW);
digitalWrite(LED2, HIGH);
delay(200);
digitalWrite(LED2, LOW);
digitalWrite(LED1, HIGH);
delay(200);
digitalWrite(LED1, LOW);
digitalWrite(LED2, HIGH);
delay(200);
digitalWrite(LED2, LOW);
digitalWrite(LED1, HIGH);
delay(200);
digitalWrite(LED1, LOW);
digitalWrite(LED2, HIGH);
delay(200);
digitalWrite(LED2, LOW);
digitalWrite(LED1, HIGH);
delay(200);
digitalWrite(LED1, LOW);
digitalWrite(LED2, HIGH);
delay(200);
digitalWrite(LED2, LOW);
digitalWrite(LED1, HIGH);
delay(200);
digitalWrite(LED1, LOW);
digitalWrite(LED2, HIGH);
delay(200);
digitalWrite(LED2, LOW);
digitalWrite(LED1, HIGH);
delay(200);
digitalWrite(LED1, LOW);
digitalWrite(LED2, HIGH);
delay(200);
digitalWrite(LED2, LOW);
digitalWrite(LED1, HIGH);
delay(200);
digitalWrite(LED1, LOW);
digitalWrite(LED2, HIGH);
delay(200);
digitalWrite(LED2, LOW);
digitalWrite(LED1, HIGH);
delay(200);
digitalWrite(LED1, LOW);
digitalWrite(LED2, HIGH);
delay(200);
digitalWrite(LED2, LOW);
digitalWrite(LED1, HIGH);
delay(200);
digitalWrite(LED1, LOW);
digitalWrite(LED2, HIGH);
delay(200);
digitalWrite(LED2, LOW);
digitalWrite(LED1, HIGH);
delay(200);
digitalWrite(LED1, LOW);
digitalWrite(LED2, HIGH);
delay(200);
digitalWrite(LED2, LOW);
digitalWrite(LED1, HIGH);
delay(200);
digitalWrite(LED1, LOW);
digitalWrite(LED2, HIGH);
delay(200);
digitalWrite(LED2, LOW);
digitalWrite(LED1, HIGH);
delay(200);
digitalWrite(LED1, LOW);
digitalWrite(LED2, HIGH);
delay(200);
digitalWrite(LED2, LOW);
digitalWrite(LED1, HIGH);
delay(200);
digitalWrite(LED1, LOW);
digitalWrite(LED2, HIGH);
delay(200);
digitalWrite(LED2, LOW);
digitalWrite(LED1, HIGH);
delay(200);
digitalWrite(LED1, LOW);
digitalWrite(LED2, HIGH);
delay(200);
digitalWrite(LED2, LOW);
digitalWrite(LED1, HIGH);
delay(200);
digitalWrite(LED1, LOW);
digitalWrite(LED2, HIGH);
delay(200);
digitalWrite(LED2, LOW);
digitalWrite(LED1, HIGH);
delay(200);
digitalWrite(LED1, LOW);
digitalWrite(LED2, HIGH);
delay(200);
digitalWrite(LED2, LOW);
digitalWrite(LED1, HIGH);
delay(200);
digitalWrite(LED1, LOW);
digitalWrite(LED2, HIGH);
delay(200);
digitalWrite(LED2, LOW);
digitalWrite(LED1, HIGH);
delay(200);
digitalWrite(LED1, LOW);
digitalWrite(LED2, HIGH);
delay(200);
digitalWrite(LED2, LOW);
digitalWrite(LED1, HIGH);
delay(200);
digitalWrite(LED1, LOW);
digitalWrite(LED2, HIGH);
delay(200);
digitalWrite(LED2, LOW);
digitalWrite(LED1, HIGH);
delay(200);
digitalWrite(LED1, LOW);
digitalWrite(LED2, HIGH);
delay(200);
digitalWrite(LED2, LOW);
digitalWrite(LED1, HIGH);
delay(200);
digitalWrite(LED1, LOW);
digitalWrite(LED2, HIGH);
delay(200);
digitalWrite(LED2, LOW);
digitalWrite(LED1, HIGH);
delay(200);
digitalWrite(LED1, LOW);
digitalWrite(LED2, HIGH);
delay(200);
digitalWrite(LED2, LOW);
digitalWrite(LED1, HIGH);
delay(200);
digitalWrite(LED1, LOW);
digitalWrite(LED2, HIGH);
delay(200);
digitalWrite(LED2, LOW);
digitalWrite(LED1, HIGH);
delay(200);
digitalWrite(LED1, LOW);
digitalWrite(LED2, HIGH);
delay(200);
digitalWrite(LED2, LOW);
digitalWrite(LED1, HIGH);
delay(200);
digitalWrite(LED1, LOW);
digitalWrite(LED2, HIGH);
delay(200);
digitalWrite(LED2, LOW);
digitalWrite(LED1, HIGH);
delay(200);
digitalWrite(LED1, LOW);
digitalWrite(LED2, HIGH);
delay(200);
digitalWrite(LED2, LOW);
}