Inhoudsopgave:

Een Arduino-bibliotheek maken voor YouTube Sight: 7 stappen
Een Arduino-bibliotheek maken voor YouTube Sight: 7 stappen

Video: Een Arduino-bibliotheek maken voor YouTube Sight: 7 stappen

Video: Een Arduino-bibliotheek maken voor YouTube Sight: 7 stappen
Video: Массимо Банци: Как Arduino пробуждает воображение 2024, November
Anonim
Image
Image
Wat is een bibliotheek?
Wat is een bibliotheek?

Hallo iedereen, Ik heb onlangs een service gebouwd met de naam YouTube Sight die abonneegegevens kan extraheren uit de YouTube Analytics API en je nauwkeurigere abonneetellingen kan geven sinds YouTube is begonnen met het verzamelen van de resultaten. Hiermee heb ik een voorbeeldschets gemaakt, maar ik wilde ook een Arduino-bibliotheek maken, zodat mensen het gemakkelijker kunnen gebruiken.

Stap 1: Wat is een bibliotheek?

Wat is een bibliotheek?
Wat is een bibliotheek?

Een bibliotheek is een stukje code dat een specifieke bewerking kan uitvoeren, een type gegevens kan verwerken of kan weten hoe het moet communiceren met een specifiek hardware-element. Ze stellen ons in staat om de Arduino-omgeving eenvoudig uit te breiden en er zijn er veel die vooraf zijn geïnstalleerd met de Arduino IDE.

In gevallen zoals het mijne, waar we nieuwe mogelijkheden aan de Arduino willen toevoegen, kunnen we onze eigen bibliotheken maken zodat andere mensen ze kunnen gebruiken. Alle geïnstalleerde bibliotheken staan in een specifieke map op onze computer. In mijn geval voor de Windows-pc leven de bibliotheken onder de map Documenten/Arduino. Het volledige pad is specifiek voor u, op basis van uw gebruikersnaam.

Stap 2: Bibliotheekstructuur en bestanden

Bibliotheekstructuur en bestanden
Bibliotheekstructuur en bestanden

Om te beginnen met het bouwen van onze bibliotheek, moeten we hier eerst een map maken met de naam ervan, dus ik heb een map gemaakt met de naam YouTube Sight. In de absolute minimumversie van de bibliotheek moeten we ten minste twee bestanden hebben.

De eerste is een zogenaamd "header"-bestand dat alle definities bevat van de methoden en eigenschappen die onze bibliotheek biedt, en de tweede is het bronbestand dat alle broncode zal bevatten.

De headerbestanden hebben de extensie ".h" terwijl het bronbestand de extensie ".cpp" heeft en ze hebben meestal de naam van de bibliotheek als bestandsnaam. In mijn geval heten de twee bestanden "YouTubeSight.h" en "YouTubeSight.cpp".

Het proces van het schrijven van de bibliotheekcode kan een beetje vervelend en frustrerend zijn, vooral wanneer u voor de eerste keer een bibliotheek schrijft, maar met veel vallen en opstaan kunt u de gewenste resultaten bereiken. Daarom zal ik je door de voltooide code van de twee bestanden leiden en uitleggen.

De volledige code en de bibliotheek kunnen worden gedownload van GitHub via de volgende link:

Stap 3: Het kopbestand

Het kopbestand
Het kopbestand
Het kopbestand
Het kopbestand
Het kopbestand
Het kopbestand

In het kopbestand, in het begin, is het hele bestand verpakt in een "ifndef" -instructie die controleert of de opgegeven variabele is gedefinieerd of niet. Dit voorkomt fouten voor iedereen die de bibliotheek gebruikt als ze deze per ongeluk twee keer in dezelfde schets opnemen.

Vervolgens moeten we de Arduino-basisbibliotheek toevoegen en aangezien we met een soort HTTP-client zullen werken om het verzoek naar YouTube Sight te verzenden, zullen we ook de basisclientbibliotheek opnemen.

Voordat we beginnen met het schrijven van de inhoud van onze hoofdklasse, moeten we eventuele statische variabelen en instellingen definiëren die we niet willen wijzigen. In mijn geval zijn er twee van dergelijke variabelen. De hoofd-URL van de YouTube Sight-service en de time-outvariabele die we zullen gebruiken om te controleren hoe lang we een waarde lezen.

Ook in deze sectie kunnen we alle aangepaste typen definiëren die we willen gebruiken, zoals deze channelStatistics-structuur waarin we de resultaten opslaan.

De definitie van de klassenstructuur is opgesplitst in twee delen. Het eerste deel is de definitie van alle publieke functies en eigendommen en het tweede is de definitie van alle private functies en eigendommen. Het verschil tussen beide is dat de eindgebruikers van onze bibliotheek niets rechtstreeks uit het privégedeelte kunnen gebruiken, terwijl ze de eigenschappen en functies van het openbare gedeelte rechtstreeks kunnen wijzigen en gebruiken.

