понедельник, 18 июля 2016 г.

4.13. Ошибки, которые часто встречаются

Урок: 4.13. Ошибки, которые часто встречаются

Транскрибация урока: Прежде чем начинать собирать нашу поливалку воедино, сделаем небольшую передышку и поговорим о самых частых ошибках, которые случаются при работе в среде разработки Arduino. Смотрите, я сейчас возьму нашу заготовку для конечного автомата, которая заведомо неполная, и попробую ее скомпилировать. Тут же мы видим кучу сообщений об ошибках. Я хочу, чтоб вы перестали бояться вот этой вот консоли, где выводятся эти сообщения, и читали, что там написано. Очень полезно, если вы просто понимаете английский, если нет, то можете просто запомнить, как выглядят часто случающиеся сообщения об ошибках. Здесь нам закономерно говорят о том, что 'WebRequest', 'CheckClimate', 'CheckWater', 'Watering', 'Alarm', 'SendPage', все вот эти функции не были объявлены в данной области видимости. Вот это вот — was not declared in this scope. Подобное сообщение вы можете получить в отношении функций или переменных. Соответственно, если вы не определили функцию, компилятор будет на это ругаться. Если это функция, которую придумывали вы сами, проверьте, как вы ее определили. Если это определение. Если вы используете библиотечную функцию, убедитесь, что вы библиотеку подключили, а сами файлы в библиотеке лежат там, где надо. Обычно Arduino кладет их в папку «Мои документы», Arduino libraries. Кроме этого, такая ошибка может быть, если вы пытаетесь вызвать какую-то заведомо имеющуюся функцию, но делаете это с ошибкой. Проверьте правильность написания имени функции. Такая же история с переменными. Но здесь еще нужно учитывать область их видимости. Помните, мы говорили про глобальные и локальные переменные? Если вы пытаетесь из одной функции вызвать локальную переменную, объявленную в другой функции, вы увидите такое сообщение. Или если вы вовсе забыли объявить ту или иную переменную и пытаетесь к ней обратиться. Какие еще ошибки могут часто встречаться? Сейчас я временно оставлю вот этот вот скетч с автоматом, чтобы больше его не портить, и возьму стандартный Blink, [ПАУЗА] и немножко его испорчу. Например, забуду фигурную скобку, попытаюсь скомпилировать. И мы видим, что снова возникает ошибка. Да, но здесь, если даже бегло глазами посмотреть, видно, что речь идет какая-то про фигурные скобки. Проверьте парность фигурных скобок. Я сейчас верну эту скобку на место, но вообще еще раз порекомендую вам грамотно форматировать код, то есть после открывающейся фигурной скобки делать еще один отступ Tab, а когда скобка закрывается, соответственно, у вас на одну табуляцию все возвращается обратно. Тогда вам легко будет увидеть соответствие скобок друг другу. Итак, скобку я возвращаю, но например, забуду точку с запятой. Здесь также нам явно показывают, что ожидалась точка с запятой перед фигурной скобкой. С вызовом функции может быть связана ошибка также про непарные, но на этот раз круглые скобки. Если мы в качестве параметра передаем вызов другой функции, то нам нужно закрыть круглые скобки сначала от внутренней функции, которую передаем параметром, а затем от функции, в которую мы ее передаем. Также не забывайте про парные круглые скобки. Кроме этого, когда вы вызываете какую-то функцию, нужно ей передать столько параметров, сколько она ожидает. Ну, это довольно очевидно. И у вас также может быть сообщение о том, что ожидалось другое количество параметров. Ну мне чаще всего попадаются такие ошибки, которые выдает компилятор, но еще бывает досадная ошибка, о которой компилятор ничего не скажет, потому что с его точки зрения код выглядит нормально. Это когда вы путаете «=» и «= =». То есть оператор присваивания, который помещает то, что стоит справа от него, туда, в то место, которое находится слева от него. И логический оператор сравнения, то есть равенство, проверка на равенство. Часто можно забыть, например, в условном операторе про двойное равенство и написать, например, if (a = b). В этом случае у вас не произойдет сравнения, то есть результатом этого действия будет не логическая 1 в случае a = b, а a в любом случае станет равно b. То есть вы в этом месте присвоите значение a, значение b переменной a. Про это тоже не стоит забывать. Ну, и кроме ошибок, связанных с кодом программы, у нас, когда мы работаем с Arduino, могут быть ошибки, связанные с загрузкой скетча в плату. Самая частая причина — это когда физически забыли подключить провод. Затем, можно забыть проверить, верная ли модель платы выбрана и отмечен ли порт, который появляется, когда мы плату подсоединяем. Если с этим все в порядке, случаются ситуации, когда где-то в схеме, например, присутствует короткое замыкание, и регулятор напряжения выключает связь с компьютером, чтобы не испортить USB. Тогда снимите все платы расширения, отключите все компоненты и попробуйте загрузить скетч. Если тогда все вышло, ищите в схеме замыкание. Ну и иногда случается, что вы забыли закрыть монитор порта или наш любимый визуализатор аналогового сигнала... В этом случае тоже загрузить новый скетч не получится, проверьте, закройте. Конечно же, это далеко не все случаи, которые могут встретиться в вашей практике, но добрую половину возможных ошибок мы с вами рассмотрели. Я надеюсь, что они вам не будут мешать практиковаться.

Часть: Видео

Модуль: Как полить цветок из другого города

Описание модуля: После этой недели вы сможете соединять устройство с сетью, планировать его создание заранее, управлять мощной нагрузкой и давать правильное питание вашему созданию.

Курс: Строим роботов и другие устройства на Arduino. От светофора до 3D-принтера

