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

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

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

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

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

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

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

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

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

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

👁️ Человек:

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

🤖 Робот:

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

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

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

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

🏠 Умный дом:

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

📱 Смартфон:

1if touch_sensor.pressed():
2    vibration.start()
3    screen.unlock()

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

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

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

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

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

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

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

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

🎛️ Кнопки:

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

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

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

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

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

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

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

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

1# Среднее из 5 измерений
2readings = []
3for i in range(5):
4    readings.append(sensor.value())
5
6filtered_value = sum(readings) / len(readings)

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

1LIGHT_THRESHOLD = 30
2DISTANCE_THRESHOLD = 10
3
4if light_sensor.value() < LIGHT_THRESHOLD:
5    night_mode = True
6
7if distance_sensor.value() < DISTANCE_THRESHOLD:
8    obstacle_detected = True

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

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

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

 1# Движение вперед
 2left_motor.run(speed=50)
 3right_motor.run(speed=50)
 4
 5# Поворот направо  
 6left_motor.run(speed=30)
 7right_motor.run(speed=-30)
 8
 9# Остановка
10left_motor.stop()
11right_motor.stop()

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

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

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

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

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

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

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

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

1if battery_low:
2    led.color("red")
3elif charging:
4    led.color("yellow") 
5else:
6    led.color("green")

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

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

1screen.print("Нажмите кнопку для старта")
2while not button.is_pressed():
3    time.sleep(0.1)
4
5screen.print("Начинаю работу!")
6led.blink("blue", times=3)

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

 1while True:
 2    # ВВОД: получаем данные
 3    sensor_value = sensor.read()
 4    
 5    # ОБРАБОТКА: принимаем решение
 6    if sensor_value > threshold:
 7        action = "move_forward"
 8    else:
 9        action = "turn_around"
10    
11    # ВЫВОД: выполняем действие
12    robot.execute(action)
13    
14    time.sleep(0.1)  # пауза 100 мс

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

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

\[\text{Коррекция} = K_p \times \text{Ошибка}\]
1line_position = color_sensor.value()  # 0-100
2center = 50
3error = center - line_position
4correction = 0.5 * error
5
6left_motor.run(base_speed + correction)
7right_motor.run(base_speed - correction)

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

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

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

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

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

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

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

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

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

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

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

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

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

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

🤔 Рефлексия

🎯 Что освоили

✅ Изучили:

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

🚀 Научились:

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

💭 Поняли:

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

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

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

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

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

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

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

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

🎉 Итоги урока

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

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

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

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

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

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