Anvendelse af Eksempler

Fra HTX-Arduino
Skift til: navigering, søgning
Video med forklaring til kapitlet


I flere af de foregående dokumenter er programeksemplet Blink blevet omtalt. Ud over dette programeksempel, så er der i Arduinos programmeringsmiljø (IDE’et) rigtigt mange andre gode programeksempler [1] der hjælper en i gang med nye teknikker, og en del af dem illustrerer, hvordan man anvender software til tilsluttede komponenter.

Det man kan med gode eksempler, er at man målrettet får vist hvordan man kan løse en lille begrænset del, som man kan efterfølgende kan anvende i et af sine egne programmer. Det kan være at anvende en stepmotor, koble et display på eller noget helt tredje.

En god teknik når man anvender eksempler er at man starter med eksemplet og ser at det kan oversættes og overføres til Arduinoen. Herefter kan man tilpasse eksemplet, så det passer til den hardwareløsning man arbejder med, eller hente hele - eller dele af - programeksemplet ind i sin egen programkode, og arbejde videre med det her. Det er altid god skik at tilføje øverst i sit program, hvor man har hentet programkodestumper fra. Dette gøres ved at indsætte en kommentar //.

Man kan finde hele koden til eksemplerne inde under eksempler som vist i figur 1 - her er det Blink-eksemplet under de grundlæggende eksempler.

Måden man finder eksempler på i IDE’et - Fil, Eksempler, Kategori, Eksempel
Figur 1 Måden man finder eksempler på i IDE’et - Fil, Eksempler, Kategori, Eksempel.

Til mange komponenter er der forskellige eksempler, så man nogle gange skal igennem to-tre eksempler for at finde de teknikker man skal anvende og evt. kombinere eksemplerne for at kunne løse det man ønsker.

Når man har fået komponenten til at fungere som det eksemplerne kan vise, så kan man kopiere de forskellige dele ind i sit eget projekt, eller man kan starte i eksemplet og udvide derfra med andre eksempler.

Eksempler til grundlæggende funktioner

Når man installerer IDE’et, så er der mange eksempler der følger med - det er disse der omtales her.

Hvis man kommer til at anvende moduler der ikke er installeret biblioteker til i IDE’et, så vil der normalt komme eksempler med de ekstra biblioteker man installerer.

Grundlæggende eksempler - Basics[2]

De grundlæggende eksempler giver en kort og hurtig hjælp til ind og udgange, uden at det bliver avanceret.

Der illustreres hvordan digitale ind og udgange fungerer helt grundlæggende.

Der illustreres hvordan de analoge indgange fungerer, og her vises også funktionen af Serial Monitor, som omtales nærmere i Test af Programmer.

Endelig er der et eksempel på en analog udgang lavet med PWM[3].

Digitale ind og udgange - Digital[4]

Her er der en række mere avancerede anvendelser af ind og udgange med eksempler på anvendelse af intern pull-up og tone-biblioteket til at få en udgang til at afgive en frekvens.

Analog ind og udgange - Analog[5]

Flere forskellige eksempler på håndtering af specielt analoge indgange, hvor de påvirker forskellige ting, også et eksempel på hvordan man kan udglatte signalet ved hjælp af software.

Kommunikation - Communication[6]

Forskellige eksempler på hvordan man kan kommunikere ind og ud af Arduinoen. De fleste eksempler viser forskellige anvendelser med den indbyggede serielle port, men der vises også hvordan man kan lave en software-seriel port.

Der vises hvordan man kan styre et MIDI-instrument[7], [8] ved hjælp af den serielle port. Der er også mere specielle anvendelser af den serielle port.

Kontrol Strukturer - Control Structures[9]

I disse eksempler gennemgås nogle af de grundlæggende kontrolstrukturer i C-sproget som er Arduionens programkode.

Der vises ligeledes et eksempel med et Array

Sensorer - Sensors[10]

Forskellige eksempler på simple sensorer: et 3-akset accelerometer med analogt output, banke-detektor lavet med en Piezzo-speaker, 2-akset accelerometer med puls-output og en ultralyds afstandsmåler.

LED output til display-formål - Display[11]

Et par eksempler på hvordan man kan få lysdioder til at udtrykke forskellige analoge værdier.