Описание курса: На протяжении тысячелетий люди усовершенствовали орудия труда, изучали силы природы и подчиняли их себе, использовали их энергию для работы машин, а в прошлом веке создали машины, которые могут управлять другими машинами. Теперь создание устройств, которые взаимодействуют с физическим миром, доступно даже школьнику.

Наш курс состоит из серии практических задач про создание вещей, которые работают сами: изучают мир, принимают решения и действуют – двигаются, обмениваются данными друг с другом и с человеком, управляют другими устройствами. Мы покажем, как собирать эти устройства и программировать их, используя в качестве основы платформу Arduino.

Пройдя этот курс, вы сможете создавать устройства, которые считывают данные о внешнем мире с разнообразных датчиков, обрабатывают информацию, получают и отправляют данные на ПК, в Интернет, на мобильные устройства, управляют индикацией и движением. Создание устройств будет включать проектирование, изучение компонентов, сборку схем, написание программ, диагностику. Попутно с созданием самих устройств вы сделаете визуализацию на ПК, создадите веб-страницу, которую будет демонстрировать одно из ваших устройств, а также разберетесь с устройством и работой FDM 3D-принтера.

Помимо тех, кто увлекается робототехникой или стремится расширить кругозор и свои навыки, курс будет полезен всем, кто сталкивается с задачами бытовой и производственной автоматизации, а также занимается промышленным дизайном, рекламой и искусством.

Курс не требует специальных знаний у слушателей, доступен даже ученикам старших классов средней школы. Плюсом будут навыки программирования и владение английским языком на уровне чтения технической документации, однако обязательным это не является.

Весь курс посвящен практике и самым лучшим решением для вас будет раздобыть электронику, повторять показанные примеры и экспериментировать самостоятельно.

Программа:
  • Неделя 1 Один старый и много новых знакомых
  • Неделя 2 Контроллер изучает мир
  • Неделя 3 Цель обнаружена
  • Неделя 4 Как полить цветок из другого города
  • Неделя 5 Мобильный робот
  • Неделя 6 Как создать новый предмет за час
Преподаватель: Алексей Перепелкин (1), Дмитрий Савицкий (2)

Описание преподавателя: (1) Алексей Перепёлкин занимается развитием робототехники на базе ЛИОТ МФТИ. В 2012 году открыл для себя новое захватывающее чувство – когда устройство, которое сам построил и запрограммировал, работает. Свернул с финансовой дорожки и создал кружок робототехники для подростков. Готовил их к соревнованиям. Стал посещать конференции, а затем проводил мастер-классы для тех, кто тоже хочет организовать занятия. Совместно с коллегами в 2013 году разработал новые соревнования – Робопрофи – для конкурса Робот для жизни и провел их. В 2014 году впервые провел Arduino-номинацию на фестивале Робофест, а для российского финала Russian Robot Olympiad 2014 сделал творческую категорию. С тех пор эти соревнования стали регулярными. Летом 2014 провел двухнедельную мастерскую в детском лагере Никола-Ленивца, а затем преподавал в выездной школе, посвященной программированию и робототехнике, которую провели ABBYY и Яндекс. В 2015 году стал руководителем направления робототехники в GoTo Camp, выездных школах, где участники создали десятки проектов, от прототипов умных домов и операторских тележек до робота-бубниста и принтера для незрячих. В 2014 году с коллегами начал проект Роболабы: мероприятия для школьников и студентов, где участники параллельно решают усложненные задачи, а затем проводят рефлексию сделанной работы и оценивают чужие в ходе серии мероприятий.

(2) Физик, научный сотрудник, выпускник МФТИ. Запустил кружок робототехники в 2011 году. Рассказал Алексею Перепелкину о том, как здорово вести кружок робототехники. Рассказал об этом еще целому ряду людей. Побеждал со своими командами на соревнованиях. Проводил проектную работу с участниками исследовательской выездной школы МКШ с 2013 года, где руководил реализацией физических и робототехнических проектов, например, «Вслед за солнцем», в котором изучалась эффективность динамической ориентации солнечных батарей на солнце. Вместе с коллегами разрабатывал и был судьей Робопрофи. Участвовал в подготовке проекта Роболабы. Вновь пришел в МФТИ для проведения факультативного курса «Основы создания киберфизических устройств»

Организатор: Лаборатория инновационных образовательных технологий МФТИ (1), Лаборатория инновационных образовательных технологий МФТИ (2)

Описание организатора: (2) Московский физико-технический институт (неофициально известный как МФТИ или Физтех) является одним из самых престижных в мире учебных и научно-исследовательских институтов. Он готовит высококвалифицированных специалистов в области теоретической и прикладной физики, прикладной математики, информатики, биотехнологии и смежных дисциплин. Физтех был основан в 1951 году Нобелевской премии лауреатами Петром Капицей, Николаем Семеновым, Левом Ландау и Сергеем Христиановичем. Основой образования в МФТИ является уникальная «система Физтеха»: кропотливое воспитание и отбор самых талантливых абитуриентов, фундаментальное образование высшего класса и раннее вовлечение студентов в реальную научно-исследовательскую работу. Среди выпускников МФТИ есть Нобелевские лауреаты, основатели всемирно известных компаний, известные космонавты, изобретатели, инженеры.

Категория: Компьютерные науки

Описание категории: Специализации и курсы по компьютерным наукам посвящены разработке и дизайну программного обеспечения, алгоритмическому мышлению, человеко-компьютерному взаимодействию, языкам программирования и истории вычислительной науки. Курсы в этой широкой области помогут вам мыслить абстрактно, методически подходить к проблемам и вырабатывать качественные решения.

Тематика: Разработка ПО

Материал: