Показаны различия между двумя версиями страницы.
| Следующая версия | Предыдущая версия | ||
| products:aruno:exp10 [2020/05/29 12:35] – создано alexnik | products:aruno:exp10 [2020/06/01 12:28] (текущий) – alexnik | ||
|---|---|---|---|
| Строка 1: | Строка 1: | ||
| ===== Эксперимент 10. Программный выключатель===== | ===== Эксперимент 10. Программный выключатель===== | ||
| + | Монитор порта можно использовать не только для вывода значения, | ||
| + | Соберем проект в котором будем управлять включением и выключением светодиода посредством отправки команд через монитор порта.\\ | ||
| ==== Схема эксперимента ==== | ==== Схема эксперимента ==== | ||
| {{ : | {{ : | ||
| Строка 9: | Строка 10: | ||
| ==== Программный код эксперимента ==== | ==== Программный код эксперимента ==== | ||
| - | < | + | < |
| - | void setup() { | + | const int Led = 2; |
| - | | + | |
| - | } | + | |
| - | + | ||
| - | void loop() { | + | |
| - | digitalWrite(2, | + | |
| - | delay(1000); | + | |
| - | digitalWrite(led, | + | |
| - | delay(1000); | + | |
| - | } | + | |
| - | </ | + | |
| - | Убедитесь, | + | void setup() { |
| - | Перепишите | + | |
| + | Serial.println(" | ||
| + | | ||
| + | } | ||
| - | Наша программа состоит из двух стандартных функций **//setup()//** , в теле которой расположено одно выражение и функции **// | + | void loop() { |
| - | Каждое выражение — это приказ процессору что — то сделать.\\ | + | |
| - | Выражения | + | |
| - | Как | + | // Если команда |
| - | После завершения работы **//setup()//** вызывается функция **//loop()//**, которая выполняется в бесконечном цикле.\\ | + | |
| + | | ||
| + | | ||
| + | } | ||
| + | </file> | ||
| - | Теперь давайте попробуем понять почему написанная программа приводит в итоге к миганию светодиода.\\ | + | Для взаимодействия |
| - | Как известно, | + | Для удобства пользователя, здесь же выводим в монитор |
| - | В нашем примере мы управляем светодиодом | + | В основном цикле |
| - | Это делается выражением в функции setup(): | + | В условиях операторов **if** |
| - | pinMode(2, OUTPUT); | + | |
| - | <WRAP center round tip 60%> | + | |
| - | Предназначение функция setup(): настроить | + | |
| - | </ | + | |
| - | В функции setup() вызывается функция с именем pinMode(), которая устанавливает заданный по номеру пин в определенный режим: вход или выход. О каком пине и о каком режиме идёт речь | + | |
| - | <WRAP center round tip 60%> | + | |
| - | Уточняющие | + | |
| - | </ | + | |
| - | Перейдём | + | |
| - | <WRAP center round tip 60%> | + | |
| - | Функция loop() называется основным циклом программы и предназначена | + | |
| - | </ | + | |
| - | Пройдёмся по выражениям по порядку.\\ | + | |
| - | Первое выражение — это вызов встроенной функции digitalWrite().\\ Она | + | |
| - | Второе выражение вызов функции delay().\\ Функция delay() — это, встроенная функция, которая заставляет | + | |
| - | Как только 1000 мс истекают, процессор просыпается и переходит к следующему выражению. В нашем примере это снова вызов знакомой нам встроенной функции digitalWrite(). Правда на этот раз | + | |
| - | Четвертое выражение снова вызов функции delay() c аргументом 1000 мс.\\ | + | |
| - | По истечении установленного времени выполнение снова передаётся к первому | + | |
| - | Если коротко описать работу программы, | + | |
| - | 1. Поджигаем светодиод\\ | + | |
| - | 2. Спим 1000 миллисекунд\\ | + | |
| - | 3. Гасим светодиод\\ | + | |
| - | 4. Спим 1000 миллисекунд\\ | + | |
| - | 5. Переходим к пункту 1\\ | + | |
| - | Таким образом мы получили проект с маячком, | + | |
| ==== Дополнительное задание ==== | ==== Дополнительное задание ==== | ||
| <WRAP center round tip 60%> | <WRAP center round tip 60%> | ||
| - | Попробуй | + | Попробуй |
| </ | </ | ||