ПЛАН-КОНСПЕКТ ЗАНЯТИЯ Тема: "Написание собственных функций и библиотек"
Оценка 4.8

ПЛАН-КОНСПЕКТ ЗАНЯТИЯ Тема: "Написание собственных функций и библиотек"

Оценка 4.8
Разработки уроков
docx
информатика
09.04.2022
ПЛАН-КОНСПЕКТ ЗАНЯТИЯ  Тема: "Написание собственных функций и библиотек"
4. Написание собственных функций и библиотек.docx

МУНИЦИПАЛЬНОЕ АВТОНОМНОЕ УЧРЕЖДЕНИЕ

ДОПОЛНИТЕЛЬНОГО ОБРАЗОВАНИЯ

МУНИЦИПАЛЬНОГО ОБРАЗОВАНИЯ ГОРОД КРАСНОДАР

«МЕЖШКОЛЬНЫЙ ЭСТЕТИЧЕСКИЙ ЦЕНТР»-

АССОЦИИРОВАННАЯ ШКОЛА ЮНЕСКО

 

 

 

 

 

ПЛАН-КОНСПЕКТ ЗАНЯТИЯ

 

Тема: "Написание собственных функций и библиотек"

 

 

 

 

 

 

 

 

 

 

 

Автор: Никита Олегович Шевцов,

педагог дополнительного образования

 

 

 

 

 

 

 

Краснодар, 2021

 

ПЛАН-КОНСПЕКТ

Тема: "Написание собственных функций и библиотек"

Вопросы для рассмотрения:

1.                 Пример скетча

2.                 Процесс конвертации скетча в библиотеку.

3.                 Заголовочный файл.

4.                 Файл реализации

5.                 Использование библиотеки

6.                 Отличия

7.                 Задание для детей.

 

ХОД ЗАНЯТИЯ

В начале занятия необходимо проверить наличие у детей тетрадок, ручек.

Дать под запись дату. Озвучить тему занятия, что она подразумевает. Дети включают компьютеры, начало рассмотрения вопросов.

Пример скетча

Скетч, воспроизводящий код Морзе:

int pin = 13;

 

void setup()

{

  pinMode(pin, OUTPUT);

}

 

void loop()

{

  dot(); dot(); dot();

  dash(); dash(); dash();

  dot(); dot(); dot();

  delay(3000);

}

 

void dot()

{

  digitalWrite(pin, HIGH);

  delay(250);

  digitalWrite(pin, LOW);

  delay(250);

}

 

void dash()

{

  digitalWrite(pin, HIGH);

  delay(1000);

  digitalWrite(pin, LOW);

  delay(250);

}

Данный скетч посредством мигания светодиода на выводе 13 выдает сигнал SOS.

Скетч содержит ряд частей кода, которые необходимо будет перенести в библиотеку. Во-первых, это функции dot() и dash(), которые управляют миганием светодиода. Во-вторых, это переменная ledPin, определяющая какой порт ввод/вывода использовать. И наконец, вызов функции pinMode(), устанавливающий режим вывода на используемом порту ввода/вывода.

Процесс конвертации скетча в библиотеку.

Библиотека содержит два файла: заголовочный файл (с расширением .h) и файлы реализации (с расширением .cpp). Заголовочный файл содержит характеристики библиотеки, т.е. список всего что содержится в ней. Создаваемый заголовочный файл будет называться Morse.h. Для дальнейшей работы с заголовочным файлом необходимо просмотреть содержание файла реализации.

Заголовочный файл содержит класс, в котором объявляются функций и используемые переменные:

class Morse

{

  public:

    Morse(int pin);

    void dot();

    void dash();

  private:

    int _pin;

};

Класс в данном случае это набор функций и переменных, объеденных в одном месте. Функции и переменные могут быть публичными (public), что означает общий доступ к ним всех, кто использует библиотеку, или частными (private), что означает доступ к ним только внутри класса. Каждый класс имеет специальную функцию конструктор, которая используется для создания экземпляра класса. Конструктор имеет тоже имя, что и класс, но не имеет типа возвращаемого значения.

