Arduinos Biblioteker

Fra HTX Arduino
Spring til navigation Spring til søgning

Denne beskrivelse er lavet ud fra Arduinos beskrivelse af biblioteker[1] på deres egen side.

Standard biblioteker

Det er en fordel IKKE at pille ved standard bibliotekerne.

Som standard ligger der en del biblioteker installeret sammen med Arduinos PC program som standard indstillinger.

Biblioteks-strukturen for Arduino

Tilføjelse af biblioteker

Man kan tilføje biblioteker (testet i version 1.6.4) ved at gå ind i "Sketch - Include Library - Manage Libraries...", hvor man kan finde en del biblioteker, som downloades fra nettet, eller hvis man har en zip-fil med et bibliotek, så kan man gå ind i "Sketch - Include Library - Add .ZIP Library..." - i begge tilfælde placeres biblioteket inde i den korrekte struktur og kan anvendes direkte.

Hvert bibliotek ligger i sin egen mappe, og navnet på biblioteket skal være det samme som den mappe det ligger inde i, og den mappestruktur der er inde i biblioteket angiver.

Som det er angivet på figuren her til højre, så ligger de biblioteker man selv ønsker at tilføje inde i Dokumenter\Arduino\libraries\, hvor der i dette eksempel kun er tilføjet et Keypad bibliotek.

Et bibliotek vil normalt være skrevet i C eller C++ og vil kunne lette tilgangen til et stykke hardware som et display eller et tastatur.

Anvendelse af biblioteker

Det letteste måde at anvende et bibliotek på er at man i IDE'et går ind i "Sketch" - "Library" og vælger det bibliotek man ønsker at tilføje. Dette vil give en linje som vist her:

#include <Keypad.h>

Til mange biblioteker er det ikke altid nok for at forstå hvordan man anvender bibilioteket, her vil de fleste biblioteker komme med et eller flere eksempler.

Har man lagt biblioteket rigtigt ind, så vil man kunne finde eksemplerne inde under "Fil" - "Eksempler" - "det relevante bibliotek".

Uautorisert måde at lægge biblioteker ind på

Hvis man har administratorrettigheder, så kan man tilføje biblioteker inde sammen med standard bibliotekerne. Denne metode anbefales ikke.

Steder at finde biblioteker

Der er mange biblioteker [2] på Arduinos hjemmeside.

Et andet sted hvor der ligger rigtigt meget er på githum.com[3]. Det kan være svært at navigere i stedet for at finde frem til relevante biblioteker, men man kan tit google sig frem ktil gode resultater ved at tilføje "github arduino library" til sin søgning efter noget hardware man ikke har kunnet finde på Arduinos side

At skrive sine biblioteker selv

Man kan også selv skrive og udvikle biblioteker[4], og hvis man syntes man har skrevet et godt bibliotek kan man også poste det f.x. i Arduinos forum[5] så andre får glæde af arbejdet.

Hvis man ønsker at skrive et bibliotek, så er det en god ide at kende strukturen i hvordan man skriver et bibliotek, da man skal skrive C++ kode, og man skal regne syntaksen i class-definitionen ud, som i sin grundlæggende struktur bliver beskrevet på Arduinos side[4]. Eksemplet her er dog meget simpelt, så hvis man vil ud i noget der er mere avanceret, så er det en god ide at kigge i andre lidt større eksempler, gerne fra Arduinos egen hjemmeside.

Som vist herunder, så indeholder et bibliotek flere elementer, og det kan gøres mere eller mindre avanceret. Her vises et eksempel på Keypad-biblioteket:
Oversigt over Keypad biblioteket
Oversigt over Keypad biblioteket

Der er en del ting der er værd at bemærke:

  • keypad mappen ligger i mappen libraries
  • De to filer keypad.cpp (C++ filen) og keypad.h (include-filen) skal hedde det samme som mappen
  • keywords.txt indeholder de ord der skal syntaksfarves når man anvender biblioteket
  • mappen examples indeholder som man kan se 7 forskellige eksempler på hvordan keypad kan bruges
  • i dette eksempel er der mappen utility, som indeholder en class-fil der anvendes inde i keypad

