Изучаем тернарный оператор ?. 

Тернарный оператор (от латинского слова 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. Переключатель