Различия

Показаны различия между двумя версиями страницы.

Ссылка на это сравнение

Предыдущая версия справа и слеваПредыдущая версия
Следующая версия
Предыдущая версия
products:laboratory_iot:exp1 [2020/05/03 22:18] – [Как это работает?] labuser29products:laboratory_iot:exp1 [2020/05/18 13:19] (текущий) – [Приступим] andiki
Строка 24: Строка 24:
 </file> </file>
  
-Введи код первой программы в среду программирования EsPy. Это сделать тремя способами:+Введи код первой программы в среду программирования EsPy. Это можно сделать тремя способами:
   - Набрать код программы в EsPy вручную   - Набрать код программы в EsPy вручную
   - Скопировать код и вставить его в EsPy   - Скопировать код и вставить его в EsPy
Строка 35: Строка 35:
  
 Необходимо убедиться, что EsPy установлено соединение с Лабораторией IoT Необходимо убедиться, что EsPy установлено соединение с Лабораторией IoT
-([[products:laboratory_iot:connect_and_setup|Подробнее о том, как это сделать]])+([[products:laboratory_iot:connect|Подробнее о том, как это сделать]])
 и отправить листинг интерпретатору Python, который находится в микроконтроллере. и отправить листинг интерпретатору Python, который находится в микроконтроллере.
  
-<WRAP center round alert 60%> +{{ :products:2020-05-04_12-33-42.png?nolink |}}
-Добавить картинку кнопки отправки +
-</WRAP> +
  
-Результатом должно стать мигание синего светодиода в верхнем лесом углу Лаборатории.+Результатом должно стать мигание синего светодиода в верхнем левом углу Лаборатории.
  
 {{ :products:ezgif-7-94859b24b844.gif?nolink |}} {{ :products:ezgif-7-94859b24b844.gif?nolink |}}
Строка 49: Строка 46:
 ==== Не работает? ==== ==== Не работает? ====
 Если не получилось, то необходимо еще раз проверить подключение, убедиться, что соединение настроено Если не получилось, то необходимо еще раз проверить подключение, убедиться, что соединение настроено
-верно. Для этого еще раз внимательно прочитать статью [[products:laboratory_iot:connect_and_setup|Подключение и настройка]]. Если все выполнено верно, но все равно не работает — [[products:laboratory_iot:not_working|Возможные проблемы и их устранение]]+верно. Для этого еще раз внимательно прочитать статью [[products:laboratory_iot:connect|Подключение и настройка]]. Если все выполнено верно, но все равно не работает — [[products:laboratory_iot:not_working|Возможные проблемы и их устранение]]
  
 ==== Как это работает? ==== ==== Как это работает? ====
 Теперь, когда первый эксперимент удался, самое время разобраться как и почему это работает. Теперь, когда первый эксперимент удался, самое время разобраться как и почему это работает.
  
-В первых двух строках, с помощью  мы подключаем необходимые системные библиотеки, а именно ''time'' и класс ''Pin'' из библиотеки ''machine'' +В первых двух строках, с помощью оператора ''import'' мы подключаем необходимые системные библиотеки, а именно ''time'' и класс ''Pin'' из библиотеки ''machine'' 
  
 <code python [enable_line_numbers="2", start_line_numbers_at="1"]> <code python [enable_line_numbers="2", start_line_numbers_at="1"]>
Строка 67: Строка 64:
 </WRAP> </WRAP>
  
-Вызываем функцию ''_init()'' — это функция, которую мы написали и заботливо положили в память Лаборатории IoT при производстве. Она необходима для сброса состояния микроконтроллера в начальное состояние, чтобы результаты запуска другого эксперимента не влияли на текущий. Подробнее о функции [[products:laboratory_iot:_init|здесь]].+Вызываем функцию ''_init()'' — это функция, которую мы написали и заботливо положили в память Лаборатории IoT при производстве. Она необходима для сброса состояния микроконтроллера в начальное состояние, чтобы результаты запуска другого эксперимента не влияли на текущий.
  
 <code python [enable_line_numbers="2", start_line_numbers_at="3"]> <code python [enable_line_numbers="2", start_line_numbers_at="3"]>
Строка 98: Строка 95:
     time.sleep(1)     time.sleep(1)
 </code> </code>
 +
 +Функция ''led.off()'' устанавливает низкий уровень на выводе ''led'', а функция ''led.on()'' — высокий. Таким образом мы подаем или снимаем напряжение со светодиода, который подключен к этому выводу.
 +
 +Зачем же нам ''time.sleep(1)''? Все дело в том, что микроконтроллер работает очень быстро, исполняя миллионы операций в секунду. Он может тысячи раз в секунду зажечь и потушить светодиод. Это слишком быстро, чтобы человек смог что либо заметить. Чтобы приостановить исполнение программы мы и вызываем функцию ''time.sleep''. В качестве параметра она принимает число секунд на которое нужно сделать паузу. В нашем случае мы делаем паузу на 1 секунду после зажигания светодиода и столько же после его выключения.
 +
 +Но что такое ''while True:''? Это цикл. Циклы— это важнейшие элементы программ. Они нужны, чтобы выполнять один и тот же участок кода несколько раз. В языке Python есть несколько видов циклов и ''while'' это один из них. Этот цикл выполняется до тех пор, пока выполняется условие, пока оно //истинно//. В нашем случае это константа ''True'', что переводится как //истина//. Получается, что наше условие всегда безусловно //истинно//, и наш цикл является бесконечным. Участок кода, который зажигает и гасит светодиод будет продолжаться бесконечно, пока на плату поступает питание и, пока, не будет прервано выполнение программы извне.
 +
 +Как Python понимает какой именно участок кода является //телом цикла//, какой именно участок кода необходимо повторять? Для этого в Python используются отступы. Как можно видеть код в строках с 10 по 13 начинается не с начала, а с некоторым отступом. Вот именно тот участок кода, который обладает данным отступом и есть //тело цикла//.
 +
 +<WRAP center round info 60%>
 +  * [[https://pythonworld.ru/osnovy/cikly-for-i-while-operatory-break-i-continue-volshebnoe-slovo-else.html|Подробнее о циклах в Python]]
 +  * [[https://pythonworld.ru/osnovy/sintaksis-yazyka-python.html|Подробнее о синтаксисе языка Python]]
 +</WRAP>
 +
 +==== Остановка программы ====
 +Как же прервать исполнение программы, когда она занята исполнением бесконечного цикла, ведь сама она никогда не закончится?
 +Нажмите на клавиатуре ''Ctrl+I'' или на кнопку 
 +
 +{{ :products:2020-05-04_12-35-46.png?nolink |}}
 +
 +В окне терминала появится сообщение ''KeyboardInterrupt:'' (Прерывание от клавиатуры)
 +