In de openbare sectie definiëren we de klassenconstructor, de variabele channelStats waar we de resultaten zullen opslaan, de functie die de gegevens zal ophalen en een debug-eigenschap die we later kunnen gebruiken om te controleren op gevallen waarin we mogelijk niet de verwachte resultaten krijgen.

Voor de privé-eigenschappen zullen we er een definiëren voor het opslaan van de kanaal-GUID, een verwijzing naar de HTTP-client die we zullen gebruiken en een functie die de geretourneerde string van YouTube Sight zal splitsen.

Stap 4: Het bronbestand

Het bronbestand
Het bronbestand
Het bronbestand
Het bronbestand

Laten we nu eens kijken naar de daadwerkelijke implementatie van dit alles in het bronbestand.

De eerste stap voor ons is om ons eigen headerbestand op te nemen dat we zojuist hebben gemaakt en dan moeten we de bibliotheekconstructor definiëren. Daarin geven we twee variabelen door. De GUID wordt opgeslagen in de privévariabele die we eerder hebben gedefinieerd en de client wordt als referentie doorgegeven, zodat we dezelfde instantie kunnen aanroepen die we hebben gekregen.

De belangrijkste getData-functie van de bibliotheek wordt vervolgens gedefinieerd door eerst het retourtype op te geven, gevolgd door de bibliotheeknaam en de functienaam. Ik zal niet in detail treden op wat elke regel in deze functie doet, maar over het algemeen opent de functie een verbinding met de YouTube Sight-server, verzendt het verzoek om de statistieken te krijgen en parseert vervolgens de geretourneerde gegevens met behulp van de private getValue-functie.

De opgehaalde resultaten worden vervolgens ingesteld op de variabele channelStats en er wordt een indicator geretourneerd of het ons is gelukt om de resultaten op te halen of niet en daarmee is de kern van onze bibliotheek compleet.

Stap 5: Voorbeeldschetsen verstrekken

Voorbeeldschetsen verstrekken
Voorbeeldschetsen verstrekken

Gewoonlijk biedt elke bibliotheek voorbeelden die u snel kunt laden en gebruiken om te laten zien wat de bibliotheek kan en hoe u het moet doen. Om dergelijke voorbeelden te geven, moeten we de bibliotheekstructuur wijzigen, waarbij de koptekst en het bronbestand zich nu in een map "src" bevinden en een nieuwe map wordt toegevoegd onder de bibliotheekhoofdmap met de naam "voorbeelden".

Elke Arduino-schets die u in deze map plaatst, wordt vanuit de Arduino IDE weergegeven als voorbeeld voor uw bibliotheek en mensen kunnen deze snel verkennen en leren hoe de bibliotheek werkt.

Stap 6: Publiceren naar Bibliotheekbeheer

Publiceren naar de bibliotheekmanager
Publiceren naar de bibliotheekmanager

Om de bibliotheek te gebruiken, moeten mensen gewoon het headerbestand van uw bibliotheek in hun schets opnemen en de Arduino IDE zal het samen ermee bouwen. Maar om dit te doen, moeten ze het eerst op hun machines installeren.

Een veelgebruikte manier is om de bibliotheek van GitHub te downloaden en deze te installeren via het ZIP-installatieprogramma in de IDE of gewoon in de bibliothekenmap te plaatsen zoals we deden toen we hem maakten. De Arduino IDE bevat echter ook een tool, de Library Manager genaamd, waarmee u rechtstreeks vanuit de IDE naar een bibliotheek kunt zoeken.

Om uw bibliotheek erin op te nemen, moeten we eerst een extra bestand maken in de hoofdmap met de naam "library.properties" en daarin moeten we de bibliotheeknaam, de huidige versie en wat aanvullende informatie specificeren die de bibliotheekbeheerder zal helpen om er betere informatie over weer te geven.

Met het bestand op zijn plaats, moet er een probleem worden gemaakt op de Arduino GitHub-pagina die eenvoudig vraagt om uw bibliotheek op te nemen in de index met de link ernaar en zodra het is goedgekeurd en toegevoegd door het Arduino-personeel, zal de bibliotheekmanager begin met het aanbieden van uw bibliotheek in de resultaten. Bovendien zal de manager in de toekomst zoeken naar versietags in de GitHub-repo en een update aanbieden aan mensen die deze gebruiken zodra er wijzigingen zijn.

Stap 7: Volgende stappen

Ik hoop dat je na deze Instructable een beter begrip hebt van hoe Arduino-bibliotheken werken, hoe je er een kunt maken en vooral, ik hoop dat je geïnspireerd raakt om aan je volgende grote idee te gaan werken.

Voor eventuele aanvullende vragen of suggesties, schrijf het gerust in de reacties, abonneer je op mijn YouTube-kanaal en volg me hier op Instructables.

Aanbevolen: