Arduino:Примеры/IfStatement

Материал из Онлайн справочника
Перейти к навигацииПерейти к поиску

Перевод: Максим Кузьмин (Cubewriter) Контакты:</br>* Skype: cubewriter</br>* E-mail: cubewriter@gmail.com</br>* Максим Кузьмин на freelance.ru
Проверка/Оформление/Редактирование: Мякишев Е.А.


Оператор If (оператор условия) [1]

Оператор if() – это фундаментальная основа управления программой. С его помощью можно задать, случится или нет то или иное событие в зависимости от того, соответствуют ли текущие условия заданным вами параметрам. Выглядит он следующим образом:

if (someCondition) {
   // в этой секции делаем что-либо, если заданное условие верно
}

Существует и другая вариация – if-else (т.е. «если да, то...» и «а если нет, то...»), которая выглядит следующим образом:

if (someCondition) {
   // в этой секции делаем что-либо, если заданное условие верно
} else {
   // в этой секции делаем что-либо, если заданное условие не верно
}

Или вот еще одна вариация с if-else, где проверяется второе условие (на тот случай, если первое не верно):

if (someCondition) {
   // в этой секции делаем что-либо, если заданное условие верно
} else if (anotherCondition) {
   // в этой секции делаем что-либо, если первое условие не верно,
   // а второе верно.

Оператор if() используется повсеместно. В примере ниже мы будем включать светодиод на 13-ом контакте (впрочем, на многих Arduino светодиод к 13-ому контакту подключен по умолчанию), если значение, считанное на входном аналоговом контакте, будет превышать определенный порог.

Необходимое оборудование

  • Плата Arduino;
  • Потенциометр или другой регулируемый резистор;
  • 220-омовый резистор;
  • Светодиод;
  • Провода-перемычки;

Цепь

IfStatement circuit.png

Схема

IfStatement sch.png

Код

В примере ниже переменная analogValue используется для хранения данных, считанных от потенциометра, который подключен к 0-ому аналоговому контакту на Arduino (analogPin 0). Затем эти данные сравниваются с заданным порогом. Если значение analogValue будет выше этого порога, то светодиод на 13-ом контакте загорится, а если меньше, то так и останется в выключенном состоянии.

/*
  Условия – оператор If
 
Этот пример демонстрирует использование оператора if().
Он считывает состояние потенциометра (подключенного к входному   аналоговому контакту), 
а затем либо включает светодиод 
(если значение от потенциометра превысило определенный порог), 
либо нет (если не превысило). 
Независимо от результата выводит данные на Serial Monitor. 
  
 Цепь:
 * потенциометр подключен к 0-ому аналоговому контакту
 (т.е. центральный контакт потенциометра – к аналоговому контакту,
  боковые – к 5 вольтам и «земле»). 
 * светодиод подключен к 13-ому цифровому контакту и «земле» 
 
 * Примечание: на большинстве Arduino уже имеется светодиод,
подключенный к 13-ому контакту; 
поэтому, если у вас именно такая плата, 
то вам дополнительного светодиода не требуется. 
 
 Создан 17 января 2009,
 модифицирован 9 апреля 2012 Томом Иго (Tom Igoe).

 Этот код не защищен авторским правом.
 
http://arduino.cc/en/Tutorial/IfStatement
 
 */
 
// Здесь вписываем константы. Это значения, которые не изменятся:
const int analogPin = A0;    // контакт, к которому подключен потенциометр
const int ledPin = 13;       // контакт, к которому подключен светодиод
const int threshold = 400;   // произвольный «порог чувствительности»,
который должен находиться в диапазоне значений, 
которые можно считать с аналогового контакта

void setup() {
  // делаем контакт светодиода выходным контактом:
  pinMode(ledPin, OUTPUT);
  // инициализируем последовательную передачу данных:
  Serial.begin(9600);
}

void loop() {
  // считываем значение потенциометра:
  int analogValue = analogRead(analogPin);

  // если данные, считанные с аналогового датчика (т.е. с потенциометра),
  // выше заданного порога, включаем светодиод:
  if (analogValue > threshold) {
    digitalWrite(ledPin, HIGH);
  } 
  else {
    digitalWrite(ledPin,LOW); 
  }

  // выводим на Serial Monitor данные, считанные с аналогового контакта:
  Serial.println(analogValue);
  delay(1);        // делаем задержку между считываниями – для стабильности программы
}

См.также

  1. if()
  2. if...else
  3. analogRead()
  4. digitalWrite()
  5. serial.begin()
  6. serial.print()
  7. For Loop
  8. While Loop
  9. Switch Case
  10. Array

Внешние ссылки