11. Variabelen en datatypes

11. Variabelen en datatypes

Doel van deze Experience:

In deze Experience gaan we uitleggen wat variabelen en constantes zijn en hoe je deze een naam kunt geven. Daarnaast behandelen we verschillende soorten datatypes.

Wat heb je deze Experience nodig:

  • Arduino set
  • 7 segment display
  • diverse kabels

De Experience;

Variabelen

Om in een programma goed te kunnen rekenen en om beslissingen te kunnen nemen maken we gebruik van variabelen. Een variabele heeft een bepaalde waarde die bewaard wordt voor toekomstige berekeningen, of varieert gedurende het programma verloop, en een bepaalde variatie op een ingang. Er zijn twee soorten “variabelen” namelijk een variabele die altijd dezelfde waarde heeft (“constante”) en een variabele die in het programma kan variëren van waarde (“variabele”). Een variabele bestaat uit twee parameters;

De naam van de variabele
Het type of soort van de variabele

Het in het programma definiëren van de variabelen noemen we declareren van variabelen.

Voorbeelden zijn;

  • int greenLedPin;                           // hiermee declareren we een variabele met als datatype “integer” en als naam greenLedPin
  • const int greenLedPin = 13 ;    // hiermee declareren we een constante met als datatype “integer” en als naam greenLedPin en geven hem de waarde “13”

Het verschil tussen een “int” (integer) en een “const int” (constante integer) is dat de integer in het programma van waarde kan variëren dit noemen we dus een “variabele”, terwijl de constante integer in het programma altijd dezelfde waarde behoud, dit noemen we een “constante”

Als we dus een LED op een bepaalde uitgang willen gebruiken, dan heeft deze altijd dezelfde pin uitgang en gebruiken we de “const int” declaratie, bijvoorbeeld const int greenLedPin = 13;

Als we een variabele hebben zoals de spanning die we meten die uit de loper van een potentiometer komt dan zal deze spanning variëren als je aan de potmeter draait. Hier zullen we dan een “int” declareren.

Namen voor variabelen

Om een programma goed leesbaar te maken gebruiken we namen die logisch en voor iedereen te begrijpen zijn. Daarnaast gebruiken we de Engelse taal en maken we gebruik van kleine en hoofdletters volgens het camelCase principe. We gebruiken standaard de lowerCamelCase schrijfwijze. Dit geldt niet alleen voor variabelen maar voor alle code die je schrijft. LowerCamelCase betekent dat een variabele altijd met een kleine letter begint en elke lettergreep met een hoofdletter.

Voorbeelden zijn:

  • inputVariabele
  • inputLed
  • readSensor
  • streetAddress
  • greenLed
  • ledPin

Als we deze basis regels bij elke regel programmeer taal die we schrijven volgen, dan krijgen we goede software die door iedereen te begrijpen is en later ook aan te passen is.

Soorten variabelen

In Experience 9, bij het binair rekenen, hebben we geleerd dat het geheugen van de Arduino beperkt is. Om te zorgen dat er zo weinig mogelijk geheugen wordt gereserveerd en zo te voorkomen dat het programma vast loopt, vertellen we van te voren hoeveel geheugen er gereserveerd moet worden.

We hebben hiervoor de volgende opties:

byte: bij een byte worden er 8 bits gereserveerd, dit getal zal dus altijd tussen de 0 en 255 liggen. Als je dit van te voren al weet bespaar je hiermee dus geheugen.

int: bij een integer rekenen we met 16 bits (2 bytes), hier kunnen dus grotere decimale getallen in verwerkt worden. Aangezien 216 gelijk is aan 65.536. Aangezien we met negatieve en positieve getallen werken, kunnen we van -32.768 tot 32.767 rekenen. Is je variabele 32.767 en tel je er 1 bij op, dan wordt hij -32.768. Hier moet je dus rekening mee houden.

Voorbeeld: int calcVariabele = 15.000; kent het getal 15.000 toe aan de variabele calcVariabele.

long: bij een long type gebruiken we 32 bits. Hiermee kunnen we dus hele grote getallen gebruiken, van -2.147.483.647 tot en met +2.147.483.648.

Voorbeeld: long calcVariabele = 95.000; kent het getal 95.000 toe aan de variabele calcVariabele. Dit zou met de variabele “int” dus niet kunnen omdat het getal groter is dan 32.767.

