Вопрос по созданию функции

papakaplo
Offline
Зарегистрирован: 18.04.2016

Есть код в котором для кадого выхода (выхода от 2 по 5, всего 4) повторяется участок:

  if(currentMillis-previousMillis>uptimer1){
        ledState1 = HIGH;    
                  if(currentMillis - previousMillis - uptimer1> timer1) {                              
                  ledState1 = LOW;
                  endtimer1 = 1;
                  }
      }
 if(currentMillis-previousMillis>uptimer2){
        ledState1 = HIGH;    
                  if(currentMillis - previousMillis - uptimer2> timer2) {                              
                  ledState2 = LOW;
                  endtimer2 = 1;
                  }
      } и т.д.

Переменные которые оканчиваются цифрой "1" это участок кода для 2 пина (выхода)

такой же кусок кода идёт для 3 пина только с окончание переменных "2" и т.д..

Как сделать так чтоб была одна функция которая бы возварщала переменные ledState1, endtimer1 

func(previousMillis, uptimer, timer ){
...
...
...
}

Я так понимаю для простоты, значения uptimer и timer нужно занести в массивы например так

//таймеры включения
unsigned long uptimer[]={300, 400, 500, 600};
 
//таймеры рабыты
unsigned long timer[]={200, 200, 200, 200};
 
а затем с помощью них делать запрос в фунцию церез цикл прогоняя ячейки массива от 2 до 5
Как вернуть вот эти значения ledState1, endtimer1? 
 
releyshic
Offline
Зарегистрирован: 20.11.2015

Про массивы ничего не понял зачем они вообще?

Зачем тебе возвращать значения ledState1, endtimer1 если на данный момент ты их меняешь? может тогда нужны вместо них просто переменные ledState, endtimer, которые будет ф-ция менять?

Опиши нормально задачу сейчас что попало. Что надо сделать

ф-ция примерно такая

void func(unsigned long uptimer, unsigned long timer)
{
	if(currentMillis - previousMillis > uptimer)
	{
		ledState = HIGH; 
		if(currentMillis - previousMillis - uptimer1 > timer1) 
		{
			ledState = LOW;
			endtimer = 1;
		}
	}
}