Написание библиотеки для Arduino
Данный документ описывает создание библиотеки для Arduino. Объяснение начнется с написания скетча передачи кода Морзе посредством светодиода. Затем будет показано как конвертировать скетч в библиотеку. Это позволит другим пользователям легко использовать созданный код, обновлять и дополнять его.
Скетч, воспроизводящий код Морзе:
int pin = 13;
void setup()
{
7.3.1 Библиотеки Arduino.docx
«Роботты техника». 5ші деңгей. 1 сабақ.
Сабақтың тақырыбы: Arduino үшін кітапхана жазу.
Сабақтың ұзақтығы: 2 сағ.
Arduino үшін кітапхана жазу
Бұл құжат Arduino үшін кітапхана құруды сипаттайды. Түсіндіру жарықдиод
арқылы Морзе кодын беру скетчін жазудан басталады. Содан кейін скетчті
кітапханаға қалай айырбастау керектігі көрсетіледі. Бұл басқа
пайдаланушыларға құрылған кодты оңай пайдалануға, жаңартуға және оны
толықтыруға мүмкіндік береді.
Морзе кодын жаңғырту скетчі:
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() атқарымын шақыру.
Скетчті кітапханаға айырбастау үдерісі
Кітапхананың екі файлы бар: атауына арналған файл (кеңейтумен .Һ) және
іске асыру файлдары (кеңейтумен .срр). Атауына арналған файлдың кітапхана
сипаттамасы, яғни онда бар барлығының тізімі. Құрылатын атауына арналған
файл Morse.h деп аталатын болады. Атауына арналған файлмен әрі қарай
жұмыс істеу үшін іске асыру файлының мазмұнын қарау керек.
Атауына арналған файлдың жіктелімі бар, онда атқарымдар мен
пайдаланылатын ауыспалылар мәлімденеді:
class Morse
{
public:
Morse(int pin);
void dot();
void dash();
private:
int _pin;
}; Бұл жағдайда жіктелім ол бір орынға біріктірілген атқарымдар мен
ауыспалылардың жиынтығы. Атқарымдар мен ауыспалылар көпшілік (public)
болуы мүмкін, ол кітапхананы пайдаланатын барлығының оларға ортақ
қолжетімділігін білдіреді немесе жеке (private) болуы мүмкін, ол тек жіктелім
ішінде оған қолжетімділікті білдіреді. Әрбір жіктелімнің арнайы
құрылымдаушы атқарымы бар, ол жіктелімнің данасын құру үшін
пайдаланылады. Құрылымдаушының жіктелім сияқты аты болады, бірақ
қайтарылатын мәнді түрі жоқ.
Сонымен бірге атауына арналған файлдың бірнеше қосымша жолы бар.
Біріншіден, ол стандарты түрлер мен Arduinoны бағдарламалаудың тұрақты
тіліне қолжетімділік беретін #include директивасы (директива әдепкі қалпы
бойынша кітапханаға емес, әрбір скетчке қосылады). Директива келесідей
үлгіде болады (және жіктелім хабарлауынан жоғары болады):
#include "WProgram.h"
Arduino 1.0 нұсқаларында және жоғарыда мыналарды қосу керек:
#include Arduino.h
Атауына арналған файлдың ішіндегісі келесі құрылымдаушының құрамына
кіреді:
#ifndef Morse_h
#define Morse_h
// #include директивалар мен код осы жерде орналастырылады
#endif
Ол егер біреу қателесіп #include директивасының кітапханасын екі рет қосса,
біздің кітапхананың қайтадан қосылуын болдырмайды.
Кітапхана кодының басында кітапханаға оның бағытталуы, авторы, күні және
лицензиясы туралы түсінік орналастыру керек.
Дайын атауына арналған файл: /*
Morse.h Library for flashing Morse code.
Created by David A. Mellis, November 2, 2007.
Released into the public domain.
*/
#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);
}
Кейбір айқындаушы түсініктерді іске асыру файлы кодының алдына
орналастыруды көпшілік мақұлдаған. Кітапхананың толық коды:
/*
Morse.cpp Library for flashing Morse code.
Created by David A. Mellis, November 2, 2007.
Released into the public domain.
*/ #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);
}
Кітапхананы пайдалану.
Біріншіден, блокнот директориясының libraries кіші бумасында Morse
бумасын ашу керек. Екіншіден, ашылған бумаға Morse.h және Morse.cpp
көшіріп алу талап етіледі. Arduino бағдарламасы іске қосылғаннан кейін
Sketch > ImportLibrary мәзірінде Morse кітапханасы болады. Кітапхана оны
пайдаланатын скетчтермен бірлесіп құрастырылатын болады. Егер
кітапхананы құрастыру кезінде проблемалар туындаса, онда оның файлдары
.cpp және .h кеңеюлерімен болуын тексеру керек (.pde және .txt қосымша
кеңеюлері болмау керек).
Құрылған кітапхананы пайдалана отырып әдепкі көшіріп жазған скетч келесі
үлгіде көрінеді: #include
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(13) деп аталатын Morse жіктелімінің данасы құрылады;
Осы жолды орындау кезінде (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 әзірлеу ортасын қайта іске қосу керек.
Ашылған кітапхананы үнемі оны қолдану мысалымен тіркеген дұрыс. Ол үшін
Morse директориясында examples бумасы ашылады. Содан кейін бұрын
ашылған SOS скетчі осы бумаға көшіріледі. (Скетч файлын Sketch >
ShowSketchFolder мәзірі арқылы табуға болады). Arduino қайта іске
қосылғаннан кейін File > Sketchbook > Examples мәзірінде мысалы бар
LibraryMorse пункті болады. Сондайақ кітапхананы қалай пайдаланғаны
жақсы екені туралы түсінік беру қосылады.
Написание библиотеки для Arduino.
Написание библиотеки для Arduino.
Написание библиотеки для Arduino.
Написание библиотеки для Arduino.
Написание библиотеки для Arduino.
Написание библиотеки для Arduino.
Написание библиотеки для Arduino.
Написание библиотеки для Arduino.
Материалы на данной страницы взяты из открытых истончиков либо размещены пользователем в соответствии с договором-офертой сайта. Вы можете сообщить о нарушении.