Также заголовочный файл содержит еще несколько дополнительных строк. Во-первых, это директива #include, которая дает доступ к стандартным типам и постоянным языка программирования Arduino (директива по умолчанию добавляется к каждому скетчу, но не к библиотеке). Директива выглядит следующим образом (и находится выше объявления класса):

#include "WProgram.h"

В версиях Arduino 1.0 и выше нужно еще добавить:

#include Arduino.h

Также принято заключать содержимое заголовочного файла в следующую конструкцию:

#ifndef Morse_h

#define Morse_h

 

// директивы #include и код помещается здесь

 

#endif

Это предотвращает повторное подключение нашей библиотеки, если кто-то по ошибке дважды подключит библиотеку директивой #include.

Заголовочный файл

В начале кода библиотеки принято помещать комментарий о ее предназначении, авторе, дате и лицензии на библиотеку.

Готовый заголовочный файл содержит:

#ifndef Morse_h

#define Morse_h

 

#include "WProgram.h"

 

class Morse

{

  public:

    Morse(int pin);

    void dot();

    void dash();

  private:

    int _pin;

};

 

#endif

 

Файл реализации

Рассмотрим файл реализации Morse.cpp.

В начале кода находятся несколько директив #include. Данными директивами разрешается доступ к стандартным функциям Arduino и к характеристикам в головном файле библиотеки:

#include "WProgram.h"

#include "Morse.h"

Далее по коду находится конструктор. Он используется для создания экземпляра создаваемого класса. В данном случае пользователь задает номер используемого порта ввода/вывода через параметр. Порта устанавливается в режим вывода, а номер сохраняется в частной переменной для использования в других функциях:

Morse::Morse(int pin)

{

  pinMode(pin, OUTPUT);

  _pin = pin;

}

Код Morse:: означает, что функция принадлежит классу Morse. Нижний пробел в начале имени переменной _pin — принятое обозначение для частных переменных. Вообще, имя может быть любое, но согласно принятым конвенциям именования для частных переменных принято использовать префикс "_". Это также позволяет отличить от аргумента функции (в данном случае pin).   

Далее код, который конвертируется в библиотеку из изначального скетча, добавилось только Morse:: и изменилось имя переменной с pin, на _pin:

void Morse::dot()

{

  digitalWrite(_pin, HIGH);

  delay(250);

  digitalWrite(_pin, LOW);

  delay(250);

}

 

void Morse::dash()

{

  digitalWrite(_pin, HIGH);

  delay(1000);

  digitalWrite(_pin, LOW);

  delay(250);

}

Общепринято помещать некоторые поясняющие комментарии в начале кода файла реализации. Полный код библиотеки:

 

 

#include "WProgram.h"

#include "Morse.h"

 

Morse::Morse(int pin)

{

  pinMode(pin, OUTPUT);

  _pin = pin;

}

 

void Morse::dot()

{

  digitalWrite(_pin, HIGH);

  delay(250);

  digitalWrite(_pin, LOW);

  delay(250);

}

 

void Morse::dash()

{

  digitalWrite(_pin, HIGH);

  delay(1000);

  digitalWrite(_pin, LOW);

  delay(250);

}

 
Использование библиотеки.

Во-первых, необходимо создать папку Morse в подпапке libraries директории блокнота. Во-вторых, требуется скопировать файлы Morse.h и Morse.cpp в созданную папку. После запуска программы Arduino в меню Sketch > ImportLibrary будет находиться библиотека Morse. Библиотека будет компилироваться совместно со скетчами, использующими ее. Если при компиляции библиотеки возникли проблемы, то необходимо проверить, чтобы ее файлы были с расширениями .cpp и .h (не должно быть никаких дополнительных расширений .pde и .txt).

