В этой статье мы разберем оператор if, который используется для показа того, как можно принимать различные решения в скетче.
Оператор if используется для проверки информации с клавиатуры в Arduino, которую пользователь вводит в окно Монитор порта Arduino IDE.
Дальнейшие решения могут быть приняты в зависимости от того, какую клавишу нажимает пользователь, например, если нажата клавиша «1«, можно включить встроенный светодиод Arduino, а если нажата клавиша «0«, светодиод можно выключить, в то время как все остальные нажатия клавиш игнорируются.
Использование оператора if
В программе (скетче) ниже показана работа оператора if, используемого в скетче для проверки того, был ли отправлен символ из Монитор порта Arduino IDE.
1 2 3 4 5 6 7 8 9 10 11 12 13 |
void setup() { Serial.begin(9600); } void loop() { char rx_byte; if (Serial.available() > 0) { // проверка отправки rx_byte = Serial.read(); // получение Serial.print("You typed: "); Serial.println(rx_byte); } } |
Если пользователь отправляет символ через Монитор порта, Arduino отправляет обратно текст «Вы ввели: X», где X-символ, введенный пользователем.
На скриншоте ниже показан запущенный скетч:
Как работает скетч
Структура оператора if показана здесь:
1 2 3 |
if (условное выражение) { Тело оператора if } |
Если условное выражение принимает значение истина, выполняется код в теле инструкции. Если условный оператор принимает значение ложь, ни один код в теле оператора if выполняться не будет.
Проверка наличия символа в окне Монитор порта
В примере скетча значение, возвращаемое функцией Serial.available (), будет больше 0 только в том случае, если Arduino получил один или несколько символов из окна Монитор порта.
Оператор if будет иметь значение истина только в том случае, если был получен один или несколько символов.
Если в Arduino не было отправлено ни одного символа, оператор if будет каждый раз обрабатываться в основном цикле и каждый раз оцениваться как ложь. Таким образом, код в теле оператора if не будет выполняться.
Как только символ отправляется из окна Монитор порта, функция Serial.available() возвращает 1. Когда оператор if вычисляется снова, он принимает значение истина (т.к. 1 > 0), и выполняется код в теле оператора if.
Символ, который был отправлен из окна Монитор порта, хранится в переменной rx_byte с использованием следующей строки кода:
1 |
rx_byte = Serial.read(); // получение |
Поскольку символ был сохранен, теперь его можно отправить обратно в окно Монитор порта с некоторым предыдущим текстом.
Использование оператора if для включения светодиода
Оператор if можно использовать для принятия решения о включении светодиода, если получен определенный символ, как показано в следующем примере:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
void setup() { Serial.begin(9600); pinMode(13, OUTPUT); // Светодиод на пине 13 } void loop() { char rx_byte; if (Serial.available() > 0) { // Проверка отправки rx_byte = Serial.read(); if (rx_byte == 'a') { digitalWrite(13, HIGH); } } } |
Если символ, отправленный из окна Монитор порта, является «a«, то светодиод на пине 13 платы Arduino будет включен. Если будет отправлен какой-либо другой символ, ничего не произойдет.
Оператор if:
1 |
if (rx_byte == 'a') |
Значение истина (true) будет приниматься только в том случае, если символ, полученный из окна Монитор порта и сохраненный в переменной rx_byte, соответствует символу «a«.
Выключение светодиода
Приведенный выше скетч можно изменить, чтобы добавить еще один оператор if, который можно использовать уже для выключения светодиода.
Приведенный ниже скетч включит светодиод, если » a » будет отправлено на Arduino, и выключит светодиод, если будет отправлено » b » (обратите внимание, что они чувствительны к регистру, поэтому» A » и » B » не будут работать).
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
void setup() { Serial.begin(9600); pinMode(13, OUTPUT); // Светодиод на пине 13 } void loop() { char rx_byte; if (Serial.available() > 0) { // проверка отправки rx_byte = Serial.read(); // if (rx_byte == 'a') { digitalWrite(13, HIGH); } if (rx_byte == 'b') { digitalWrite(13, LOW); } } } |
Теперь, когда отправляется символ » b «, проверка оператора if для » a «оценивается как ложь, но проверка оператора if для символа » b » оценивается как истина, и светодиод выключается.
Вывод
Мы думаем, что данный материал получился не сложным, важно, что мы смогли в ней очень емко и с практическими примерами объяснить вам работу оператора if.
Более эффективный способ включения и выключения светодиода мы рассмотрим с вами в следующей статье, в которой расскажем об операторах else и else if.
С Уважением, МониторБанк