Содержание:
Если вы хотите создать умное устройство с помощью Ардуино, вам необходимо уметь управлять логикой в вашем коде. Логические операции — это основа программирования, и Ардуино предлагает несколько способов их реализации.
Начните с изучения операторов сравнения, таких как равно (==), не равно (!=), больше (>), меньше (<), больше или равно (>=) и меньше или равно (<=). Эти операторы позволяют сравнивать значения переменных и генерировать логические значения истина или ложь.
Затем изучите логические операторы, такие как И (&&), ИЛИ (||) и НЕ (!). Эти операторы позволяют комбинировать логические значения и создавать более сложные выражения. Например, вы можете использовать оператор И для выполнения действия только в том случае, если оба условия истинны.
Также обратите внимание на операторы Тернарный (? 🙂 и Условный (if-else). Тернарный оператор позволяет сократить код, записывая условие и два возможных результата в одной строке. Условный оператор позволяет выполнять разные действия в зависимости от условий.
Основные операторы сравнения
В программировании часто приходится сравнивать значения переменных. Для этого используются операторы сравнения. В Ардуино доступны следующие операторы:
==— проверяет равенство двух значений;!=— проверяет неравенство двух значений;>— проверяет большее значение;<— проверяет меньшее значение;>=— проверяет больше или равно;<=— проверяет меньше или равно.
Например, чтобы проверить, равно ли значение переменной a значению переменной b, используется оператор ==:
if (a == b) { ... }
Логические операторы
Логические операторы используются для объединения условий в выражениях. В Ардуино доступны следующие логические операторы:
!— оператор отрицания;&&— оператор «И»;||— оператор «ИЛИ».
Например, чтобы проверить, является ли значение переменной a больше нуля или равно значению переменной b, используется оператор «ИЛИ»:
if (a > 0 || a == b) { ... }
Логические операторы в практических задачах на Ардуино
Одним из распространенных применений логических операторов является управление светодиодами на основе состояния датчиков. Например, можно использовать оператор AND для включения светодиода только тогда, когда оба датчика выдают высокий уровень сигнала:
cpp
if (digitalRead(датчик1) == HIGH && digitalRead(датчик2) == HIGH) {
digitalWrite(светодиод, HIGH);
} else {
digitalWrite(светодиод, LOW);
}
Также можно использовать оператор NOT для инвертирования состояния датчика:
cpp
if (digitalRead(датчик) == LOW) {
digitalWrite(светодиод, HIGH);
} else {
digitalWrite(светодиод, LOW);
}
Пример: Управление вентилятором на основе температуры
Рассмотрим пример, в котором используется оператор IF-ELSE для управления вентилятором на основе температуры, измеренной датчиком DHT11:
cpp
#include
#define DHTPIN 2
#define DHTTYPE DHT11
DHT dht(DHTPIN, DHTTYPE);
void setup() {
pinMode(ventilator, OUTPUT);
dht.begin();
}
void loop() {
delay(2000);
float h = dht.readHumidity();
float t = dht.readTemperature();
if (isnan(h) || isnan(t)) {
Serial.println(«Failed to read from DHT sensor!»);
return;
}
if (t > 25.0) {
digitalWrite(ventilator, HIGH);
} else {
digitalWrite(ventilator, LOW);
}
Serial.print(«Humidity: «);
Serial.print(h);
Serial.print(» %t»);
Serial.print(«Temperature: «);
Serial.print(t);
Serial.println(» °C «);
}
В этом примере, если температура превышает 25°C, вентилятор включается, иначе он выключается.