Arduino programare Librarytutorial

Creați-vă propria bibliotecă pentru Arduino

Acest document va ajuta să înțelegeți cum să creați o bibliotecă pentru Arduino. În primul rând, programul care generează semnale de cod Morse vor fi discutate, și apoi dat o explicație pentru a face să funcționeze într-o bibliotecă separată. Utilizarea bibliotecilor permite altor persoane să utilizeze codul scris de tine, precum și ușor actualizează-l ca noi versiuni ale bibliotecii.

Să începem cu un program care generează un semnal de simplu în codul Morse:

Dacă executați acest program, vă puteți asigura că acesta oferă un SOS (distres) LED-ul conectat la 13 concluzie.

În program există câteva domenii pe care trebuie să adere la bibliotecă. În primul rând, desigur, această funcție punct () și cratimă (). care formează semnalul. În al doilea rând, este un cod PIN variabilă. funcțiile folosite pentru a ști care este de ieșire la locul de muncă. În cele din urmă, programul are funcția de provocare pinMode (). care determină că respectiva ieșire să funcționeze ca ieșire.

Este timpul pentru a face biblioteca programul nostru!

Pentru a face acest lucru, va avea nevoie de cel puțin două fișiere: un fișier header (extensia .h) și fișierul sursă (cu extensia Cpp). Fișierul antet este o bibliotecă Descriere: de multe ori, este pur și simplu o listă de tot ceea ce este în ea. Fișierul conține codul sursă direct la biblioteca de software. Noi numim biblioteca noastră „Morse“, respectiv, fișierul nostru antet este „Morse.h“. Să vedem ce e în acel fișier. Inițial, conținutul fișierului poate părea un pic ciudat, dar totul va cădea în loc de îndată ce veți vedea codul sursă, care rulează „complet“.

Structura fișierului antet este o colecție de linii, fiecare dintre acestea corespunde unei funcții de bibliotecă. Aceste linii sunt în clasa, care pot include, de asemenea, toate variabilele necesare:

Clasa - este doar o colecție de funcții și variabile într-un singur loc. Aceste funcții și variabile pot fi publice (publice) - și anume pot fi cauzate de persoanele care lucrează cu biblioteca, sau intern (privat) - care sunt vizibile numai în interiorul clasei în sine. Fiecare clasă are o funcție specială numit un constructor (constructor), care este proiectat pentru a crea o (de exemplu) de clasa instanță. Constructorul are același nume ca și clasă, și nici o valoare de întoarcere.

În cele din urmă, obiceiul de a încheia întregul conținut al fișierului antet într-o construcție ciudată:

De fapt, previne posibilele probleme în cazul în care cineva se conectează biblioteca de două ori.

Să ne uităm la fișierul antet și să vedem ce avem:

Și acum să ne uităm la conținutul fișierului sursă - Morse.cpp.

Apoi, există un constructor care descrie ce ar trebui să se întâmple atunci când cineva creează o instanță de clasă. În acest caz, utilizatorul specifică ce fel de concluzie el ar dori să utilizeze. Configurăm PIN-ul ca ieșire și salvați-l într-o variabilă internă pentru utilizare ulterioară în alte funcții:

Următorul este efectiv codul sursă al programului original (bine, în cele din urmă!). Se pare exact la fel, cu excepția prefixul Morse :: înainte de numele de funcții și _pin variabilă în loc de pini:

Și asta e tot ce trebuie făcut (există încă unele oportunități, dar vom vorbi despre ele mai târziu). Acum vom încerca biblioteca noastră în acțiune.

În primul rând, creați un folder în directorul Morse al bibliotecilor în dosarul de lucru cu proiectul. Copierea sau mutarea fișierelor Morse.h și Morse.cpp în directorul creat. Acum, rulați mediul de dezvoltare Arduino - în meniul Sketch> Import Library, ar trebui să vedeți biblioteca Morse. Acesta va fi compilat automat cu aplicația utilizarea acestuia. Dacă nu - verifică expansiunea și asigurați-vă că formatul de fișier este într-adevăr un Cpp sau .h (fără extensii suplimentare, cum ar fi .pde sau .txt, de exemplu).

Să încercăm să rescrie vechiul nostru program de „SOS“, cu o nouă bibliotecă:

În comparație cu versiunea anterioară a programului au existat unele diferențe (în afară de faptul că o parte a codului transferat la bibliotecă).

În primul rând, am adăugat declarația #include la începutul programului, care include biblioteca în codul Morse trimis de bord. Prin urmare, în cazul în care biblioteca de program nu mai este folosit, este de dorit pentru a elimina #include pentru a salva memoria microcontrolerului.

În al doilea rând, am instantia acum clasa Morse numit morse:

Atunci când se efectuează această linie (de fapt, acest lucru se întâmplă chiar și la configurare () funcția) constructorul clasei se numește Morse, în care aici un argument (în acest caz, 13) este transferat.

Vă rugăm să rețineți că acesta este configurat pentru funcția noastră () este gol, deoarece pinMode de apel (), în acest caz, are loc în interiorul bibliotecii (la crearea unui exemplu).

În cele din urmă, punctul de apel () și cratimă () trebuie să fie acum prefixat cu morse. - numele instanței pe care dorim să folosim. Putem crea mai multe instanțe ale clasei Morse, fiecare cu propria sa ieșire stocată în _pin variabilă internă numai în acest caz. Indicând o anumită instanță a apelului funcției, ne întrebăm astfel, ce exemplu variabile trebuie să opereze una sau altă funcție. Asta este, dacă avem două copii ale:

în interiorul morse2.dot () variabila _pin va fi egală cu 12 funcții.

Atunci când scrieți un program nou, veți observa că IDE nu recunoaște și nu se aprinde elementele bibliotecii create de noi. Din păcate, IDE Arduino nu este capabil să recunoască și să interpreteze ceea ce am anunțat în bibliotecă (de altfel, ar fi bine să adăugați această funcție) în mod automat, așa că are nevoie de un pic de ajutor. Pentru a face acest lucru, creați un fișier keywords.txt în directorul Morse și scrie următoarele în ea:

Fiecare rând trebuie să conțină caracterul tab-ul de cuvinte cheie (fără spații) și introduceți un cuvânt cheie. Clasele sunt evidențiate în portocaliu, și trebuie să fie de tip CUVÂNTCHEIE1; Funcția - maro și trebuie să fie de tip CUVÂNTCHEIE2. Pentru ca modificările să aibă efect, trebuie să reporniți mediul Arduino.

Dacă doriți să vedeți biblioteca terminat (cu exemplul și cuvântul cheie) - puteti spune de aici: Morse.zip.

În prezent, probabil, este totul, dar cât mai curând posibil, va fi extins de orientare privind crearea bibliotecilor. Între timp, dacă aveți probleme sau nu va fi sugestii, vă rugăm să le scrie pe forum.