Изначальный скетч, переписанный  с использованием созданной библиотеки, будет выглядеть следующим образом:

#include <Morse.h>

 

Morse morse(13);

 

void setup()

{

}

 

void loop()

{

  morse.dot(); morse.dot(); morse.dot();

  morse.dash(); morse.dash(); morse.dash();

  morse.dot(); morse.dot(); morse.dot();

  delay(3000);

}

Отличия от первоначального скетча

Несколько отличий от изначального скетча:

Во-первых, добавлена директивы #include в начало скетча. Таким образом определяется доступность библиотеки Morse и ее подключение. Неиспользуемую библиотеку можно удалить, убрав директиву #include.

Во-вторых, создается экземпляр класса Morse, называемый morse:

Morse morse(13);

При выполнении данной строки (перед выполнением функции setup()) вызывается конструктор для класса Morse и принимает аргумент, данный в примере (13).

При этом функция setup() ничего не содержит, т.к. вызов функции pinMode() произошел внутри библиотеки (когда был создан экземпляр класса).

В-третьих, для вызова функций dot() и dash() необходимо прибавить префикс morse. – имя используемого экземпляра. Может быть несколько экземпляров класса Morse, каждый со своим номером порта, хранящимся в локальной переменной _pin. Вызовом функции конкретного экземпляра определяются какие переменные, используются во время вызова. При наличии следующих двух строк:

Morse morse(13);

Morse morse2(12);

внутри вызова morse2.dot(), переменная _pin будет иметь значение 12.

 

К сожалению автоматическая подсветка кода не работает с подключаемыми библиотеками. Для того чтобы подсветка заработала необходимо создать файл с названием keywords.txt. Пример:

Morse   KEYWORD1

dash    KEYWORD2

dot KEYWORD2

 

Напротив каждой строки через табуляцию стоит зарезервированное слово, и опять через табуляцию тип слова. Классы соответствуют зарезервированному слову KEYWORD1 и окрашены в оранжевый цвет; функции – KEYWORD2 и окрашены в коричневый. Для распознавания слов необходимо перезапустить среду разработки Arduino.

Созданную библиотеку желательно всегда сопровождают примером ее применения. Для этого создается папка examples в директории Morse. Затем копируется созданный ранее скетч SOS в данную папку. (Файл скетча можно найти через меню Sketch > ShowSketchFolder). После перезапуска Arduino в меню File > Sketchbook > Examples будет находиться пунктLibrary-Morse, содержащий пример. Также необходимо добавить комментарии о том, как лучше использовать библиотеку.

 

Заключительная часть занятия

Рефлексия. Итоговый опрос.

Задание: совместно с преподавателем создать библиотеку с ПИД регулятором.


 

Скачано с www.znanio.ru

МУНИЦИПАЛЬНОЕ АВТОНОМНОЕ УЧРЕЖДЕНИЕ

МУНИЦИПАЛЬНОЕ АВТОНОМНОЕ УЧРЕЖДЕНИЕ

ПЛАН-КОНСПЕКТ Тема: "Написание собственных функций и библиотек"

ПЛАН-КОНСПЕКТ Тема: "Написание собственных функций и библиотек"

Write(pin, HIGH); delay(1000); digitalWrite(pin,

Write(pin, HIGH); delay(1000); digitalWrite(pin,

Также заголовочный файл содержит еще несколько дополнительных строк

Также заголовочный файл содержит еще несколько дополнительных строк

Файл реализации Рассмотрим файл реализации

Файл реализации Рассмотрим файл реализации

Общепринято помещать некоторые поясняющие комментарии в начале кода файла реализации

Общепринято помещать некоторые поясняющие комментарии в начале кода файла реализации

Morse.h>

Morse.h>

Morse KEYWORD1 dash

Morse KEYWORD1 dash
Материалы на данной страницы взяты из открытых истончиков либо размещены пользователем в соответствии с договором-офертой сайта. Вы можете сообщить о нарушении.
09.04.2022