Использование платформы Arduino при изучении языков программирования
2 сентября 2016
Рубрика: Обзоры и мнения.
Автор: Сергей Выборнов, Венера Муллакаева.

adru_2_09_2016

Современная методика обучения языкам программирования сводится к ознакомлению учащихся со структурой, синтаксисом и алфавитом изучаемого языка на лекционных занятиях и к выполнению абстрактных (чаще математических) заданий на практических и лабораторных занятиях.

При таком преподавании большинство студентов не видят практическое применение языка программирования. Лишь небольшая часть обучаемых проявляет заинтересованность и с энтузиазмом занимается решением поставленных задач. У остальных же очень часто возникает вопрос: «Для чего нужно изучение языков программирования, если мы не будем программистами?». В данной ситуации у преподавателя нет удовлетворительного ответа на этот вопрос, так как он не может сказать, где обучаемый может применить полученные знания. В итоге у обучаемых пропадает интерес к данному предмету, что способствует снижению обучаемости.

Рассмотрим методику повышения заинтересованности студентов, обосновывая изучение языков программирования на примере разработки и написания программ для устройств, используемых на бытовом уровне, созданных на основе платформы Arduino (или его аналогов, таких как Iskra JS, Ferduino и др.).

В первую очередь познакомимся с тем, что представляет платформа Arduino, а также рассмотрим часто используемые модули, подключаемые к ней.

Arduino — одна из платформ, направленная на пользователей с начальными навыками программирования (рис. 1). Данная платформа представлена в нескольких вариантах, таких как Arduino NANO, Arduino MEGA, Arduino UNO и Arduino MINI. Основой всех платформ служит микроконтроллер с предварительно прошитым загрузчиком (bootloader) и возможностью его перепрошивки. Данный контроллер распаян на печатной плате, на которой присутствуют контроллер питания, порт подключения к компьютеру, а также штырьковые разъемы или контактные площадки для добавления новых компонентов.

adru_2_09_2016_1

Рис. 1 Arduino MEGA (слева) и Arduino NANO (справа).

Рассмотрим некоторые модули, подключаемые к Arduino:

adru_2_09_2016_2

Рис. 2. Модуль SD-карты.

adru_2_09_2016_3

Рис. 3. Звуковой модуль.

adru_2_09_2016_4

Рис. 4. Инфракрасный приемник.

adru_2_09_2016_5

Рис. 5. Светодиодный модуль.

adru_2_09_2016_6

Рис. 6. Сервопривод.

adru_2_09_2016_7

Рис. 7. Провода и макетная плата.

adru_2_09_2016_8

Рис. 8. Инфракрасный датчик движения.

  1. Модуль SD-карты — используется для управления платой без подключения к компьютеру и для сохранения данных с помощью SD-карты (рис. 2).
  2. Звуковой модуль — применяется для генерирования звуков (рис. 3).
  3. Инфракрасный приемник — применяется для управления Arduino с помощью ИК-пульта (рис. 4).
  4. Светодиодный модуль — применяется для подачи световых сигналов (рис. 5).
  5. Сервопривод — используется для поворота чего-либо на заданный угол (рис. 6).

Для подключения этих модулей к Arduino, соединения между собой и для подведения дополнительного питания можно воспользоваться как обычной пайкой, так и специальной макетной платой (breadboard) и проводами с подходящими наконечниками (рис. 7).

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

В качестве примера использования Arduino в процессе обучения рассмотрим объяснение темы «Условные операторы» с применением двух модулей, один из которых будет отвечать за входящий сигнал, а второй — в зависимости от данного сигнала будет выполнять некоторое действие.

Допустим, первый модуль — датчик движения, который может выдавать цифровой сигнал 0 или 3,3 В в зависимости от того, происходит ли движение на заданном расстоянии (рис. 8).

Второй модуль — сервопривод с максимальным поворотом на 90 градусов (рис. 6).

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

Подключаем к Arduino датчик движения, выставленный за окно и направленный на ближайшие деревья. Сервопривод устанавливаем на окно так, чтобы при повороте на 90 градусов он открывал или закрывал его. Датчик движения подключается на цифровой вход Arduino, а серво­привод — на цифровой выход. Сам Ardu­ino подключается к компьютеру посредством USB-кабеля. Питание, подаваемое по USB, недостаточно для управления сервомотором, поэтому подключаем дополнительное питание. Все подключения производим через макетную плату для удобства соединения и настройки. Далее переходим непосредственно к программированию.

Детектор движения посылает на цифровой вход сигнал высокого или низкого напряжения, обозначаемый HIGH (H) и LOW (L) в зависимости от определения движения.

Программный код будем писать в предварительно установленной среде Arduino IDE.

Для начала скачиваем и устанавливаем дополнительные библиотеки для управления подключенными устройствами. Это делается командой #include:

#include <Servo.h>

Далее объявим константы — контакты подключения устройств:

int movePin=8;

int servoPin=13.

Все программы на Arduino должны иметь два метода: 1-й — void setup () и 2-й — void loop (). Содержимое этих методов должно быть заключено в фигурные скобки ({}). Первый метод задает действия, которые будут происходить один раз при включении Arduino, чаще всего здесь инициализируются подключенные контакты.

Командой pinMode (MovePin, INPUT) установим контакт от детектора движения как «входящий», а командой pinMode (ServoPin, OUTPUT) контакт от сервопривода — как «исходящий». Это все то, что нужно в Setup.

Второй метод определяет действия, которые должны постоянно повторяться пока Arduino работает.

Детектор движения по колыханию деревьев определяет присутствие ветра и выдает исходящий сигнал 3,3 В (HIGH), если погода ветреная. Нам нужно считать это значение и в зависимости от него закрыть окно, т.е. подать сигнал на сервопривод. Для считывания цифрового сигнала используется команда digitalRead(). Используя условный оператор if, подадим команду поворота на сервопривод, если полученное значение равно HIGH, и возвращение в исходное положение в противоположном случае.

void loop ()

{if (digitalRead(movePin) == HIGH)

{servoPin.write (90);

}else {servoPin.write (0);}

В итоге получаем следующий код, который заливаем в Arduino и проверяем, как все работает (рис. 9).

adru_2_09_2016_9

Рис. 9. Готовый код программы.

Таким образом, мы рассмотрели задание постоянных и переменных величин в программе и работу условного оператора на практическом примере.

Авторы: Сергей Выборнов, Венера Муллакаева, преподаватели ТГПУ

Orphus system
Подписывайтесь на канал infoCOM.UZ в Telegram, чтобы первыми узнавать об ИКТ новостях Узбекистана
В Telegram
В WhatsApp
В Одноклассники
ВКонтакте