💻 Операторы ввода-вывода

От датчиков к действиям: программируем робо-интеллект

📊 Данные • ⚡ Обработка • 🤖 Действие
7 класс • Технология • 45 минут

🎯 Цель исследования

🔄 Цепочка управления роботом:

[Датчики] → [Ввод] → [Обработка] → [Вывод] → [Действие]

💡 Задачи урока:

  • 📥 Изучить операторы ввода для получения данных от датчиков
  • 📤 Освоить операторы вывода для управления роботом
  • 🔗 Связать ввод и вывод в логичные алгоритмы
  • 🛠️ Создать 4 практические программы

🧠 Как роботы “думают”?

📱 Аналогия с человеком

👁️ Человек:

Глаза → Мозг → Руки
(Вижу)  (Думаю)  (Делаю)

🤖 Робот:

Датчики → Программа → Моторы
(Сенсоры) (Алгоритм) (Исполнители)

🔍 Примеры из жизни

🚗 Автопилот Tesla:

if camera.detect_red_light():
    car.brake()
    display.show("STOP")

🏠 Умный дом:

if light_sensor.value() < 50:
    led.turn_on()
    screen.print("Освещение включено")

📱 Смартфон:

if touch_sensor.pressed():
    vibration.start()
    screen.unlock()

📥 Операторы ввода: получаем данные

🔧 Основные блоки ввода

📊 Датчик расстояния:

[Ультразвуковой датчик] → значение в см

🌈 Датчик цвета:

[Датчик цвета] → "красный", "синий", "зеленый"...

💡 Датчик освещенности:

[Датчик света] → значение 0-100%

🎛️ Кнопки:

[Кнопка нажата?] → true/false

📐 Математическая обработка

Пример с ультразвуком:

\[\text{Безопасное расстояние} = \text{Скорость робота} \times 2 \text{ секунды}\]
distance = ultrasonic_sensor.value()
safe_distance = robot_speed * 2

if distance < safe_distance:
    action_needed = True

📊 Калибровка датчика света:

\[\text{Процент освещенности} = \frac{\text{Текущее значение} - \text{Минимум}}{\text{Максимум} - \text{Минимум}} \times 100\]

🎯 Обработка сигналов

Фильтрация шума:

# Среднее из 5 измерений
readings = []
for i in range(5):
    readings.append(sensor.value())

filtered_value = sum(readings) / len(readings)

Пороговые значения:

LIGHT_THRESHOLD = 30
DISTANCE_THRESHOLD = 10

if light_sensor.value() < LIGHT_THRESHOLD:
    night_mode = True

if distance_sensor.value() < DISTANCE_THRESHOLD:
    obstacle_detected = True

📤 Операторы вывода: выполняем действия

⚙️ Управление моторами

🏃 Движение робота:

# Движение вперед
left_motor.run(speed=50)
right_motor.run(speed=50)

# Поворот направо  
left_motor.run(speed=30)
right_motor.run(speed=-30)

# Остановка
left_motor.stop()
right_motor.stop()

📏 Точное позиционирование:

\[\text{Угол поворота} = \frac{\text{Градусы поворота} \times \text{Передаточное число}}{\text{360°}}\]

💡 Индикация и обратная связь

🖥️ Вывод на экран:

screen.clear()
screen.print("Расстояние: " + str(distance) + " см")
screen.print("Режим: АВТОПИЛОТ")

🔊 Звуковые сигналы:

# Сирена при опасности
if danger_detected:
    speaker.beep(frequency=1000, duration=0.5)
    
# Мелодия при завершении задачи
speaker.play_melody([440, 523, 659])  # A, C, E

💡 Световая индикация:

if battery_low:
    led.color("red")
elif charging:
    led.color("yellow") 
else:
    led.color("green")

🎮 Интерактивность

Обратная связать с пользователем:

screen.print("Нажмите кнопку для старта")
while not button.is_pressed():
    time.sleep(0.1)

screen.print("Начинаю работу!")
led.blink("blue", times=3)

🛠️ Практическая работа

📋 4 увлекательных задания

🔦 Задание 1: “Умный светильник”

  • Считать освещенность
  • Включить LED при темноте
  • Показать значения на экране

🚗 Задание 2: “Робот-разведчик”

  • Ехать до препятствия
  • Измерить и показать расстояние
  • Подать звуковой сигнал

🌈 Задание 3: “Сортировщик цветов”

  • Определить цвет объекта
  • Переместить в нужный контейнер
  • Вести счетчик объектов

🎮 Задание 4: “Интерактивный робот”

  • Реагировать на кнопки
  • Выполнять разные команды
  • Показывать текущий режим

⏱️ План работы (35 минут)

👥 Группы по 2-3 человека

0-5 мин:   Получение оборудования, выбор задания
5-25 мин:  Программирование и тестирование
25-30 мин: Отладка и оптимизация
30-35 мин: Подготовка к демонстрации

🏆 Критерии оценки:

  • Работоспособность программы (3 балла)
  • Правильность операторов (3 балла)
  • Эффективность кода (2 балла)
  • Креативность решения (2 балла)

🎯 Связь ввода и вывода

🔄 Алгоритм реакции

Базовая структура:

while True:
    # ВВОД: получаем данные
    sensor_value = sensor.read()
    
    # ОБРАБОТКА: принимаем решение
    if sensor_value > threshold:
        action = "move_forward"
    else:
        action = "turn_around"
    
    # ВЫВОД: выполняем действие
    robot.execute(action)
    
    time.sleep(0.1)  # пауза 100 мс

🧮 Примеры вычислений

Следование по линии: \[\text{Ошибка} = \text{Центр линии} - \text{Текущее положение}\]

\[\text{Коррекция} = K_p \times \text{Ошибка}\]
line_position = color_sensor.value()  # 0-100
center = 50
error = center - line_position
correction = 0.5 * error

left_motor.run(base_speed + correction)
right_motor.run(base_speed - correction)

🎤 Демонстрация результатов

📊 Защита проектов (2 минуты на группу)

План презентации:

  1. Задача - что должен делать робот
  2. Алгоритм - как работает программа
  3. Демонстрация - показ в действии
  4. Особенности - интересные решения

❓ Вопросы для обсуждения:

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

🔍 Анализ решений

📈 Сравнение подходов

Эффективность алгоритмов:

  • Скорость реакции
  • Точность выполнения
  • Устойчивость к помехам
  • Энергопотребление

🛠️ Типичные ошибки:

  • Отсутствие фильтрации шумов
  • Слишком частое считывание датчиков
  • Неправильная калибровка
  • Отсутствие обратной связи

💡 Лучшие практики:

  • Усреднение показаний датчиков
  • Использование пороговых значений
  • Индикация текущего состояния
  • Плавное управление моторами

🤔 Рефлексия

🎯 Что освоили

✅ Изучили:

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

🚀 Научились:

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

💭 Поняли:

  • Как роботы принимают решения
  • Важность обратной связи
  • Принципы автономного поведения

🏠 Домашнее задание

📝 Творческая задача

🎯 Алгоритм “Робот-следопыт”:

Разработать программу для робота, который:

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

📋 Что сделать:

  1. Нарисовать блок-схему алгоритма
  2. Описать используемые датчики
  3. Объяснить логику принятия решений
  4. Дополнительно: написать псевдокод программы

🎉 Итоги урока

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

“Робот - это не просто механизм, а система принятия решений на основе входящей информации”

🔑 Ключевые принципы:

  • Датчики = глаза и уши робота
  • Программа = мозг робота
  • Исполнители = руки и ноги робота
  • Обратная связь = основа разумного поведения

🚀 Следующий шаг: Изучение сложных алгоритмов управления и машинного обучения для роботов

💡 Вы теперь можете программировать роботов для реакции на окружающий мир!