Arduino:Примеры/IfStatement

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

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


Оператор 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

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