Использование платформы Arduino при изучении языков программирования

При таком преподавании большинство студентов не видят практическое применение языка программирования. Лишь небольшая часть обучаемых проявляет заинтересованность и с энтузиазмом занимается решением поставленных задач. У остальных же очень часто возникает вопрос: «Для чего нужно изучение языков программирования, если мы не будем программистами?» . В данной ситуации у преподавателя нет удовлетворительного ответа на этот вопрос, так как он не может сказать, где обучаемый может применить полученные знания. В итоге у обучаемых пропадает интерес к данному предмету, что способствует снижению обучаемости.
Рассмотрим методику повышения заинтересованности студентов, обосновывая изучение языков программирования на примере разработки и написания программ для устройств, используемых на бытовом уровне, созданных на основе платформы Arduino (или его аналогов, таких как Iskra JS, Ferduino и др.).
В первую очередь познакомимся с тем, что представляет платформа Arduino, а также рассмотрим часто используемые модули, подключаемые к ней.
Arduino — одна из платформ, направленная на пользователей с начальными навыками программирования (рис. 1). Данная платформа представлена в нескольких вариантах, таких как Arduino NANO, Arduino MEGA, Arduino UNO и Arduino MINI. Основой всех платформ служит микроконтроллер с предварительно прошитым загрузчиком (bootloader) и возможностью его перепрошивки. Данный контроллер распаян на печатной плате, на которой присутствуют контроллер питания, порт подключения к компьютеру, а также штырьковые разъемы или контактные площадки для добавления новых компонентов.

Рис. 1 Arduino MEGA (слева) и Arduino NANO (справа).
Рассмотрим некоторые модули, подключаемые к Arduino:

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

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

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

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

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

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

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

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

Рис. 9. Готовый код программы.
Таким образом, мы рассмотрели задание постоянных и переменных величин в программе и работу условного оператора на практическом примере.
Авторы: Сергей Выборнов, Венера Муллакаева, преподаватели ТГПУ

Top News