
Spisu treści:
2025 Autor: John Day | [email protected]. Ostatnio zmodyfikowany: 2025-01-23 15:02



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?

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

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



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


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

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

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:
Programowanie Arduino przy użyciu innego Arduino do wyświetlania przewijanego tekstu bez biblioteki: 5 kroków

Programowanie Arduino przy użyciu innego Arduino do wyświetlania przewijanego tekstu bez biblioteki: Sony Spresense lub Arduino Uno nie są tak drogie i nie wymagają dużej mocy. Jeśli jednak Twój projekt ma ograniczenia dotyczące mocy, miejsca, a nawet budżetu, możesz rozważyć użycie Arduino Pro Mini. W przeciwieństwie do Arduino Pro Micro, Arduino Pro Mi
Wykres natężenia światła za pomocą Arduino i biblioteki Arduino Master Library: 5 kroków

Wykres natężenia światła za pomocą Arduino i Arduino Master Library: Arduino jest ekonomicznym, ale bardzo wydajnym i funkcjonalnym narzędziem, programowanie go w Embedded C sprawia, że proces tworzenia projektów jest nudny! Moduł Arduino_Master w Pythonie upraszcza to i pozwala nam wykonywać obliczenia, usuwać wartości śmieci
Tworzenie adaptera Bluetooth Pt.2 (tworzenie kompatybilnego głośnika): 16 kroków

Tworzenie adaptera Bluetooth Pt.2 (Tworzenie kompatybilnego głośnika): W tej instrukcji pokażę ci, jak wykorzystać mój adapter Bluetooth, aby stary głośnik był kompatybilny z Bluetooth. * Jeśli nie przeczytałeś mojej pierwszej instrukcji na temat tworzenia adapter Bluetooth” Proponuję to zrobić przed kontynuowaniem.C
Podłącz swój Headless Pi do biblioteki Wi-Fi: 7 kroków

Podłącz swój Headless Pi do sieci Wi-Fi biblioteki: Ile razy chciałeś pracować nad swoimi bezgłowymi projektami Raspberry Pi w lokalnej bibliotece, tylko po to, aby utknąć, ponieważ otwarta sieć Wi-Fi wymaga korzystania z przeglądarki? Nie martw się więcej, ten Instruktaż jest tutaj, aby pomóc
Generator tonów Arduino bez biblioteki lub funkcji szeregowych (z przerwaniami): 10 kroków

Generator tonów Arduino bez biblioteki lub funkcji szeregowych (z przerwaniami): To nie jest coś, na czym normalnie robiłbym instrukcje, wolę moją metaloplastykę, ale ponieważ jestem studentem elektrotechniki i muszę wziąć udział w zajęciach z mikrokontrolerów ( Embedded Systems Design), pomyślałem, że zrobię instruktaż na jednym z moich p