Cat hungry.png
Здравствуйте! Собираем деньги на перевод материалов по электронике(https://www.allaboutcircuits.com/education/). Реквизиты указаны здесь.

Arduino:Примеры/IfStatement

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

Перевод: Максим Кузьмин (Cubewriter)
Перевел 2686 статей для сайта.

Контакты:

Проверка/Оформление/Редактирование: Мякишев Е.А.


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

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

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

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

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

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

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

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

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

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

Цепь

IfStatement circuit.png

Схема

IfStatement sch.png

Код

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

  1. /*
  2.   Условия – оператор If
  3.  
  4. Этот пример демонстрирует использование оператора if().
  5. Он считывает состояние потенциометра (подключенного к входному   аналоговому контакту),
  6. а затем либо включает светодиод
  7. (если значение от потенциометра превысило определенный порог),
  8. либо нет (если не превысило).
  9. Независимо от результата выводит данные на Serial Monitor.
  10.  
  11.  Цепь:
  12.  * потенциометр подключен к 0-ому аналоговому контакту
  13.  (т.е. центральный контакт потенциометра – к аналоговому контакту,
  14.   боковые – к 5 вольтам и «земле»).
  15.  * светодиод подключен к 13-ому цифровому контакту и «земле»
  16.  
  17.  * Примечание: на большинстве Arduino уже имеется светодиод,
  18. подключенный к 13-ому контакту;
  19. поэтому, если у вас именно такая плата,
  20. то вам дополнительного светодиода не требуется.
  21.  
  22.  Создан 17 января 2009,
  23.  модифицирован 9 апреля 2012 Томом Иго (Tom Igoe).
  24.  
  25.  Этот код не защищен авторским правом.
  26.  
  27. http://arduino.cc/en/Tutorial/IfStatement
  28.  
  29.  */
  30.  
  31. // Здесь вписываем константы. Это значения, которые не изменятся:
  32. const int analogPin = A0;    // контакт, к которому подключен потенциометр
  33. const int ledPin = 13;       // контакт, к которому подключен светодиод
  34. const int threshold = 400;   // произвольный «порог чувствительности»,
  35. который должен находиться в диапазоне значений,
  36. которые можно считать с аналогового контакта
  37.  
  38. void setup() {
  39.   // делаем контакт светодиода выходным контактом:
  40.   pinMode(ledPin, OUTPUT);
  41.   // инициализируем последовательную передачу данных:
  42.   Serial.begin(9600);
  43. }
  44.  
  45. void loop() {
  46.   // считываем значение потенциометра:
  47.   int analogValue = analogRead(analogPin);
  48.  
  49.   // если данные, считанные с аналогового датчика (т.е. с потенциометра),
  50.   // выше заданного порога, включаем светодиод:
  51.   if (analogValue > threshold) {
  52.     digitalWrite(ledPin, HIGH);
  53.   }
  54.   else {
  55.     digitalWrite(ledPin,LOW);
  56.   }
  57.  
  58.   // выводим на Serial Monitor данные, считанные с аналогового контакта:
  59.   Serial.println(analogValue);
  60.   delay(1);        // делаем задержку между считываниями – для стабильности программы
  61. }

См.также

  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

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

  1. Arduino - If Statement (Conditional Statement)