помогите запрограмировать кнопу на режимы

MR_Robert
Offline
Зарегистрирован: 28.11.2013
 Помлгите сделать так чтобы при нажатии кнопки включался режим 1 еще раз нажать режим 2 и т.д
а при нажати кнопки 2 можно было венуца на предыдущий режим 

int ledPins[] = {2,3,4,5,6,7};

 

void setup()

{

  int index;

  for(index = 0; index <= 5; index++)

  {

    pinMode(ledPins[index],OUTPUT);

  }

}
 

void loop()

{

  oneAfterAnotherNoLoop(); //режим 1

 

  //oneAfterAnotherLoop(); //режим 2

  

  //oneOnAtATime(); //режим 3

  

  //pingPong(); //режим 4

 

  //marquee(); // режим 5

 

  //randomLED(); режим 6

}

 

void oneAfterAnotherNoLoop()

{

  int delayTime = 100;               

 

  digitalWrite(ledPins[0], HIGH); 

  delay(delayTime);       

  digitalWrite(ledPins[1], HIGH); 

  delay(delayTime);    

  digitalWrite(ledPins[2], HIGH); 

  delay(delayTime);    

  digitalWrite(ledPins[3], HIGH);  

  delay(delayTime);    

  digitalWrite(ledPins[4], HIGH);  

  delay(delayTime);        

  digitalWrite(ledPins[5], HIGH); 

  delay(delayTime);          



  digitalWrite(ledPins[5], LOW);  

  delay(delayTime);      

  digitalWrite(ledPins[4], LOW); 

  delay(delayTime);           

  digitalWrite(ledPins[3], LOW);  

  delay(delayTime);             

  digitalWrite(ledPins[2], LOW);

  delay(delayTime);            

  digitalWrite(ledPins[1], LOW); 

  delay(delayTime);          

  digitalWrite(ledPins[0], LOW);  

  delay(delayTime);           

}

void oneAfterAnotherLoop()

{

  int index;

  int delayTime = 100; 

  for(index = 0; index <= 5; index++)

  {

    digitalWrite(ledPins[index], HIGH);

    delay(delayTime);                

  }                                  

 

  for(index = 5; index >= 0; index--)

  {

    digitalWrite(ledPins[index], LOW);

    delay(delayTime);

  }               

}


void oneOnAtATime()

{

  int index;

  int delayTime = 100;                     

  

  for(index = 0; index <= 5; index++)

  {

    digitalWrite(ledPins[index], HIGH); 

    delay(delayTime);          

    digitalWrite(ledPins[index], LOW); 

  }

} 

void pingPong()

{

  int index;

  int delayTime = 100; 

                 

  for(index = 0; index <= 5; index++)

  {

    digitalWrite(ledPins[index], HIGH); 

    delay(delayTime);             

    digitalWrite(ledPins[index], LOW); 

  }



  for(index = 5; index >= 0; index--)

  {

    digitalWrite(ledPins[index], HIGH); 

    delay(delayTime);            

    digitalWrite(ledPins[index], LOW);  

  }

}
 

void marquee()

{

  int index;

  int delayTime = 200;
  for(index = 0; index <= 3; index++)

  {

    digitalWrite(ledPins[index], HIGH);   

    digitalWrite(ledPins[index+3], HIGH);

    delay(delayTime);                   

    digitalWrite(ledPins[index], LOW);    

    digitalWrite(ledPins[index+3], LOW);  

  }

}
void randomLED()

{

  int index;

  int delayTime;

  index = random(6);   delayTime = 100;



  digitalWrite(ledPins[index], HIGH);  

  delay(delayTime);              

  digitalWrite(ledPins[index], LOW);   

}

 

Lipt0n
Offline
Зарегистрирован: 04.11.2013
int button   = 6;
int button2 = 7;
int counT=0; //номера режимов

void loop(){

if(button==HIGH)
{
counT++; 
if(counT>7) counT=1; // при превышении числа лимитов возвращаемся к 1-му
}
if(button==HIGH)
{
counT++;
if(counT<1) counT=7;
}


switch (counT) {        //Если  режим  = 1, выполняем первую функцию и т.д.
  case 1:   
    oneAfterAnotherNoLoop();
    break;
  case 2:   
    oneAfterAnotherLoop();
    break;
case 3:   
    oneOnAtATime();
    break;
case 4:   
    pingPong();
    break;
case 5:   
    marquee(); 
    break;
case 6:   
    randomLED();
    break;}
}

 

 

maksim
Offline
Зарегистрирован: 12.02.2012

Не многовато ли int'ов ?

Lipt0n
Offline
Зарегистрирован: 04.11.2013

maksim пишет:

Не многовато ли int'ов ?

Спасибо исправил, Ctrl+C нечаянно int захватил.

maksim
Offline
Зарегистрирован: 12.02.2012

Так же не учтен дребезг. А так как в функциях испольвована delay() кнопочки прийдется обрабатывать в прерываниях.

MR_Robert
Offline
Зарегистрирован: 28.11.2013

в самай раз все работает, мне надо зделать так чтобы все режимы переключались по нажатии кнопки

скетч взял отсюда там http://www.youtube.com/watch?v=Z_CYSAE8UAs

Lipt0n
Offline
Зарегистрирован: 04.11.2013

MR_Robert пишет:

в самай раз все работает, мне надо зделать так чтобы все режимы переключались по нажатии кнопки

скетч взял отсюда там http://www.youtube.com/watch?v=Z_CYSAE8UAs

maksim хотел сказать что мой код, который я показал Вам для примера, будет работать только в "идеальных" условиях. И указал причины почему он может работать некорректно.