Ens eget bibliotek behøves ikke være så omfattende, men som minimum et eksempel der viser bruget af biblioteket, og som er skrevet så man kan se strukturen i hvordan man anvender biblioteket.

Ekstern hjælp til at skrive biblioteker

På Arduinos hjemmeside er der skrevet forskellig hjælp til at oprette sine egne biblioteker.

Selve indholdet i biblioteket er forklaret på Library Tutorial[6]. Forklaringen har ikke så meget fokus på strukturen i biblioteket, og man skal læse siden godt igennem, for at kunne se hvor de forskellige dele skal placeres i de forskellige filer.

For at få styr på hvordan koden fordeles i de forskellige filer kan det være lettest at kigge på et eksempel, hvor der på Arduino Libraries[1] er lavet et test eksempel nederst på siden, som illustrerer strukturen, men ikke har nogen egentlig funktion.

Hvis man vil dele sit bibliotek med andre er gitHub.com et godt sted. For at optræde fornuftigt på gitHub er det en god ide at sikre sig at biblioteket både fungerer ordentligt og er veldokumenteret - se hvordan forskellige andre gør det. Når man har et bibliotek som er værd at dele, så kan man få hjælp til at uploade ved gitHub[7] eller en anden guide[8]. Man kan også kigge på andre måder at dele softwaren på ud fra beskrivelsen på Arduinos playground[9].

Referencer

Arduino-Modul-Oversigt
Arduino Generelt: Biblioteker - Board - Driver - Shield - Arduino Analog - Arduino Seriel

Arduino-typer: Arduino UNO - Arduino Nano - Arduino Pro Mini - Arduino MEGA 2560 - LiliyPad Mikrocontroller - Arduino DUE - WeMOS

Input-moduler Trådløse: Bluetooth - Transceiver modul - WiFi Modul - SMS Modul - I2C-RF-modtager - RF Link - GPRS/GSM - GSM_Modul

Sensorer: GPS - Strøm-sensor - I2C Humidity - Lys og Nærhed - Magnetisk Kompas - I2C barometer - Farvegenkendelsesmodul - Alkoholsensor - Accelerometer - I2C Accelerometer - I2C Gyroskop - Vejecelleforstærker - IR Distance - AC Strømsensor - Afstand - XY Joystick - Humidity - Tryksensor - Vindhastighedsmåler
Photo og IR: IR Fjernbetjening - Photo Interrupter - IR Modtager - Bevægelsescensor - Photo Refleks Sensor - VGA Kamera
Power: Power Adapter - Lithium Batteri
Lager: SD Kort
Konvertere: I2C AD-konverter
Funktionsmoduler: RFID-modul - Matrix tastatur - DS1307 RTC - ENC28J60 Ethernet - IO Expander
Touch Display: Touch Display

Output-moduler Trådløse: Bluetooth - RF Link - GPRS/GSM - Transceiver modul - WiFi Modul - SMS Modul

Display: Display Shield - Touch Display - Arduino Display - Nokia 5110 Display - Dot-Matrix - Lys-avis - I2C Display
Funktionsmoduler: Lydgiver - Lydmodul - Relæ modul - Audio Power Forstærker - ENC28J60 Ethernet - Peltier Element - IO Expander
Hukommelse: SD Kort
Motorer: Stepper Motor Driver - Stepper med Accelleration - Servo

I2C-Moduler Funktionsmoduler: DS1307 RTC - I2C-RF-modtager - I2C tastatur

Sensorer: I2C Humidity - Magnetisk Kompas - I2C barometer - I2C Accelerometer - I2C Gyroskop
Konvertere: I2C AD-konverter
Display: I2C Display