logo
+7 (495) 997-37-74
Москва, ул.Международная, 15





23.05.2019

Мигаем с использованием функции

Мигаем с использованием функции

Если посмотреть на код из предыдущего урока, то можно увидеть, что две секции кода повторяют друг друга:

  digitalWrite(led1Pin, HIGH); // включть светодиод 1 
  digitalWrite(led2Pin, LOW);  // выключить светодиод 2 
  delay(1000); // подождать 1 секунду
 
  digitalWrite(led1Pin, LOW); // выключить светодиод 1 
  digitalWrite(led2Pin, HIGH); // включить саетодиод 2 
  delay(1000); // подождать 1 секунду

Теперь мы будем использовать одну функцию для их замены, чтобы упростить код.

int led1Pin = 4;
int led2Pin = 5;
 
void setup() { 
  // Переводим пины в режим выходов
  pinMode(led1Pin, OUTPUT); 
  pinMode(led2Pin, OUTPUT); 
} 
 
void loop() { 
  setLed(HIGH, LOW); // включить LED1, выключить LED2
  setLed(LOW, HIGH); // выключить LED1, включить LED2
} 
 
void setLed(int led1, int led2) { 
  digitalWrite(led1Pin, led1);
  digitalWrite(led2Pin, led2);
  delay(1000);
} 

Для управления двумя светодиодами мы написали одну функцию setLed(int led1, int led2), с параметрами led1 и led2.

void setLed(int led1, int led2) { 
  digitalWrite(led1Pin, led1);
  digitalWrite(led2Pin, led2);
  delay(1000);
} 

Когда мы вызываем функцию для управления светодиодами, то передаём параметры их состояния, как это показано ниже:

  setLed(HIGH, LOW); // включить LED1, выключить LED2
  setLed(LOW, HIGH); // выключить LED1, включить LED2

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

В прошлом примере мы использовали одну функцию с двумя параметрами для управления светодиодами. Так как светодиоды мигают попеременно, то попробуем написать функцию с одним параметром.

int led1Pin = 4;
int led2Pin = 5;
 
void setup() { 
  // Переводим пины в режим выходов
  pinMode(led1Pin, OUTPUT); 
  pinMode(led2Pin, OUTPUT); 
} 
 
void loop() { 
  setLed1(HIGH);
  setLed1(LOW);
} 
 
void setLed1(int led1) { 
  digitalWrite(led1Pin, led1);
 
  if (led1 == HIGH) {
    digitalWrite(led2Pin, LOW);
  } else {
    digitalWrite(led2Pin, HIGH);
  }
  delay(1000);
}

Здесь мы переписали функцию так, чтобы нам нужно было устанавливать только состояние первого светодиода LED1, а состояние второго светодиода LED2 будет меняться автоматически.

Скомпилируйте и загрузите скетч в микроконтроллер, чтобы посмотреть результат работы.