Логические элементы

Логические элементы помогают роботу принимать простые решения по правилам: И, ИЛИ, НЕ, исключающее ИЛИ и другим. Из них складываются простые алгоритмы действий.
Зачем это нужно
Робот постоянно получает сигналы:
- кнопка нажата или не нажата;
- датчик видит линию или не видит;
- препятствие близко или далеко;
- свет включен или выключен.
Такие ответы удобно записывать двумя числами:
| Значение | Как читать |
|---|---|
| 1 | да, правда, включено |
| 0 | нет, неправда, выключено |
Пример интерпретации программой кнопки:
Кнопка нажата -> 1
Кнопка не нажата -> 0
Пример интерпретации программой состояния лампы:
Лампа включена -> 1
Лампа выключена -> 0
Пример управления состоянием лампы программой:
1 -> включить лампу
0 -> выключить лампу
Мы можем объединить "анализ" состояния одного элемента и "управление" другим элементом:
Кнопка нажата -> 1 -> включить лампу
Кнопка не нажата -> 0 -> выключить лампу
Но если управляющих сигналов несколько (например, несколько кнопок управляют работой одной лампы), то потребуется способ обработки этих сигналов - логические элементы.
Главная идея
Логический элемент похож на маленькое правило.
сигналы на входе -> правило -> ответ на выходе
Логический элемент берет один или несколько таких сигналов и выдает новый ответ: 1 или 0.
Например:

Если правило говорит 1, программа включает лампу. Если правило говорит 0, лампа выключается.
Как сигналы управляют роботом

В качестве примеров далее возьмем робота, который может ездить по следующему правилу:
- управляющий сигнал
1: робот едет - управляющий сигнал
0: робот стоит
Для управления используются кнопки:
- кнопка нажата -
1 - кнопка не нажата -
0
НЕ
НЕ меняет ответ на противоположный.
Если было 1, станет 0.
Если было 0, станет 1.
Обозначение на схемах

Кружок на выходе означает, что ответ инвертируется (переворачивается).
Все логические элементы читаются слева направо:
- слева - входы;
- справа - выходы.
Пример из жизни:
- датчик говорит: "перед роботом есть препятствие";
- команда роботу: "ехать можно, если препятствия НЕТ".
То есть робот едет, когда ответ датчика перевернут.
Таблица истинности НЕ
| A | НЕ A |
|---|---|
| 0 | 1 |
| 1 | 0 |
Таблица истинности - это таблица, которая показывает, какой ответ получится при разных значениях входных сигналов.
В таблицах истинности первые столбики обычно называются A, B, C и так далее. Каждая буква - входной сигнал, например кнопка. Так как у нас один входной сигнал A, значит у нас одна кнопка.
Пример с роботом
| Есть препятствие? | НЕ есть препятствие | Робот едет? |
|---|---|---|
| 0 | 1 | да |
| 1 | 0 | нет |
И
И дает 1 только тогда, когда все условия равны 1.
Пример:
Робот едет вперед, если:
- левая кнопка нажата;
- правая кнопка нажата.
Если нажата только одна кнопка, робот не едет.
Обозначение на схемах

Знак & означает: на выходе будет 1, только если все входы равны 1.
Таблица истинности И
| A | B | A И B |
|---|---|---|
| 0 | 0 | 0 |
| 0 | 1 | 0 |
| 1 | 0 | 0 |
| 1 | 1 | 1 |
Пример с роботом
| Левая кнопка | Правая кнопка | Ехать вперед? |
|---|---|---|
| 0 | 0 | нет |
| 0 | 1 | нет |
| 1 | 0 | нет |
| 1 | 1 | да |
Запомнить просто: И строгое. Оно хочет, чтобы все условия были выполнены.
ИЛИ
ИЛИ дает 1, если хотя бы одно условие равно 1.
Пример:
Робот включает сигнал, если:
- нажата левая кнопка;
- или нажата правая кнопка.
Достаточно одной кнопки.
Обозначение на схемах

Знак 1 означает: на выходе будет 1, если хотя бы один вход равен 1.
Таблица истинности ИЛИ
| A | B | A ИЛИ B |
|---|---|---|
| 0 | 0 | 0 |
| 0 | 1 | 1 |
| 1 | 0 | 1 |
| 1 | 1 | 1 |
Пример с роботом
| Левая кнопка | Правая кнопка | Включить сигнал? |
|---|---|---|
| 0 | 0 | нет |
| 0 | 1 | да |
| 1 | 0 | да |
| 1 | 1 | да |
Запомнить просто: ИЛИ мягкое. Ему достаточно одного условия.
Исключающее ИЛИ
Исключающее ИЛИ часто называют XOR.
Оно дает 1, если включено ровно одно условие из двух.
Пример:
У робота есть две кнопки поворота:
- левая кнопка - повернуть налево;
- правая кнопка - повернуть направо.
Если нажата только одна кнопка, робот понимает команду.
Если нажаты обе сразу, команда странная: непонятно, куда поворачивать.
Обозначение на схемах

Знак =1 означает: на выходе будет 1, если ровно один вход равен 1.
Таблица истинности XOR (исключающего ИЛИ)
| A | B | A XOR B |
|---|---|---|
| 0 | 0 | 0 |
| 0 | 1 | 1 |
| 1 | 0 | 1 |
| 1 | 1 | 0 |
Пример с роботом
| Левая кнопка | Правая кнопка | Команда понятна? |
|---|---|---|
| 0 | 0 | нет |
| 0 | 1 | да |
| 1 | 0 | да |
| 1 | 1 | нет |
Запомнить просто: исключающее ИЛИ означает "или одно, или другое, но не оба сразу".
Основные логические элементы

