Реклама ⓘ
Главная » Arduino
Призовой фонд
на апрель 2024 г.
1. 100 руб.
От пользователей

Похожие статьи:


Реклама ⓘ

Курс 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)  Этот кусочек кода означает, что условие будет истинно, если х будет меньше трех.

Все эти операции можно комбинировать  (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).В нашем эксперименте мы делали небольшую задержку, чтобы дребезг не смог помешать получить реальное значение.

Вывод

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

Список радиоэлементов

Обозначение Тип Номинал Количество ПримечаниеМагазинМой блокнот
Плата Arduino
Arduino Uno
1 Поиск в магазине ОтронВ блокнот
Светодиод
АЛ307ВМ
1 Поиск в магазине ОтронВ блокнот
Резистор
220 Ом
1 Поиск в магазине ОтронВ блокнот
Тактовая кнопкаБез фиксатора1 Поиск в магазине ОтронВ блокнот
Соединительные провода"Папа-Папа"1 Поиск в магазине ОтронВ блокнот
Добавить все

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

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

Теги:

Опубликована: Изменена: 20.06.2016 0 0
Я собрал 0 0
x

Оценить статью

  • Техническая грамотность
  • Актуальность материала
  • Изложение материала
  • Полезность устройства
  • Повторяемость устройства
  • Орфография
0

Средний балл статьи: 0 Проголосовало: 0 чел.

Комментарии (4) | Я собрал (0) | Подписаться

0
Дмитрий #
Это язык ардуино или C++?
Ответить
0

[Автор]
Симилячник #
Это C++ урезанный под Arduino.
Ответить
0
Юрий #
В шестой строке скетча в конце надо поставить точку с запятой.
Ответить
0

[Автор]
Симилячник #
Странно, в прикрепленном файле с кодом все правильно. Спасибо!
Ответить
Добавить комментарий
Имя:
E-mail:
не публикуется
Текст:
Защита от спама:
В чем измеряется напряжение?
Файлы:
 
Для выбора нескольких файлов использйте CTRL

Raspberry Pi 2
Raspberry Pi 2
AVR-программатор USB ASP Радиореле 220В
вверх