float: We gebruiken float als we ook met cijfers achter de komma willen werken. Deze getallen nemen veel geheugen in.

Voorbeeld: float calcVariabele = 3.1415    // is het getal Pi in vier cijfers achter de komma. Weet je nog niet wat Pi is, kijk dan hier

boolean: Om binaire waardes te onthouden (true of false, 1 of 0) kun je dit datatype gebruiken. We zullen dit in deze cursus niet gebruiken.

char: Staat voor een karakter, ook wel een ASCII waarde. Je kent deze misschien wel van de computer. Je kunt dan de waarde van een letter of symbool opslaan. Onderstaande tabel geeft deze ASCII waardes aan. Je kunt dit op je computer testen met de “Alt” toets. Als je deze indrukt en dan hierna 68 dan krijg je de hoofdletter D te zien. Probeer dit ook maar met een aantal andere karakters.

ascii

Hoe meer variabelen je gebruikt, hoe eerder het geheugen vol zal zijn. We proberen deze dus een zo’n klein mogelijke waarde te geven.

Het zal je opvallen dat we een punt gebruiken en geen komma als scheiding voor de decimalen. Dit doen we aangezien internationaal hiervoor de punt wordt gebruikt. Ook in de programmeer taal gebruiken we hiervoor dus de punt.

 

Opdracht 1  programmeren van een 7-segment LED
Je kunt het 1-digit 7-segment display via de Arduino aansturen. We gaan proberen zelf een programma te schrijven om het getal “3” op het display te krijgen.
Om het display goed aan te sluiten kun je onderstaand plaatje gebruiken.  Om het getal ‘drie’ te schrijven moeten we dus de LED’s A, B, G, C en D van spanning voorzien. Als deze 5 LED’s aanstaan kunnen we het getal 3 uitlezen. Op de rechter tabel kun je zien dat we dus de digitale ingangen van de  Arduino de pinnen 2, 3, 8, 4 en 5 van het display “hoog” moeten maken.

7segment_11

We hebben een voorbeeld gemaakt hoe je de aansluitingen kunt maken op de digitale uitgangen van de Arduino. Alle aansluitingen zijn aangesloten via een weerstand.

7segment_11 opbouw

Als je het zo hebt aangesloten krijg je de volgende connecties;

Arduino PIN     Display connectie

2                                7 (segment A)
3                                6 (segment B)
4                                4 (segment C)
5                                2 (segment D)
6                                1 (segment E)
7                                9 (segment F)
8                              10 (segment G)

Maak een sketch waarbij je;

  • Eerst alle variabelen declareert voor alle 7 uitgangen / LED’s, geen ze een uniek Engelse naam;
  • Maak in de setup de digitale poorten een uitgang met het commando pinMode(pinnumber,OUTPUT);
  • Maak een loop en gebruik het digitalWrite commando om een digitale uitgang hoog te maken;

Als je alles goed hebt aangesloten en geprogrammeerd, zie je het getal “3” op het display verschijnen. Als het niet lukt bekijk dan gestructureerd wat je verkeerd kunt hebben gedaan in de electronica en het programma.

Opdracht 2 van 0 to 9 tellen

Als je opdracht 1 goed hebt gedaan dan ben je al een kei. Great job! We gaan nu een stapje verder. Je begrijpt nu hoe je het display aan kunt sturen. De volgende stappen is om verschillende getallen te laten zien;

  • Als de Arduino start willen we het getal “0” zien.
  • Na 1 seconde wachten willen we het getal “1” zien
  • En dit gaat zo door tot het getal “9”
  • Als de 9 is bereikt begint de sketch weer met het getal “0”

Tips;

  • Maak eerst een overzicht hoe je elk getal kunt aansturen
  • De declaraties kun je gebruiken uit opdracht 1

Als het gelukt is maak je een korte video en post je dit op onze Facebook pagina en deel het met je vrienden

Succes

Wat heb je deze Experience geleerd;

  • Hoe je variabelen kunt declareren;
  • Wat voor types variabelen er zijn.

 

 

 

TestenStatus

2 gedachten over “11. Variabelen en datatypes”

  1. const int ledPin5=2,3,8,6,5; //cijfer 3

    ^

    exit status 1
    expected unqualified-id before numeric constant

    Deze fout snap ik niet, kan iemand mij misschien helpen hiermee?

Een reactie plaatsen