Обобщение повторяющегося кода в функции цикла пустоты

Как мне обобщить десятки строк кода для мигания красным светодиодом в Arduino Rich Shield? Есть ли способ или метод исключить хотя бы половину кода для повторяющихся сценариев?

const int redPin = 4;


void setup()
{
 pinMode(redPin, OUTPUT);
}

void loop()
{
  digitalWrite(redPin, HIGH);
  delay(250);
  digitalWrite(redPin, LOW);
  delay(250);
  digitalWrite(redPin, HIGH);
  delay(250);
  digitalWrite(redPin, LOW);
  delay(250);
  digitalWrite(redPin, HIGH);
  delay(250);
  digitalWrite(redPin, LOW);
}

, 👍-1


1 ответ


Лучший ответ:

1
void loop()
{
  digitalWrite(redPin, HIGH);
  delay(250);
  digitalWrite(redPin, LOW);
  delay(250);
}

Я не совсем понимаю, что вам нужно, но это короче и даст вам аналогичные результаты. Поскольку цикл все равно будет повторяться, нет необходимости повторяться внутри цикла.

Судя по комментариям, это не особо полезно...

const int redPin = 4;

int counter = 0;

void setup()
{
 pinMode(redPin, OUTPUT);
}

void loop()
{
  if(counter < 4) {
     digitalWrite(redPin, HIGH);
     delay(250);
     digitalWrite(redPin, LOW);
     delay(250);
     counter++;
  }      
}
,

хорошо, я этого не знал, но что, если я хочу мигнуть от 3 до 5, а затем погасить красный светодиод? приведет ли это к изменению кода?, @Ryan johnson

Если вы хотите остановить его (и больше ничего не делать), переместите код в setup, который выполняется только один раз., @Michel Keijzers

спасибо за ваш ответ, но я хочу, чтобы он работал в циклической функции, чтобы он не мигал, например, после 3–5 миганий., @Ryan johnson

Суть цикла в том, что он постоянно повторяется. Если вы хотите, чтобы он останавливался после стольких морганий, вам нужна переменная, которая начинается с нуля и добавляет единицу каждый раз, когда цикл выполняется. Поместите часть, которая мигает светом, внутрь оператора if, который проверяет, не находится ли это число ниже какого-либо предела., @Delta_G

Ага, теперь я понимаю логику остановки определенного цикла, большое спасибо, Дельта, вы очень помогли!, @Ryan johnson