Tekst-strenge - Strings[12]

Mange gode eksempler på hvordan man kan manipulere strenge og konvertere andre datatyper til/fra strenge.

USB Mus og Keyboard - USB[13]

Disse eksempler er ikke relevante for en Arduino UNO, da de kræver at man anvender en Leonardo, Micro eller Due.

Starter Kit og Basic Kit - Starter Kit[14]

Dette er programeksempler der anvendes sammen med to af de officielle Arduino Starter kits.

Arduino In-circuit Serial Programmer - Arduino ISP[15]Svaert.png

Dette er ikke for begyndere, men man kan anvende en Arduino så man kan programmere direkte ned på chippen af en anden Arduino (ved at gå uden om det styresystem der udgøres af bootloaderen), det kan anvendes til at brænde en frisk bootloader ned i en Arduino hvor man har sat en blank ATMega328P processor på, men det kan også anvendes til at brænde HEX-kode direkte på andre Atmel processorer, både fra Mega familien og fra ATTiny serien.

Eksempler til mere avanceret hardware

Disse eksempler er knyttet til forskellig hardware der kan tilsluttes Arduinoen, og som bygger på forskellige standard komponenter og Shields udviklet til Arduino.

Bibliotekerne til hardwaren er installeret sammen med IDE’et.

Ethernet

Dette er et Shield [16], der kan forbinde en Arduino UNO til et Ethernet ved hjælp af et RJ-45 stik og et TP-kabel. På Shieldet sidder der også et SD-kort.

LiquidCrystal

Dette bibliotek er lavet til at tilslutte et Alfanummerisk LCD til Arduinoen. Man kan koble det op med ledninger, hvis man har et løst display [17], eller man kan anvende et Shield med et display på.

SD-kort

Dette bibliotek kan kommunikere med et SD-kort [18], så man kan skrive og læse filer fra kortet. Dette er specielt anvendeligt, hvis man har behov for større datamængder end Arduinoens interne hukommelse kan håndtere, eller hvis man fx vil arbejde med billedfiler på en lille skærm.

Servo

Servo-biblioteket kan styre en servomotor [19], ved at sende de korrekte pulser til servomotoren, så den stiller sig i den angivne position.

Stepper

Stepper-biblioteket kan styre en eller flere stepmotorer [20], så man kan positionere en vinkel ud fra hvilken type stepmotor det er.

EEPROM

EEPROM [21] står for Electrically Erasable Programmable Read Only Memory, og det er et hukommelses-område der forbliver intakt, selvom Arduinoen mister strømmen. Det kan anvendes til at huske kalibreringsværdier eller PIN-koder, der skal forblive intakte, men som også skal kunne ændres af programmet.

SoftwareSerial

På Arduino UNO R3 er der kun en seriel port der er lavet ved hjælp af hardwaren i mikroprocessoren, og den er det tit rart at anvende til den serielle monitor til test-formål. Derfor kan det være smart at kunne anvende andre digitale pins til seriel kommunikation. Det kan etableres ved hjælp af SoftwareSerial biblioteket.

SPI

Serial Peripherial Interface [22] er lavet til at kommunikere med specielle hardware-moduler der har denne kommunikation etablere (SD-kort, Ethernet osv.). Kommunikationen foregår over 3 signaler, og hvert modul skal have et select-signal, så man kan koble flere forskellige moduler på samme bus.

Wire

Wire-biblioteket kan kommunikere med en anden type bus, der også betegnes I2C-bus [23]. Det foregår på to ben der arbejder digitalt (A4 og A5), og der kan kobles forskellige enheder på samme bus, da de er adresserede.

Eksempler til biblioteker der tilføjes

Hvis man tilføjer biblioteker fra nettet på den korrekte måde [24], så vil man normalt også få en række eksempler med, som lægger sig ind under de præ-installerede biblioteker.

Disse eksempler giver tit en god ide om hvordan biblioteket skal anvendes, hvis biblioteket er af en fornuftig kvalitet - der er mange gode biblioteker på www.github.com.

Man kan også selv skrive biblioteker til Arduinoen, og her anbefales det også at lave eksempler, så man følger samme format som installerede biblioteker.

Referencer