Курс Arduino — Логика

Логика

В прошлом уроке мы научились считывать аналоговый и цифровой сигнал и столкнулись с логическими переменными, условным оператором и другими логическими штуковинами.

Сегодня мы рассмотрим логику языка C++ более подробно.

Нам понадобятся

  • Резистор на 220 Ом
  • Светодиод
  • Тактовая кнопка
  • Соединительные провода «Папа-Папа»

Boolean

Начнем с того, что вспомним, что такое логическая переменная.

Boolean – это логическая переменная. У нее может быть лишь два значения:

True – истина. Значение в Serial monitor – 1.

False – ложь. Значение в Serial monitor – 0.

С помощью логических  переменных мы можем выполнять различные поставленные задачи.

Вкыл и выкл

Давайте попробуем решить несложную задачу:

«По кратковременному нажатию кнопки включаем светодиод, по кратковременному нажатию выключаем светодиод»

Кто уже почувствовал свои силы и читал все предлагаемые для ознакомления статьи, может попробовать выполнить поставленную задачу самостоятельно.

Соберем схему, как и в прошлом уроке.

Рассмотрим код.

#define LED 8
#define BUT 12

boolean led_state = false;
//Обозначим переменную нынешнего состояния лампы.True — лампа горит, False — нет.
boolean but_state = false;
// Эта переменная будет хранить значение кнопки.True — кнопка нажата, False — нет.

void setup() {
pinMode(8, OUTPUT);
pinMode(12, INPUT_PULLUP);
//Нужно включить подтягивающий резистор.Иначе, шумы испортят нам эксперимент.

}

void loop() {

boolean but_now = digitalRead(12);
// В эту переменную будет записываться нынешнее состояние кнопки.
//True -кнопка НЕ зажата, False — зажата.

if(but_now && !but_state) //В этом условном операторе прописано:
//Если значение but — истина, а значение pos1 НЕ ложь
//(Что означает этот «!» знак рассмотрим в пояснениях)
{
digitalWrite(8, HIGH); //Включаем светодиод.
led_state = !led_state; //Изменяем состояние лампы.
delay(10); //Ждем немного.Надо ждать из-за так называемого дребезга.
}

but_state = but_now;
//Присваиваем нынешнее значение зажатой или не зажатой кнопки.
digitalWrite(LED, led_state);
//Подаем или не подаем напряжение на светодиод в зависимости от состояния лампы.
}

Пояснения

Логические операторы  Всего их три. Логическое «И», логическое «ИЛИ» и логическое «НЕ»

Логическое «И». Обозначается «&&». Пример с кодом:  a > 1 && b <2  Этот кусочек кода означает, что условие будет истинно, если оба маленьких условия будут истинны. А если одно из малых значений ложно — значение общего выражение так же будет ложно.

Логическое «ИЛИ». Обозначается «||». Пример с кодом  а > 6 || b > 0  Это кусочек кода означает, что условие будет истинно, если хотя бы одно из малых  условий истинно. Условие будет ложно лишь в том случае, когда все малые условия ложны.

Логическое «НЕ». Обозначается «!». Пример с кодом !(x> 3)  Этот кусочек кода означает, что условие будет истинно, если х будет меньше 3-х.

Все эти операции можно комбинировать  (x >= 30 || x == 2) && !(y < 17) Этот кусок кода означает, что если x больше или равен 30 ИЛИ x равен двум И y НЕ меньше семнадцати, то значение выражения – Истинна.

Операторы сравнения

Равенство. Обозначение « == » А == В значит, что А равен В. Не следует путать его с « = ».

Оператор « =» — это оператор присваивания. Он берет значение справа от него и присваивает к значению слева от него.

Неравенство. Обозначение «! = » X  != Y значит, что Х не равен Y.

Меньше/Больше. Знакомые нам со школы знаки больше и меньше. Обозначения « > и < ». X < Y означает, что X меньше чем Y.  X > Y означает, что X больше чем Y.

Меньше или равно. Обозначение « <= ». X <= Y означает, что X меньше или равен Y.

Больше или равно. Обозначение « >= ». X >= Y означает, что X больше или равен Y.

Дребезг  При замыкании и размыкании между пластинами кнопки возникают искры, провоцирующие до десятка переключений за несколько миллисекунд.

Явление называется дребезгом (англ. bounce).В нашем эксперименте мы делали небольшую задержку, чтобы дребезг не смог помешать получить реальное значение.

Вывод

Теперь мы умеем пользоваться логикой С++ для создания ветвления алгоритмов. В будущем это умение пригодится во многих проектах.

Список радиоэлементовОбозначение
Тип
Номинал
Количество
ПримечаниеМагазинМой блокнот

Плата ArduinoArduino Uno1

СветодиодАЛ307ВМ1

Резистор220 Ом1

Тактовая кнопкаБез фиксатора1

Соединительные провода"Папа-Папа"1
Добавить все

Скачать список элементов (PDF)

Прикрепленные файлы:

Добавить комментарий

Ваш адрес email не будет опубликован.