🤚🤚 Создание кодов для двух датчиков нажатия
Логические операции в робототехнике
🧠 Логика • 💻 Программирование • 🔗 Комбинации • 🤖 Умное поведение
5 класс • Технология • 45 минут
👨🏫 Учитель: Ахметов Рустам
🏫 Школа: ГБОУ № 1362
📅 Дата: 2025-06-11
🎯 Цель: Научиться создавать умных роботов с логическим мышлением!
🎯 План урока
🧠 Наша логическая миссия:
- 🔄 Вспомнить основы - как работает один датчик
- 🧮 Изучить комбинации - все возможные состояния двух датчиков
- ⚡ Освоить логические операции - И, ИЛИ, НЕ
- 💻 Программировать умное поведение - реакции на комбинации
- 🎮 Создать интеллектуального робота - применить знания
🎯 К концу урока вы сможете:
- 📊 Анализировать все возможные комбинации состояний датчиков
- ⚡ Использовать логические операции в программах
- 🤖 Создавать роботов с разумным поведением
- 🧠 Мыслить как программист-логик
🔄 Актуализация знаний
Вспоминаем работу с одним датчиком
🤚 Один датчик - простая логика
💭 Что мы знаем об одном датчике нажатия:
📊 Состояния датчика:
НАЖАТ
(TRUE, 1) - контакты замкнуты
НЕ НАЖАТ
(FALSE, 0) - контакты разомкнуты
💻 Простая программа:
1ЕСЛИ датчик НАЖАТ ТО
2 Остановиться и повернуть
3ИНАЧЕ
4 Двигаться вперед
5КОНЕЦ ЕСЛИ
🎯 Результат: Робот обходит препятствия при касании
🤔 Проблемная ситуация
🤖 Ситуация: У робота два датчика нажатия - слева и справа
❓ Вопросы для размышления:
- Что делать, если нажат только левый датчик?
- А если только правый?
- А если оба одновременно?
- А если ни один не нажат?
🧠 Проблема: Как научить робота понимать все эти ситуации и правильно реагировать?
💡 Решение: Изучить логические операции и комбинации состояний!
🎯 Зачем нужны два датчика?
🚗 Аналогия с автомобилем:
- Левый датчик = левый передний парктроник
- Правый датчик = правый передний парктроник
- Оба датчика = система определения направления препятствия
🤖 Преимущества двух датчиков:
- ✅ Определение направления - откуда препятствие
- ✅ Точное маневрирование - куда поворачивать
- ✅ Умное поведение - разные реакции на разные ситуации
- ✅ Повышенная безопасность - дублирование защиты
🎮 Примеры применения:
- Робот-пылесос с навигацией по стенам
- Автономный автомобиль с системой парковки
- Промышленный робот с защитой от столкновений
- Роботизированная тележка в складе
🧮 Комбинаторика состояний датчиков
Все возможные варианты
📊 Таблица состояний двух датчиков
🔢 Математический подход:
При n
датчиках возможно 2^n
различных комбинаций состояний.
Для 2 датчиков: 2^2 = 4
комбинации.
📋 Полная таблица состояний:
№ |
Левый датчик |
Правый датчик |
Описание ситуации |
1 |
НЕ НАЖАТ (0) |
НЕ НАЖАТ (0) |
Свободный путь |
2 |
НЕ НАЖАТ (0) |
НАЖАТ (1) |
Препятствие справа |
3 |
НАЖАТ (1) |
НЕ НАЖАТ (0) |
Препятствие слева |
4 |
НАЖАТ (1) |
НАЖАТ (1) |
Препятствие прямо |
🎯 Вывод: Каждая комбинация требует своей реакции робота!
🤖 Умные реакции на каждую ситуацию
💻 Алгоритм разумного поведения:
Ситуация 1: Оба датчика НЕ нажаты (0, 0)
1Действие: Двигаться вперед с нормальной скоростью
2Логика: Путь свободен, можно ехать
Ситуация 2: Левый НЕ нажат, правый нажат (0, 1)
1Действие: Повернуть налево
2Логика: Препятствие справа, объезжаем слева
Ситуация 3: Левый нажат, правый НЕ нажат (1, 0)
1Действие: Повернуть направо
2Логика: Препятствие слева, объезжаем справа
Ситуация 4: Оба датчика нажаты (1, 1)
1Действие: Остановиться, отъехать назад, развернуться
2Логика: Тупик или большое препятствие, нужно отступить
🔍 Анализ комбинаций
📈 Частота возникновения ситуаций:
🟢 Наиболее частые (80% времени):
- (0, 0) - свободное движение
- (0, 1) или (1, 0) - обычные препятствия
🟡 Средние по частоте (15% времени):
- (1, 1) - углы, тупики, большие препятствия
🔴 Редкие (5% времени):
- Быстрые переключения между состояниями
- Одновременное срабатывание и отпускание
🎯 Практический вывод: Программа должна быстро обрабатывать простые случаи и тщательно - сложные.
🧠 Расширение до трех датчиков
📊 Для понимания масштабирования:
Три датчика: левый, центральный, правый
Количество комбинаций: 2^3 = 8
Левый |
Центр |
Правый |
Ситуация |
0 |
0 |
0 |
Свободный путь |
0 |
0 |
1 |
Препятствие справа |
0 |
1 |
0 |
Препятствие прямо |
0 |
1 |
1 |
Препятствие прямо и справа |
1 |
0 |
0 |
Препятствие слева |
1 |
0 |
1 |
Препятствия по бокам |
1 |
1 |
0 |
Препятствие прямо и слева |
1 |
1 |
1 |
Препятствия везде (тупик) |
🎯 Вывод: Чем больше датчиков, тем умнее может быть робот, но тем сложнее программа!
⚡ Логические операции
Математическая основа умного поведения
🧮 Основные логические операции
📖 Определения:
🔗 Операция И (AND, конъюнкция):
- Результат
ИСТИНА
только когда ВСЕ условия истинны
- Символы:
И
, AND
, &&
, ∧
🔀 Операция ИЛИ (OR, дизъюнкция):
- Результат
ИСТИНА
когда ЛЮБОЕ условие истинно
- Символы:
ИЛИ
, OR
, ||
, ∨
🚫 Операция НЕ (NOT, отрицание):
- Меняет
ИСТИНА
на ЛОЖЬ
и наоборот
- Символы:
НЕ
, NOT
, !
, ¬
📊 Таблицы истинности
⚡ Операция И (AND):
A |
B |
A И B |
0 |
0 |
0 |
0 |
1 |
0 |
1 |
0 |
0 |
1 |
1 |
1 |
🎯 Простыми словами: “И то, И другое”
⚡ Операция ИЛИ (OR):
A |
B |
A ИЛИ B |
0 |
0 |
0 |
0 |
1 |
1 |
1 |
0 |
1 |
1 |
1 |
1 |
🎯 Простыми словами: “ИЛИ то, ИЛИ другое, ИЛИ оба”
⚡ Операция НЕ (NOT):
🎯 Простыми словами: “Наоборот”
🤖 Применение в программировании датчиков
💻 Примеры логических выражений:
Пример 1: Движение только при свободном пути
1ЕСЛИ (НЕ левый_датчик) И (НЕ правый_датчик) ТО
2 Двигаться_вперед()
3КОНЕЦ ЕСЛИ
Пример 2: Остановка при любом препятствии
1ЕСЛИ левый_датчик ИЛИ правый_датчик ТО
2 Остановиться()
3КОНЕЦ ЕСЛИ
Пример 3: Поворот налево только при препятствии справа
1ЕСЛИ (НЕ левый_датчик) И правый_датчик ТО
2 Повернуть_налево()
3КОНЕЦ ЕСЛИ
Пример 4: Разворот при препятствии прямо
1ЕСЛИ левый_датчик И правый_датчик ТО
2 Развернуться_на_180_градусов()
3КОНЕЦ ЕСЛИ
🔄 Комбинированные логические выражения
🧠 Сложные условия для умного поведения:
Пример 1: Интеллектуальный поворот
1ЕСЛИ (левый_датчик И НЕ правый_датчик) ТО
2 Повернуть_направо()
3ИНАЧЕ ЕСЛИ (НЕ левый_датчик И правый_датчик) ТО
4 Повернуть_налево()
5ИНАЧЕ ЕСЛИ (левый_датчик И правый_датчик) ТО
6 Отъехать_назад_и_развернуться()
7ИНАЧЕ
8 Двигаться_вперед()
9КОНЕЦ ЕСЛИ
Пример 2: Адаптивная скорость
1ЕСЛИ (НЕ левый_датчик) И (НЕ правый_датчик) ТО
2 скорость = 255 // Максимальная скорость
3ИНАЧЕ ЕСЛИ левый_датчик ИЛИ правый_датчик ТО
4 скорость = 100 // Медленная скорость при препятствиях
5КОНЕЦ ЕСЛИ
Пример 3: Подсчет типов столкновений
1ЕСЛИ левый_датчик И правый_датчик ТО
2 счетчик_лобовых_столкновений = счетчик_лобовых_столкновений + 1
3ИНАЧЕ ЕСЛИ левый_датчик ИЛИ правый_датчик ТО
4 счетчик_боковых_столкновений = счетчик_боковых_столкновений + 1
5КОНЕЦ ЕСЛИ
🎯 Оптимизация логических выражений
📐 Законы логики для упрощения программ:
Закон поглощения:
A И (A ИЛИ B) = A
A ИЛИ (A И B) = A
Закон де Моргана:
НЕ(A И B) = (НЕ A) ИЛИ (НЕ B)
НЕ(A ИЛИ B) = (НЕ A) И (НЕ B)
💻 Практический пример оптимизации:
Было (сложно):
1ЕСЛИ НЕ(левый_датчик И правый_датчик) ТО
2 Двигаться_вперед()
3КОНЕЦ ЕСЛИ
Стало (проще):
1ЕСЛИ (НЕ левый_датчик) ИЛИ (НЕ правый_датчик) ТО
2 Двигаться_вперед()
3КОНЕЦ ЕСЛИ
💻 Практическое программирование
Создаем умного робота
🔌 Подключение двух датчиков
📊 Схема подключения к Arduino:
1Arduino Uno → Левый датчик
2Digital Pin 2 → Сигнальный контакт левого датчика
3GND → Общий провод левого датчика
4+5V → Питание через резистор 10кОм
5
6Arduino Uno → Правый датчик
7Digital Pin 3 → Сигнальный контакт правого датчика
8GND → Общий провод правого датчика
9+5V → Питание через резистор 10кОм
🔍 Проверка подключения:
1Алгоритм "Тест двух датчиков":
2
3НАЧАЛО
4 Инициализировать пин 2 как вход с подтяжкой
5 Инициализировать пин 3 как вход с подтяжкой
6
7 ПОСТОЯННО:
8 левый = Прочитать_пин(2)
9 правый = Прочитать_пин(3)
10
11 Вывести "Левый:", левый, " Правый:", правый
12 Ждать 500 мс
13 КОНЕЦ ПОСТОЯННО
14КОНЕЦ
🎯 Программа с операцией И
📋 Задача: Робот начинает движение только при нажатии ОБОИХ датчиков одновременно.
💻 Алгоритм:
1ПРОГРАММА "Старт по двум датчикам"
2
3ПЕРЕМЕННЫЕ:
4 пин_левый_датчик = 2
5 пин_правый_датчик = 3
6 пин_мотор_левый = 9
7 пин_мотор_правый = 10
8
9НАЧАЛО
10 Инициализировать все пины
11 Вывести "Нажмите ОБА датчика для старта"
12
13 ПОСТОЯННО:
14 левый_нажат = Прочитать_датчик(пин_левый_датчик)
15 правый_нажат = Прочитать_датчик(пин_правый_датчик)
16
17 ЕСЛИ левый_нажат И правый_нажат ТО
18 Вывести "Старт! Оба датчика нажаты"
19 Двигаться_вперед()
20 ИНАЧЕ
21 Вывести "Ожидание... Нажмите оба датчика"
22 Остановиться()
23 КОНЕЦ ЕСЛИ
24
25 Ждать 100 мс
26 КОНЕЦ ПОСТОЯННО
27КОНЕЦ
28
29ФУНКЦИЯ Двигаться_вперед():
30 Установить_мощность_мотора(пин_мотор_левый, 200)
31 Установить_мощность_мотора(пин_мотор_правый, 200)
32КОНЕЦ ФУНКЦИИ
33
34ФУНКЦИЯ Остановиться():
35 Установить_мощность_мотора(пин_мотор_левый, 0)
36 Установить_мощность_мотора(пин_мотор_правый, 0)
37КОНЕЦ ФУНКЦИИ
🎯 Применение: Система безопасности, требующая подтверждения двумя операторами.
🔀 Программа с операцией ИЛИ
📋 Задача: Робот останавливается при нажатии ЛЮБОГО из датчиков.
💻 Алгоритм:
1ПРОГРАММА "Аварийная остановка"
2
3НАЧАЛО
4 Инициализировать все пины
5 Вывести "Робот движется. Нажмите любой датчик для остановки"
6
7 ПОСТОЯННО:
8 левый_нажат = Прочитать_датчик(пин_левый_датчик)
9 правый_нажат = Прочитать_датчик(пин_правый_датчик)
10
11 ЕСЛИ левый_нажат ИЛИ правый_нажат ТО
12 Вывести "СТОП! Датчик сработал"
13 Аварийная_остановка()
14 Ждать_отпускания_всех_датчиков()
15 ИНАЧЕ
16 Двигаться_вперед()
17 КОНЕЦ ЕСЛИ
18
19 Ждать 50 мс
20 КОНЕЦ ПОСТОЯННО
21КОНЕЦ
22
23ФУНКЦИЯ Аварийная_остановка():
24 Остановиться()
25 Включить_звуковой_сигнал()
26 Ждать 1000 мс
27 Выключить_звуковой_сигнал()
28КОНЕЦ ФУНКЦИИ
29
30ФУНКЦИЯ Ждать_отпускания_всех_датчиков():
31 ПОКА Прочитать_датчик(пин_левый_датчик) ИЛИ Прочитать_датчик(пин_правый_датчик):
32 Вывести "Отпустите все датчики для продолжения"
33 Ждать 200 мс
34 КОНЕЦ ПОКА
35 Вывести "Датчики отпущены. Продолжаем движение"
36КОНЕЦ ФУНКЦИИ
🎯 Применение: Системы аварийной остановки, кнопки экстренного торможения.
🧠 Программа с комбинированными условиями
📋 Задача: Интеллектуальная навигация с разными реакциями на каждую комбинацию датчиков.
💻 Полный алгоритм умного робота:
1ПРОГРАММА "Интеллектуальный навигатор"
2
3ПЕРЕМЕННЫЕ:
4 счетчик_столкновений = 0
5 время_последнего_столкновения = 0
6
7НАЧАЛО
8 Инициализировать все пины
9 Вывести "Умный робот готов к работе"
10
11 ПОСТОЯННО:
12 левый = Прочитать_датчик(пин_левый_датчик)
13 правый = Прочитать_датчик(пин_правый_датчик)
14
15 // Анализ всех возможных комбинаций
16 ЕСЛИ (НЕ левый) И (НЕ правый) ТО
17 // Свободный путь
18 Действие_свободный_путь()
19
20 ИНАЧЕ ЕСЛИ (НЕ левый) И правый ТО
21 // Препятствие справа
22 Действие_препятствие_справа()
23
24 ИНАЧЕ ЕСЛИ левый И (НЕ правый) ТО
25 // Препятствие слева
26 Действие_препятствие_слева()
27
28 ИНАЧЕ ЕСЛИ левый И правый ТО
29 // Препятствие прямо (тупик)
30 Действие_тупик()
31
32 КОНЕЦ ЕСЛИ
33
34 Ждать 100 мс
35 КОНЕЦ ПОСТОЯННО
36КОНЕЦ
37
38ФУНКЦИЯ Действие_свободный_путь():
39 Вывести "Путь свободен"
40 Установить_скорость(200) // Быстро
41 Двигаться_вперед()
42КОНЕЦ ФУНКЦИИ
43
44ФУНКЦИЯ Действие_препятствие_справа():
45 Вывести "Препятствие справа - поворот налево"
46 Остановиться()
47 Ждать 300 мс
48 Повернуть_налево()
49 Ждать 600 мс
50 Зарегистрировать_столкновение()
51КОНЕЦ ФУНКЦИИ
52
53ФУНКЦИЯ Действие_препятствие_слева():
54 Вывести "Препятствие слева - поворот направо"
55 Остановиться()
56 Ждать 300 мс
57 Повернуть_направо()
58 Ждать 600 мс
59 Зарегистрировать_столкновение()
60КОНЕЦ ФУНКЦИИ
61
62ФУНКЦИЯ Действие_тупик():
63 Вывести "Тупик! Разворот на 180 градусов"
64 Остановиться()
65 Ждать 500 мс
66 Отъехать_назад()
67 Ждать 1000 мс
68 Развернуться_на_180()
69 Ждать 1500 мс
70 счетчик_столкновений = счетчик_столкновений + 2 // Двойной штраф за тупик
71КОНЕЦ ФУНКЦИИ
72
73ФУНКЦИЯ Зарегистрировать_столкновение():
74 счетчик_столкновений = счетчик_столкновений + 1
75 время_последнего_столкновения = Получить_время()
76 Вывести "Всего столкновений:", счетчик_столкновений
77КОНЕЦ ФУНКЦИИ
🎮 Творческое задание: Робот-лабиринт
🏗️ Задача: Создать робота, который может проходить лабиринт, используя два датчика нажатия.
🧠 Стратегии навигации:
Стратегия 1: “Правая рука”
1Алгоритм "Всегда держись правой стены":
2
3ЕСЛИ (НЕ левый) И (НЕ правый) ТО
4 // Пытаемся повернуть направо
5 Повернуть_направо()
6 Ждать 300 мс
7 ЕСЛИ датчики_свободны() ТО
8 Двигаться_вперед()
9 ИНАЧЕ
10 Повернуть_налево() // Возвращаемся
11 КОНЕЦ ЕСЛИ
12КОНЕЦ ЕСЛИ
Стратегия 2: “Случайный выбор”
1Алгоритм "Случайная навигация при тупике":
2
3ЕСЛИ левый И правый ТО
4 случайное_направление = Генерировать_случайное(1, 3)
5 ВЫБОР случайное_направление:
6 СЛУЧАЙ 1: Повернуть_налево()
7 СЛУЧАЙ 2: Повернуть_направо()
8 СЛУЧАЙ 3: Развернуться_на_180()
9 КОНЕЦ ВЫБОРА
10КОНЕЦ ЕСЛИ
Стратегия 3: “Память пути”
1Алгоритм "Запоминание неудачных поворотов":
2
3МАССИВ плохие_повороты[100]
4индекс_плохих = 0
5
6ФУНКЦИЯ Выбор_направления():
7 ЕСЛИ текущая_позиция НЕ В плохие_повороты ТО
8 направление = Стандартный_алгоритм()
9 ИНАЧЕ
10 направление = Альтернативный_алгоритм()
11 КОНЕЦ ЕСЛИ
12
13 ЕСЛИ привело_к_тупику ТО
14 плохие_повороты[индекс_плохих] = текущая_позиция
15 индекс_плохих = индекс_плохих + 1
16 КОНЕЦ ЕСЛИ
17КОНЕЦ ФУНКЦИИ
🏠 Домашнее задание
📋 Обязательные задания
1. Таблица истинности для трех переменных
Составьте полную таблицу истинности для трех логических переменных A, B, C с операциями:
a) A И B И C:
A |
B |
C |
A И B И C |
0 |
0 |
0 |
___ |
0 |
0 |
1 |
___ |
0 |
1 |
0 |
___ |
0 |
1 |
1 |
___ |
1 |
0 |
0 |
___ |
1 |
0 |
1 |
___ |
1 |
1 |
0 |
___ |
1 |
1 |
1 |
___ |
b) A ИЛИ B ИЛИ C:
A |
B |
C |
A ИЛИ B ИЛИ C |
0 |
0 |
0 |
___ |
0 |
0 |
1 |
___ |
… |
… |
… |
… |
2. Алгоритм для робота с тремя датчиками
Придумайте и запишите в виде псевдокода алгоритм для робота с тремя датчиками нажатия: левый, центральный, правый.
Требования к алгоритму:
- Должен обрабатывать все 8 возможных комбинаций
- Каждая комбинация должна иметь логичную реакцию
- Объясните, почему выбрали именно такие действия
🎯 Дополнительные задания (по выбору)
🧮 Для математиков:
Исследуйте законы булевой алгебры:
- Закон коммутативности: A И B = B И A
- Закон ассоциативности: (A И B) И C = A И (B И C)
- Закон дистрибутивности: A И (B ИЛИ C) = (A И B) ИЛИ (A И C)
Приведите примеры применения этих законов в программировании роботов.
💻 Для программистов:
Изучите дополнительные логические операции:
- XOR (исключающее ИЛИ): A XOR B = (A ИЛИ B) И НЕ(A И B)
- NAND (И-НЕ): A NAND B = НЕ(A И B)
- NOR (ИЛИ-НЕ): A NOR B = НЕ(A ИЛИ B)
Придумайте применение этих операций для управления роботами.
🎮 Для творческих:
Спроектируйте игрового робота с множественными датчиками:
- Робот играет в “Саймон говорит”
- Использует 4 датчика как игровые кнопки
- Показывает последовательность, игрок повторяет
- Усложняет игру при успехе игрока
Опишите алгоритм игры и логику проверки правильности ввода.
🌐 Полезные ресурсы
📚 Для изучения:
- Основы математической логики
- Булева алгебра и её применения
- Цифровая схемотехника
- Конечные автоматы в робототехнике
💻 Симуляторы:
- Логические вентили онлайн
- Симуляторы цифровых схем
- Построители таблиц истинности
- Визуализаторы булевых функций
🎥 Видеоматериалы:
- “Как работают логические вентили в процессорах”
- “Булева алгебра простыми словами”
- “Программирование микроконтроллеров с множественными датчиками”
🎉 Подведение итогов урока
🏆 Наши достижения
🧮 Математические навыки:
- ✅ Освоили основные логические операции И, ИЛИ, НЕ
- ✅ Научились строить таблицы истинности
- ✅ Поняли принципы комбинаторики состояний
- ✅ Изучили законы булевой алгебры
💻 Программистские навыки:
- ✅ Научились программировать сложные логические условия
- ✅ Освоили обработку множественных входных сигналов
- ✅ Создали алгоритмы для разных комбинаций датчиков
- ✅ Поняли принципы отладки логических программ
🤖 Робототехнические навыки:
- ✅ Подключили и настроили два датчика одновременно
- ✅ Создали робота с интеллектуальным поведением
- ✅ Научились анализировать и оптимизировать алгоритмы
- ✅ Поняли принципы создания умных систем
🌟 Главные открытия
🎯 Ключевые выводы урока:
“Логические операции - это язык, на котором разговаривают умные устройства”
“Чем больше датчиков, тем умнее робот, но тем сложнее логика”
“Правильная логика превращает простые датчики в интеллектуальную систему”
🔮 Перспективы развития:
- Машинное обучение для автоматического создания логики
- Нечеткая логика для работы с неопределенностью
- Нейронные сети как альтернатива булевой логике
- Квантовая логика для сверхбыстрых вычислений
📊 Рефлексия “Логические карточки”
🎯 Покажите карточку, соответствующую вашему пониманию:
🟢 Зеленая карточка - “Понял все логические операции и могу применять их в программах”
🟡 Желтая карточка - “В основном понял, но есть вопросы по сложным комбинациям”
🔴 Красная карточка - “Нужна дополнительная помощь с логическими операциями”
💭 Поделитесь:
- Какая логическая операция показалась самой полезной?
- Какую комбинацию датчиков было сложнее всего запрограммировать?
- Где в реальной жизни вы видите применение таких логических систем?
🔮 Следующий урок: “Датчики расстояния - глаза робота”
🎯 Готовимся изучать:
- Ультразвуковые и инфракрасные дальномеры
- Принципы эхолокации и времени пролета
- Программирование бесконтактного обнаружения препятствий
- Создание роботов-разведчиков
🧠 ВЫ ОВЛАДЕЛИ ЛОГИЧЕСКИМ МЫШЛЕНИЕМ РОБОТОВ!
Теперь ваши роботы могут принимать умные решения!