🤚🤚 Создание кодов для двух датчиков нажатия

Логические операции в робототехнике

🧠 Логика • 💻 Программирование • 🔗 Комбинации • 🤖 Умное поведение
5 класс • Технология • 45 минут

👨‍🏫 Учитель: Ахметов Рустам
🏫 Школа: ГБОУ № 1362
📅 Дата: 2025-06-11
🎯 Цель: Научиться создавать умных роботов с логическим мышлением!

🎯 План урока

🧠 Наша логическая миссия:

  1. 🔄 Вспомнить основы - как работает один датчик
  2. 🧮 Изучить комбинации - все возможные состояния двух датчиков
  3. ⚡ Освоить логические операции - И, ИЛИ, НЕ
  4. 💻 Программировать умное поведение - реакции на комбинации
  5. 🎮 Создать интеллектуального робота - применить знания

🎯 К концу урока вы сможете:

  • 📊 Анализировать все возможные комбинации состояний датчиков
  • ⚡ Использовать логические операции в программах
  • 🤖 Создавать роботов с разумным поведением
  • 🧠 Мыслить как программист-логик

🔄 Актуализация знаний

Вспоминаем работу с одним датчиком

🤚 Один датчик - простая логика

💭 Что мы знаем об одном датчике нажатия:

📊 Состояния датчика:

  • НАЖАТ (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):

A НЕ A
0 1
1 0

🎯 Простыми словами: “Наоборот”

🤖 Применение в программировании датчиков

💻 Примеры логических выражений:

Пример 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 датчика как игровые кнопки
  • Показывает последовательность, игрок повторяет
  • Усложняет игру при успехе игрока

Опишите алгоритм игры и логику проверки правильности ввода.

🌐 Полезные ресурсы

📚 Для изучения:

  • Основы математической логики
  • Булева алгебра и её применения
  • Цифровая схемотехника
  • Конечные автоматы в робототехнике

💻 Симуляторы:

  • Логические вентили онлайн
  • Симуляторы цифровых схем
  • Построители таблиц истинности
  • Визуализаторы булевых функций

🎥 Видеоматериалы:

  • “Как работают логические вентили в процессорах”
  • “Булева алгебра простыми словами”
  • “Программирование микроконтроллеров с множественными датчиками”

🎉 Подведение итогов урока

🏆 Наши достижения

🧮 Математические навыки:

  • ✅ Освоили основные логические операции И, ИЛИ, НЕ
  • ✅ Научились строить таблицы истинности
  • ✅ Поняли принципы комбинаторики состояний
  • ✅ Изучили законы булевой алгебры

💻 Программистские навыки:

  • ✅ Научились программировать сложные логические условия
  • ✅ Освоили обработку множественных входных сигналов
  • ✅ Создали алгоритмы для разных комбинаций датчиков
  • ✅ Поняли принципы отладки логических программ

🤖 Робототехнические навыки:

  • ✅ Подключили и настроили два датчика одновременно
  • ✅ Создали робота с интеллектуальным поведением
  • ✅ Научились анализировать и оптимизировать алгоритмы
  • ✅ Поняли принципы создания умных систем

🌟 Главные открытия

🎯 Ключевые выводы урока:

“Логические операции - это язык, на котором разговаривают умные устройства”

“Чем больше датчиков, тем умнее робот, но тем сложнее логика”

“Правильная логика превращает простые датчики в интеллектуальную систему”

🔮 Перспективы развития:

  • Машинное обучение для автоматического создания логики
  • Нечеткая логика для работы с неопределенностью
  • Нейронные сети как альтернатива булевой логике
  • Квантовая логика для сверхбыстрых вычислений

📊 Рефлексия “Логические карточки”

🎯 Покажите карточку, соответствующую вашему пониманию:

🟢 Зеленая карточка - “Понял все логические операции и могу применять их в программах”

🟡 Желтая карточка - “В основном понял, но есть вопросы по сложным комбинациям”

🔴 Красная карточка - “Нужна дополнительная помощь с логическими операциями”

💭 Поделитесь:

  • Какая логическая операция показалась самой полезной?
  • Какую комбинацию датчиков было сложнее всего запрограммировать?
  • Где в реальной жизни вы видите применение таких логических систем?

🔮 Следующий урок: “Датчики расстояния - глаза робота”

🎯 Готовимся изучать:

  • Ультразвуковые и инфракрасные дальномеры
  • Принципы эхолокации и времени пролета
  • Программирование бесконтактного обнаружения препятствий
  • Создание роботов-разведчиков

🧠 ВЫ ОВЛАДЕЛИ ЛОГИЧЕСКИМ МЫШЛЕНИЕМ РОБОТОВ!
Теперь ваши роботы могут принимать умные решения!