Hva er en variabel?

Et viktig element i programmering er variabler. Når vi «lager» en variabel, setter vi egentlig av en plass i minnet, der vi kan lagre og oppdatere en verdi.

Variabelen kan være et heltall som brukes til telling, et flyttall (desimaltall) som tar vare på en måling av en fysisk verdi, som f.eks. en temperatur, eller en tekststreng som skal vises på et display.

Programmeringsspråket har en rekke forskjellige typer variabler, og vi skal se på de viktigste av dem. Det er også mulig å lage sine egne variabeltyper, satt sammen av andre typer, men det tar vi ikke for oss her.

integer


integer

Den mest brukte typen variabel i forhold til mikrokontrollere, er integer, eller heltall på norsk. Når vi definerer en integer-variabel bruker vi forkortelsen int

Hvis vi trenger en heltallsvariabel med navnet «teller» skriver vi følgende:
int teller;

Det vil da bli satt av plass i minnet til denne variabelen, men vi vet ikke hvilken verdi den har. Den vil få en tilfeldig verdi. Hvis vi vil gi variabelen en startverdi kan vi f.eks. skrive:

int teller=25;

I utgangspunktet i Arduino brukes 16 bits for å lagre et heltall, hvor 1 bit brukes til å angi om dette er et positivt eller negativt tall. Det vil si at vi kan lagre verdier fra -32,768 til 32,767. 

Hvis vi har bruk for større tall kan vi bruke long, som bruker 32 bit til lagring. Det gir oss tall fra -2,147,483,648 til 2,147,483,647.

Vil vi spare litt plass kan vi begrense oss til byte, som bruker bare 8 bit.

Ofte kan det være greit å angi heltall enten som binærkode eller heksadesimal kode.
Binær brukes ved å starte tallet med eller 0b. F.eks 0b01011010 eller B11001100

Heksadesimale tall starter med 0x. F.eks 0xFF (255) eller 0xA0B1 (41137)

float


float

Flyttall er det samme som kommatall, altså tall med en eller flere desimaler. F.eks. 1,25

Flyttallsvariabler defineres slik:

  float mittFlyttalleller  float mittFlyttall=1.25;

Pass på å ikke bruke komma, men punktum som desimalskille!

En float lagres over 4 bytes, og kan ha verdier fra -3.4028235E+38 til 3.4028235E+38. Det vil si at vi kan lagre veldig store tall, men at nøyaktigheten er begrenset til 6-7 desimalers presisjon (tall etter komma).

Hvis vi skal sammenligne to flyttall, kan vi aldri regne med at de blir nøyaktig like. I stedet må vi sjekke om differansen mellom tallene vi skal sammenligne er mindre enn en bestemt verdi.

I mange andre systemer (f.eks. PC) har vi mulighet til å bruke variabeltypen double hvis vi trenger større nøyaktighet. I Arduino er derimot float og double det samme.

 

bool


bool

bool eller boolean er en variabeltype som lagrer bare to forskjellige verdier: true eller false. (Sann eller usann)

Variabeltypen kan brukes i logiske tester, lagre status på noe som er enten av eller på osv.

En veldig grei funksjon er at variabeltypen enkelt kan iverteres (toggles):  

F.eks. :  running = !running;    vil sette running til false hvis den er true fra før, og omvendt.

char


char

char eller character er ett tegn, og bruker en byte (8 bit) lagringsplass.

Variabeltypen er i utgangspunktet "signed", det vil si at en kan lagre tall fra -127 til 127.

Hvert tegn/bokstav defineres som et tall mellom 0 og 127 som i ASCII-tabellen til høyre.

Hvis en bruker unsigned char får en også tilgang til tallene fra 128 til 255, som inneholder internasjonale bokstaver og diverse tegn.

ascii_extended.PNG

ascii_table.png

 

unsigned


unsigned

Hvis du ikke har bruk litt større heltall, og vet at du ikke trenger negative tall, kan du bruke unsigned foran variabeltypen.

Med f.eks. unsigned int kan du bruke alle 16 bit'ene til å lagre verdien din, og får tall fra 0 til 65535.

Det samme gjelder for unsigned char og unsigned long, hvor vi får bare positive tallverdier og dermed dobbelt så mange.

array


array:

Hvis vi trenger flere variabler av samme type som henger sammen på et eller annet vis, kan vi lage et array. For eksempel:

  int motstander[3]; 

Lager tre heltallsvariabler som kan brukes som vanlig int, men refereres til som

  motstander[0], motstander[1] og motstander[2]

Vi kan også ha array med flere dimensjoner:

  int ledKube[4][4][4];

 

Oppgaver


Oppgaver:

Oppgave 1:
Skriv et program som oppretter 2 heltalls-variabler som representerer høyden og bredden i et rektangel. Regn ut arealet av rektangelet og skriv så ut resultatet til Serial Monitor.

Hvis du ikke har brukt Serial Monitor før, finner du informasjon på denne siden: Serial Monitor

Oppgave 2: 
Lag en flyttalls-variabel Pi og sett verdien til 3.14 (husk å bruke punktum, ikke komma). Opprett så variabler for radius (som du setter en verdi på), diameter og omkrets.
Få programmet til å regne ut diameter og omkrets (lagres i variablene), og skriv så resultatene ut til Serial Monitor.

 

 


Neste artikkel -->