Изучаем тернарный оператор ?.
Тернарный оператор (от латинского слова ternarius — тройной) — это, в языке Си, оператор, состоящий из двух символов ? и :. Тернарный оператор формирует условную операцию, возвращающую свой второй или третий операнд в зависимости от результата вычисления заданного логического выражения.
conditional ? expression1 : expression2
Где conditional логическое выражение (условие)
expression1 и expression2 операнды, которые могут быть значениями, вычислимыми операциями или функциями.
Тип первого операнда логический. Типом результата тернарного оператора будет наиболее общий тип его двух последних операндов.
int kn1 = 12;
void setup() {
Serial.begin(9600);
pinMode(kn1, INPUT_PULLUP);
}
void loop() {
bool x = digitalRead(kn1);
Serial.println(x ? "Свободна" : "Нажата");
delay(200);
}
Лист. 1. Проверка нажатия кнопки
Рис. 1.
int kn1 = 12, led = 3;
void setup() {
Serial.begin(9600);
pinMode(kn1, INPUT_PULLUP);
pinMode(led, OUTPUT);
}
void loop() {
bool x = digitalRead(kn1);
digitalWrite(led, x ? LOW : HIGH);
delay(200);
}
Лист. 2. Управление светодиодом
int kn1 = 12, led = 3;
void setup() {
Serial.begin(9600);
pinMode(kn1, INPUT_PULLUP);
pinMode(led, OUTPUT);
}
void loop() {
bool x = digitalRead(kn1);
digitalWrite(led, not digitalRead(led));
x ? delay(500) : delay(100);
}
Лист. 3. Управление мигалкой
int kn1 = 12, led = 3;
void setup() {
Serial.begin(9600);
pinMode(kn1, INPUT_PULLUP);
pinMode(led, OUTPUT);
}
void loop() {
bool x = digitalRead(kn1);
digitalWrite(led, x ? digitalRead(led) : not digitalRead(led));
delay(200);
}
Лист. 3. Переключатель