| Правило | Когда на выходе 1 | Простой пример |
|---|---|---|
| НЕ | когда вход равен 0 | ехать, если препятствия нет |
| И | когда все условия равны 1 | ехать, если нажаты две кнопки |
| ИЛИ | когда хотя бы одно условие равно 1 | пищать, если нажата любая кнопка |
| исключающее ИЛИ | когда ровно одно условие равно 1 | поворачивать, если нажата только одна кнопка |
Пример: робот не должен врезаться

Представим маленького робота на колесах.
У него есть два датчика:
A- спереди свободно;B- кнопка "старт" нажата.
Робот должен ехать вперед только тогда, когда спереди свободно И нажата кнопка "старт".
Правило:
Ехать вперед = A И B
Таблица:
Спереди свободно A | Кнопка "старт" B | Ехать вперед |
|---|---|---|
| 0 | 0 | 0 |
| 0 | 1 | 0 |
| 1 | 0 | 0 |
| 1 | 1 | 1 |
Если впереди стена, робот не едет даже при нажатой кнопке.
Пример: робот ищет черную линию

У робота два датчика снизу:
- левый датчик видит черную линию;
- правый датчик видит черную линию.
Правила можно сделать такими:
| Левый датчик | Правый датчик | Что делает робот |
|---|---|---|
| 0 | 0 | ищет линию |
| 1 | 0 | поворачивает влево |
| 0 | 1 | поворачивает вправо |
| 1 | 1 | едет вперед |
Здесь тоже есть логика. Робот смотрит на два ответа и выбирает действие.
Такой способ движения похож на релейный регулятор: робот не выбирает плавный поворот, а переключается между готовыми действиями. Например: линия слева - повернуть влево, линия справа - повернуть вправо, оба датчика видят линию - ехать прямо. В учебной робототехнике такой подход иногда называют "алгоритмом утюга".
Практика
Задание 1
Лампа должна гореть, если нажата хотя бы одна из двух кнопок.
Какое правило нужно выбрать?
- И
- ИЛИ
- НЕ
- исключающее ИЛИ
Задание 2
Робот должен ехать, если:
- нажата кнопка "старт";
- впереди нет препятствия.
Заполните таблицу.
| Старт | Есть препятствие | Ехать? |
|---|---|---|
| 0 | 0 | |
| 0 | 1 | |
| 1 | 0 | |
| 1 | 1 |
Подсказка:
Ехать = Старт И НЕ Есть_препятствие
Задание 3
Придумайте свое правило для робота.
Например:
Включить звук = датчик_слева ИЛИ датчик_справа
Запишите:
- Какие есть входы?
- Какое правило используется?
- Что получится на выходе?
Проверьте себя
- Что значит
1? - Что значит
0? - Чем И отличается от ИЛИ?
- Что делает НЕ?
- Почему
1 XOR 1дает0? - Какое правило подойдет роботу, который едет только при нажатой кнопке и свободной дороге?
Сначала ответьте без подсказки. Ответ можно считать полным, если вы:
- формулируете основную мысль своими словами;
- называете важные условия, ограничения или меры безопасности;
- для схемы, кода или расчёта показываете ход решения и ожидаемый результат.
Если один из пунктов объяснить не получается, найдите соответствующую главу статьи, перечитайте её и повторите ответ.
Словарь статьи
- Сигнал - значение, которое получает или выдает устройство:
1или0. - Вход - место, куда приходит сигнал. Например, от кнопки или датчика.
- Выход - ответ логического элемента после обработки входных сигналов.
- Логический элемент - простое правило, которое получает сигналы и выдает новый сигнал.
- Таблица истинности - таблица со всеми вариантами входов и выходов.
- НЕ - правило, которое меняет
1на0, а0на1. - И - правило, где на выходе будет
1, только если все входы равны1. - ИЛИ - правило, где на выходе будет
1, если хотя бы один вход равен1. - Исключающее ИЛИ - правило, где на выходе будет
1, если ровно один вход равен1. - Обозначение на схеме - рисунок элемента, который показывает его входы, выход и выполняемое правило.
Связанные темы
- Двоичная система счисления - почему компьютеру удобно работать с
0и1. - Математика в двоичной системе счисления - как выполнять действия с двоичными числами.
- Ветвление - как программа выбирает действие по условию.
- Микроконтроллеры для роботов - где такие правила выполняются в реальном устройстве.
Источники
- ГОСТ 2.743-72. Обозначения условные графические в схемах. Двоичные логические элементы: https://allgosts.ru/01/080/gost_2.743-72
- Python. Boolean Operations -
and,or,not: https://docs.python.org/3/library/stdtypes.html#boolean-operations-and-or-not - Arduino. Logical AND: https://docs.arduino.cc/language-reference/en/structure/boolean-operators/logicalAnd/
- Arduino. Logical OR: https://docs.arduino.cc/language-reference/en/structure/boolean-operators/logicalOr/
- Arduino. Logical NOT: https://docs.arduino.cc/language-reference/en/structure/boolean-operators/logicalNot/