среда, 1 июня 2016 г.

1.11. Первая написанная программа

Урок: 1.11. Первая написанная программа

Транскрибация урока: Для начала опишем, что такое работа светофора на понятном нам русском языке, сформулируем алгоритм его работы. Когда мы говорим «светофор работает» нам понятно, что имеется в виду. Но для того, чтобы контроллер мог выполнить программу, каждое действие нужно описать предельно конкретно. Сначала можно привести пример, близкий к работе светофора из жизни. Что такое перейти дорогу? Мы все знаем с детства. Нас учили смотреть в разные стороны и так далее, но как это описать подробно? Для начала мы подходим к переходу, затем мы смотрим налево. Мы проверяем, существуют ли движущиеся машины слева, и если их не существует, двигаемся до середины дороги. После этого мы смотрим направо и проверяем, есть ли движущиеся машины справа. В случае их отсутствия переходим дорогу до конца, в случае наличия – стоим и ждем, пока они закончатся. И только тогда завершаем переход дороги. На самом деле эти действия можно описать еще более детально, вплоть до переставления ног, поворота головы и так далее. Похожим образом мы можем описать что из себя представляет работа светофора. В чем она заключается? Поочередно включаются сигналы разного цвета. Включается красный сигнал, затем, на протяжении какого-то времени в работе светофора ничего не меняется. Затем, одновременно с красным сигналом, включается желтый сигнал, и они светятся вместе на протяжении секунды. После секундной задержки оба сигнала выключаются и загорается зеленый сигнал. Затем проходит еще какое-то время, предназначенное для зеленого сигнала, он выключается, включается вновь, выключается, ну то есть мигает. После того, как зеленый помигал, на секунду включается желтый сигнал, и выключившись, передает место красному. Затем цикл повторяется. Вы уже знаете, что включение того или иного сигнала заключается в подаче напряжения на тот или иной контакт. Я надеюсь, что вы уже собрали модель светофора и подключили ее к Arduino, и теперь, на самом деле, у вас есть все, для того, чтобы написать программу для полноценной работы светофора. Вы можете сейчас поставить меня на паузу, посмотреть в описанный алгоритм, посмотреть в пример, который мы разбирали в Linked и составить код самостоятельно. Только не забывайте, что помимо непосредственно работы светофора, есть еще подготовительная фаза, когда мы настраиваем три порта, к которому подключены светодиоды на выход. Посмотрите, у нас получилась такая схема, где мы выполняем, своего рода, перевод. Сначала формулируем в нечто алгоритм на русском языке, затем переводим его на язык программирования. Дальнейшим переводом займется компилятор, создаст машинный код, который понимает контроллер. Контроллер, в свою очередь, превратит команды в определенные сигнал на определенных портах, и мы увидим работу устройства своими глазами, когда эти сигналы дойдут до светодиодов исполнительных устройств. Теперь мы можем загрузить получившийся код и посмотреть, как это работает. Давайте посмотрим какой код получился у меня. Я надеюсь, что у вас примерно такой же. Вначале я определил 3 контакта как выходы, те три контакта, куда у меня подключены светодиоды. Затем в лупе я начал включать и выключать напряжение на этих контактах. Сначала на пине, к которому подключен красный светодиод. Затем сделал задержку, пока красный горит. Затем вместе с ним включил желтый светодиод. Они некоторое время – секунду – горели вместе. А затем я выключил напряжение на обоих контактах. Хочу особенно обратить ваше внимание на то, что контроллер не обладает никаким искусственным интеллектом, и не будет ничего делать до тех пор, пока вы явно ему не скажете сделать то или иное действие. Это особенно хорошо видно в этом фрагменте. Мы включили красный светодиод, а затем вместе с ним включили желтый, и красный при этом не погас, потому что соответствующей команды не поступало. Она поступит позже, после секунды совместного свечения красного и желтого. Также обратите внимание на то, что я говорю чуть упрощенно: мы включили красный светодиод, мы включили желтый светодиод. На самом деле контроллер не имеет ни малейшего понятия о том, что подключено к его пинам. Он всего лишь навсего включает или выключает напряжение на заданном контакте. Теперь посмотрим далее. После выключения красного и желтого, я включаю зеленый. Жду 3 секунды и выключаю его. После чего трижды повторяю эти же действия, только с маленькой задержкой. Это фаза мигания зеленого сигнала. Затем осталось включить желтый, что я и делаю. А затем выключаю его. После этого цикл завершается и начинается снова с включения красного сигнала. Теперь мы, наконец, можем загрузить код для нашего первого устройства, только предварительно не забудем убедиться в том, что выбран порт и выбрана правильная плата. После этого я загружаю, в процессе мы не встречаем никаких ошибок, Пожалуйста: красный, красный, желтый, зеленый, зеленый мигает, желтый и красный. И никакого ручного управления! Ура, мы сделали первое устройство!

Часть: Видео

Модуль: Один старый и много новых знакомых

Описание модуля: Добро пожаловать! На этой неделе вас ждет введение в курс (обязательно ознакомьтесь с ним), а затем начало работы: знакомство с Arduino, средой разработки и первыми компонентами. Вы научитесь собирать схемы на макетке, напишете первую программу и получите первое готовое устройство. Не забывайте про важнейший раздел "Сделайте сами"!

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

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

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

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

Материал: