Spisu treści:

Tworzenie biblioteki Arduino dla YouTube Sight: 7 kroków
Tworzenie biblioteki Arduino dla YouTube Sight: 7 kroków

Wideo: Tworzenie biblioteki Arduino dla YouTube Sight: 7 kroków

Wideo: Tworzenie biblioteki Arduino dla YouTube Sight: 7 kroków
Wideo: kurs Arduino programowanie - Klasy - #7 2024, Listopad
Anonim
Image
Image
Co to jest biblioteka?
Co to jest biblioteka?

Cześć wszystkim, Niedawno stworzyłem usługę o nazwie YouTube Sight, która może wyodrębniać dane subskrybentów z interfejsu YouTube Analytics API i zapewnia dokładniejszą liczbę subskrybentów, odkąd YouTube zaczął agregować wyniki. Dzięki niemu zbudowałem przykładowy szkic, ale chciałem również stworzyć bibliotekę Arduino, aby ludzie mogli z niej łatwiej korzystać.

Krok 1: Co to jest biblioteka?

Co to jest biblioteka?
Co to jest biblioteka?

Biblioteka to fragment kodu, który może obsłużyć określoną operację, przetworzyć typ danych lub może wiedzieć, jak współdziałać z określonym elementem sprzętowym. Pozwalają nam łatwo rozszerzyć środowisko Arduino, a jest ich wiele, które są fabrycznie instalowane z Arduino IDE.

W przypadkach takich jak mój, w których chcemy dodać nowe możliwości do Arduino, możemy stworzyć własne biblioteki, aby inne osoby mogły z nich korzystać. Wszystkie zainstalowane biblioteki znajdują się w określonym folderze na naszym komputerze. W moim przypadku na komputer z systemem Windows biblioteki znajdują się w folderze Documents/Arduino. Pełna ścieżka będzie dla Ciebie specyficzna, oparta na Twojej nazwie użytkownika.

Krok 2: Struktura i pliki biblioteki

Struktura i pliki biblioteki
Struktura i pliki biblioteki

Aby zacząć budować naszą bibliotekę, najpierw musimy utworzyć tutaj folder o jego nazwie, więc stworzyłem folder o nazwie YouTube Sight. W minimalnej wersji biblioteki musimy mieć co najmniej dwa pliki.

Pierwszy z nich to tak zwany plik „nagłówkowy”, który zawiera wszystkie definicje metod i właściwości udostępnianych przez naszą bibliotekę, a drugi to plik źródłowy, który będzie zawierał cały kod źródłowy.

Pliki nagłówkowe mają rozszerzenie „.h”, podczas gdy plik źródłowy ma rozszerzenie „.cpp” i zwykle mają nazwę biblioteki jako nazwę pliku. W moim przypadku te dwa pliki nazywają się „YouTubeSight.h” i „YouTubeSight.cpp”.

Proces pisania kodu biblioteki może być nieco żmudny i frustrujący, zwłaszcza gdy piszesz bibliotekę po raz pierwszy, ale przy wielu próbach i błędach możesz osiągnąć pożądane rezultaty. Z tego powodu przeprowadzę Cię przez gotowy kod obu plików i wyjaśnię go.

Pełny kod i bibliotekę można pobrać z GitHub pod następującym linkiem:

Krok 3: Plik nagłówkowy

Plik nagłówkowy
Plik nagłówkowy
Plik nagłówkowy
Plik nagłówkowy
Plik nagłówkowy
Plik nagłówkowy

Wewnątrz pliku nagłówkowego, na początku, cały plik jest opakowany w instrukcję „ifndef”, która sprawdza, czy określona zmienna jest zdefiniowana, czy nie. Zapobiegnie to błędom każdego, kto korzysta z biblioteki, jeśli przez pomyłkę umieści ją dwukrotnie w tym samym szkicu.

Następnie musimy dołączyć podstawową bibliotekę Arduino, a ponieważ będziemy pracować z pewnego rodzaju klientem HTTP, aby wysłać żądanie do YouTube Sight, uwzględnimy również podstawową bibliotekę klienta.

Zanim zaczniemy pisać zawartość naszej głównej klasy, musimy zdefiniować dowolne zmienne statyczne i ustawienia, których nie chcemy modyfikować. W moim przypadku są dwie takie zmienne. Główny adres URL usługi YouTube Sight oraz zmienna timeout, której użyjemy do sprawdzenia, jak długo odczytujemy wartość.

Również w tej sekcji możemy zdefiniować dowolne niestandardowe typy, których chcemy użyć, jak ta struktura channelStatistics, w której zapiszemy wyniki.

Definicja struktury klasy jest podzielona na dwie części. Pierwsza część to definicja wszystkich funkcji i własności publicznych, a druga to definicja wszystkich funkcji i własności prywatnych. Różnica między nimi polega na tym, że użytkownicy końcowi naszej biblioteki nie będą mogli bezpośrednio korzystać z niczego z sekcji prywatnej, podczas gdy będą mogli bezpośrednio modyfikować i wykorzystywać dowolne właściwości i funkcje z części publicznej.

W sekcji public definiujemy konstruktor klasy, zmienną channelStats, w której będziemy przechowywać wyniki, funkcję, która otrzyma dane oraz właściwość debugowania, której możemy później użyć do sprawdzenia przypadków, w których możemy nie uzyskać oczekiwanych wyników.

Dla właściwości prywatnych zdefiniujemy jeden do przechowywania identyfikatora GUID kanału, wskaźnik do klienta HTTP, którego użyjemy, oraz funkcję, która podzieli zwrócony ciąg z YouTube Sight.

Krok 4: Plik źródłowy

Plik źródłowy
Plik źródłowy
Plik źródłowy
Plik źródłowy

Przyjrzyjmy się teraz rzeczywistej implementacji tego wszystkiego w pliku źródłowym.

Pierwszym krokiem dla nas jest dołączenie własnego pliku nagłówkowego, który właśnie utworzyliśmy, a następnie musimy zdefiniować konstruktor biblioteki. W nim przekazujemy dwie zmienne. Identyfikator GUID jest zapisywany w zmiennej prywatnej, którą zdefiniowaliśmy wcześniej, a Klient jest przekazywany przez odwołanie, dzięki czemu możemy następnie wywołać tę samą instancję, którą otrzymaliśmy.

Główna funkcja biblioteki getData jest następnie definiowana przez określenie typu zwracanego, a następnie nazwy biblioteki i nazwy funkcji. Nie będę wchodzić w szczegóły, co robi każda linia w tej funkcji, ale ogólnie funkcja otwiera połączenie z serwerem YouTube Sight, wysyła żądanie uzyskania statystyk, a następnie analizuje zwrócone dane za pomocą prywatna funkcja getValue.

Pobrane wyniki są następnie ustawiane na zmienną channelStats i zwracany jest wskaźnik, jeśli udało nam się pobrać wyniki, czy nie, i dzięki temu rdzeń naszej biblioteki jest kompletny.

Krok 5: Zapewnienie przykładowych szkiców

Dostarczanie przykładowych szkiców
Dostarczanie przykładowych szkiców

Zwykle każda biblioteka zawiera przykłady, które można szybko załadować i użyć, aby pokazać, co biblioteka może zrobić i jak to zrobić. Aby zapewnić takie przykłady, musimy zmodyfikować strukturę biblioteki, gdzie teraz nagłówek i plik źródłowy będą znajdować się w folderze „src”, a nowy folder zostanie dodany w katalogu głównym biblioteki o nazwie „examples”.

Każdy szkic Arduino, który umieścisz w tym folderze, będzie serwowany z Arduino IDE jako przykład dla twojej biblioteki, a ludzie mogą go szybko zbadać i dowiedzieć się, jak działa biblioteka.

Krok 6: Publikowanie do kierownika biblioteki

Publikowanie do Kierownika Biblioteki
Publikowanie do Kierownika Biblioteki

Aby korzystać z biblioteki, ludzie będą musieli po prostu dołączyć plik nagłówka twojej biblioteki do swojego szkicu, a Arduino IDE zbuduje go razem z nim. Ale aby to zrobić, najpierw będą musieli zainstalować go na swoich komputerach.

Popularnym sposobem jest pobranie biblioteki z GitHub i zainstalowanie jej za pomocą instalatora ZIP w IDE lub po prostu umieszczenie jej w folderze bibliotek, tak jak to zrobiliśmy, gdy ją tworzyliśmy. Jednak Arduino IDE zawiera również narzędzie zwane Library Manager, które umożliwia wyszukiwanie biblioteki bezpośrednio z IDE.

Aby dołączyć do niej twoją bibliotekę, musimy najpierw utworzyć w folderze głównym dodatkowy plik o nazwie „library.properties” i w nim podać nazwę biblioteki, aktualną wersję i dodatkowe informacje, które pomogą menedżerowi biblioteki aby wyświetlić lepsze informacje na ten temat.

Po umieszczeniu pliku należy utworzyć problem na stronie Arduino GitHub, który po prostu prosi o uwzględnienie biblioteki w indeksie z linkiem do niej, a po zatwierdzeniu i dodaniu przez personel Arduino, kierownik biblioteki zacznij oferować swoją bibliotekę w wynikach. Ponadto menedżer będzie w przyszłości szukał tagów wersji w repozytorium GitHub i zaoferuje aktualizację osobom z niego korzystającym, gdy pojawią się zmiany.

Krok 7: Kolejne kroki

Mam nadzieję, że po tym Instructable lepiej zrozumiesz, jak działają biblioteki Arduino, jak możesz je stworzyć, a co najważniejsze, mam nadzieję, że zainspirujesz się do rozpoczęcia pracy nad kolejnym wielkim pomysłem.

Jeśli masz dodatkowe pytania lub sugestie, zapisz je w komentarzach, zasubskrybuj mój kanał YouTube i śledź mnie tutaj na Instructables.

Zalecana: