3.04.1. Практикум.md
Эти задачи помогут вам освоить циклы while
и for
для управления платой Рудирон
. Вы будете писать программы для реальных ситуаций, таких как подсчёт нажатий кнопки или симуляция показаний датчика, и проверять результаты через монитор порта. Думайте, как использовать циклы, чтобы автоматизировать повторяющиеся задачи, и попробуйте самостоятельно написать код!
Задача №1. Подсчёт до лимита
Введение
Вы создаёте устройство на Рудироне
, которое отсчитывает определённое количество событий, например, считает посетителей на выставке. Программа должна считать до тех пор, пока не будет достигнут лимит в 5 событий, и выводить каждое значение в монитор порта.
Задание
Напишите программу, которая создаёт переменную count
типа int
со значением 0
. Используйте цикл while
, чтобы в каждой итерации увеличивать count
на 1 и выводить его новое значение. Цикл должен остановиться, как только count
достигнет 5.
Вопросы для размышления:
1. Почему для этой задачи подходит цикл while
?
2. Что произойдёт, если изменить условие с count < 5
на count <= 5
?
3. Как можно вывести сообщение «Лимит достигнут» после завершения цикла?
Задача №2. Сигнал тревоги
Введение
Ваш робот на Рудироне
должен подать сигнал тревоги, мигнув светодиодом ровно 4 раза. Программа должна имитировать это мигание, выводя состояние светодиода («Включён» или «Выключён») в монитор порта. Дайте роботу возможность сообщить о проблеме!
Задание
Напишите программу, которая использует цикл for
, чтобы 4 раза вывести в монитор порта сообщения «Включён» и «Выключён» с интервалом в полсекунды между ними (используйте delay(500)
).
Вопросы для размышления:
1. Почему для этой задачи удобен цикл for
?
2. Что произойдёт, если увеличить количество миганий до 6?
3. Как добавить в программу реальное управление встроенным светодиодом L1
?
Задача №3. Симуляция показаний датчика
Введение
Вы программируете умный дом на Рудироне
, где датчик температуры отправляет данные каждые 2 секунды. Чтобы протестировать систему, нужно сымитировать его работу, генерируя случайные значения от 20 до 30 °C.
Задание
Напишите программу, которая использует цикл for
для генерации и вывода 5 случайных значений температуры. Используйте функцию random(20, 31)
. Между выводами должна быть пауза в 2 секунды (delay(2000)
). Не забудьте инициализировать генератор случайных чисел с помощью randomSeed(analogRead(A0))
.
Вопросы для размышления:
1. Почему важно использовать randomSeed()
для симуляции?
2. Что произойдёт, если изменить интервал вывода на 1 секунду?
3. Как расширить диапазон генерируемых температур, например, до 15–35 °C?
Задача №4. Обратный отсчёт
Введение
Вы готовите робота на Рудироне
к старту миссии, и нужно запрограммировать обратный отсчёт от 5 до 1. Программа должна выводить каждую секунду новое значение счётчика в монитор порта.
Задание
Напишите программу, которая использует цикл for
для обратного отсчёта от 5 до 1. В каждой итерации цикла выводите текущее значение счётчика и делайте паузу в 1 секунду (delay(1000)
).
Вопросы для размышления:
1. Чем цикл for
для обратного отсчёта отличается от прямого?
2. Что произойдёт, если начать отсчёт с 10 вместо 5?
3. Как добавить сообщение «Старт!» после завершения отсчёта?
Задача №5. Проверка состояния датчиков
Введение
Ваша система умного дома на Рудироне
контролирует 3 датчика. Нужно циклически проверять их состояние, случайно присваивая каждому статус «ОК» или «Ошибка», и выводить результаты в монитор порта.
Задание
Напишите программу, которая использует цикл for
для проверки 3 датчиков (с номерами от 1 до 3). Для каждого датчика сгенерируйте случайное состояние (0 или 1) с помощью random(0, 2)
и выведите в монитор порта сообщение «Датчик N: ОК» (если 0) или «Датчик N: Ошибка» (если 1).
Вопросы для размышления:
1. Как random()
помогает симулировать состояние датчиков?
2. Что произойдёт, если увеличить количество датчиков до 5?
3. Как изменить программу, чтобы она выводила сообщения только о датчиках с ошибками?
Молодцы, вы научились использовать циклы, чтобы Рудирон
выполнял действия многократно и автоматизировал задачи! Если какая-то задача не получилась, вы можете посмотреть решения в файле с ответами. Теперь переходите к следующему параграфу, чтобы научиться хранить и обрабатывать наборы данных
- Страницы
- 1. Введение
- 1.01. Лабораторная работа №1.1
- 1.02. Лабораторная работа №1.2
- 1.03. Лабораторная работа №1.3
- 1.04. Лабораторная работа №1.4
- 1.05. Лабораторная работа №1.5
- 2. Основы электроники
- 2.01. Электрический ток и параметры цепи
- 2.01.1. Лабораторная работа №2.1.1
- 2.01.2. Лабораторная работа №2.1.2
- 2.02. Сопротивление в цепи
- 2.02.1. Лабораторная работа №2.2.1
- 2.02.2. Лабораторная работа №2.2.2
- 2.03. Полупроводники
- 2.03.1. Лабораторная работа №2.3.1
- 2.03.2. Лабораторная работа №2.3.2
- 3. Основы программирование на C++
- 3.01. Типы данных и переменные
- 3.01.1. Практикум
- 3.02. Операторы в C++
- 3.02.1. Практикум
- 3.03. Структуры ветвления
- 3.03.1. Практикум
- 3.04. Структуры повторения
- 3.04.1. Практикум
- 3.05. Массивы
- 3.05.1. Практикум
- 3.06. Функции
- 3.06.1. Практикум
- 3.07. Решения задач
- 4. Программирование микроконтроллеров
- 4.01. Цифровые сигналы и GPIO
- 4.01.1. Лабораторная работа №4.1.1
- 4.01.2. Лабораторная работа №4.1.2
- 4.01.3. Лабораторная работа №4.1.3
- 4.01.4. Лабораторная работа №4.1.4
- 4.01.5. Лабораторная работа №4.1.5
- 4.01.6. Лабораторная работа №4.1.6
- 4.01.7. Лабораторная работа №4.1.7
- 4.01.8. Лабораторная работа №4.1.8
- 4.02. Аналоговые сигналы и ШИМ
- 4.02.1. Лабораторная работа №4.2.1
- 4.02.2. Лабораторная работа №4.2.2
- 4.02.3. Лабораторная работа №4.2.3
- 4.02.4. Лабораторная работа №4.2.4
- 4.02.5. Лабораторная работа №4.2.5
- 4.03. Аналоговый сигнал и АЦП
- 4.03.1. Лабораторная работа №4.3.1
- 4.03.2. Лабораторная работа №4.3.2
- 4.03.3. Лабораторная работа №4.3.3
- 4.03.4. Лабораторная работа №4.3.4
- 4.03.5. Лабораторная работа №4.3.5
- 4.04. Аналоговый сигнал и ЦАП
- 4.04.1. Лабораторная работа №4.4.1
- 4.04.2. Лабораторная работа №4.4.2
- 4.05. Генерация и измерение импульсов
- 4.05.1. Лабораторная работа №4.5.1
- 4.05.2. Лабораторная работа №4.5.2
- 4.06. Аппаратные прерывания
- 4.06.1. Лабораторная работа №4.6.1
- 4.06.2. Лабораторная работа №4.6.2
- 4.07. Псевдопараллелизм
- 4.07.1. Лабораторная работа №4.7.1
- 4.07.2. Лабораторная работа №4.7.2
- 4.08. Интерфейсы связи - UART
- 4.08.1. Лабораторная работа №4.8.1
- 4.09. Интерфейсы связи - I2C
- 4.09.1. Лабораторная работа №4.9.1
- 4.10. Интерфейсы связи - SPI
- 4.10.1. Лабораторная работа №4.10.1
- home
-
imgs
- 1. Введение
- 1.01. Лабораторная работа №1.1
- 1.02. Лабораторная работа №1.2
- 1.03. Лабораторная работа №1.3
- 1.04. Лабораторная работа №1.4
- 1.05. Лабораторная работа №1.5
- 2. Основы электроники
- 2.01. Электрический ток и параметры цепи
- 2.01.1. Лабораторная работа №2.1.1
- 2.01.2. Лабораторная работа №2.1.2
- 2.02. Сопротивление в цепи
- 2.02.1. Лабораторная работа №2.2.1
- 2.02.2. Лабораторная работа №2.2.2
- 2.03. Полупроводники
- 2.03.1. Лабораторная работа №2.3.1
- 2.03.2. Лабораторная работа №2.3.2
- 3. Основы программирование на C++
- 3.01. Типы данных и переменные
- 3.01.1. Практикум
- 3.02. Операторы в C++
- 3.02.1. Практикум
- 3.03. Структуры ветвления
- 3.03.1. Практикум
- 3.04. Структуры повторения
- 3.04.1. Практикум
- 3.05. Массивы
- 3.05.1. Практикум
- 3.06. Функции
- 3.06.1. Практикум
- 3.07. Решения задач
- 4. Программирование микроконтроллеров
- 4.01. Цифровые сигналы и GPIO
- 4.01.1. Лабораторная работа №4.1.1
- 4.01.2. Лабораторная работа №4.1.2
- 4.01.3. Лабораторная работа №4.1.3
- 4.01.4. Лабораторная работа №4.1.4
- 4.01.5. Лабораторная работа №4.1.5
- 4.01.6. Лабораторная работа №4.1.6
- 4.01.7. Лабораторная работа №4.1.7
- 4.01.8. Лабораторная работа №4.1.8
- 4.02. Аналоговые сигналы и ШИМ
- 4.02.1. Лабораторная работа №4.2.1
- 4.02.2. Лабораторная работа №4.2.2
- 4.02.3. Лабораторная работа №4.2.3
- 4.02.4. Лабораторная работа №4.2.4
- 4.02.5. Лабораторная работа №4.2.5
- 4.03. Аналоговый сигнал и АЦП
- 4.03.1. Лабораторная работа №4.3.1
- 4.03.2. Лабораторная работа №4.3.2
- 4.03.3. Лабораторная работа №4.3.3
- 4.03.4. Лабораторная работа №4.3.4
- 4.03.5. Лабораторная работа №4.3.5
- 4.04. Аналоговый сигнал и ЦАП
- 4.04.1. Лабораторная работа №4.4.1
- 4.04.2. Лабораторная работа №4.4.2
- 4.05. Генерация и измерение импульсов
- 4.05.1. Лабораторная работа №4.5.1
- 4.05.2. Лабораторная работа №4.5.2
- 4.06. Аппаратные прерывания
- 4.06.1. Лабораторная работа №4.6.1
- 4.06.2. Лабораторная работа №4.6.2
- 4.07. Псевдопараллелизм
- 4.07.1. Лабораторная работа №4.7.1
- 4.07.2. Лабораторная работа №4.7.2
- 4.08. Интерфейсы связи - UART
- 4.08.1. Лабораторная работа №4.8.1
- 4.09. Интерфейсы связи - I2C
- 4.09.1. Лабораторная работа №4.9.1
- 4.10. Интерфейсы связи - SPI
- 4.10.1. Лабораторная работа №4.10.1
- home