Claasen-tech https://claasen-tech.nl Sun, 29 Dec 2024 13:55:06 +0000 nl-NL hourly 1 https://wordpress.org/?v=6.7.2 https://claasen-tech.nl/wp-content/uploads/2022/02/cropped-favicon-32x32.gif Claasen-tech https://claasen-tech.nl 32 32 Wat is de structuur van een programma https://claasen-tech.nl/c-plus-plus/structuur-van-een-programma/ Sun, 21 Apr 2024 17:04:54 +0000 https://claasen-tech.nl/?p=2872

Omschrijving
De structuur van een Arduino programma (sketch) is vrij eenvoudig en omvat over het algemeen de volgende hoofdonderdelen:

  1. Opmerkingen: Begin van een sketch vaak met opmerkingen die informatie geven over de auteur, het doel van de sketch en andere relevante details. Opmerkingen beginnen met // voor enkele regels of /* */ voor blokken tekst.
  2. Bibliotheken Includeren: Hier voeg je bibliotheken toe die nodig zijn voor jouw project. Dit gebeurt aan het begin van de sketch met de #include directive. Voorbeeld: #include <Servo.h> om een servomotor te besturen.
  3. Variabelen Definiëren: Hier declareer je globale variabelen die in de hele sketch gebruikt zullen worden. Je definieert bijvoorbeeld pinnen of andere parameters die je in meerdere functies gebruikt.
  4. Setup() Functie: Deze functie wordt eenmaal uitgevoerd bij het starten van de sketch. Je gebruikt het om pinmodi in te stellen (input, output), seriële communicatie te starten, of andere initialisatiecode uit te voeren die nodig is voordat de hoofdloop begint.
void setup() {
  pinMode(13, OUTPUT); // Stel pin 13 in als output
  Serial.begin(9600);  // Start seriële communicatie met 9600 bps
}
  1. Loop() Functie: De kern van een Arduino sketch, deze functie loopt continu zolang het Arduino bord van stroom wordt voorzien. De loop() bevat de code die de logica van het project bestuurt, zoals het lezen van sensoren, het maken van berekeningen en het aansturen van outputs.
void loop() {
  digitalWrite(13, HIGH);   // Zet pin 13 aan
  delay(1000);               // Wacht een seconde
  digitalWrite(13, LOW);    // Zet pin 13 uit
  delay(1000);               // Wacht nog een seconde
}
  1. Additionele Functies: Je kunt extra functies definiëren die door loop() of setup() worden aangeroepen. Deze functies kunnen helpen om de code overzichtelijk en modulair te houden.

Elk van deze onderdelen helpt bij het organiseren van de code en maakt het programmeren van de microcontroller effectiever en gestructureerder.

Gebruik van hoofd- en kleine letters
Gebruik hoofd- en kleine letters op de correcte manier, C++ is hoofdletter gevoelig. Dit wil zeggen dat het commando PinMode(13, OUTPUT); niet werkt en pinMode(13, OUTPUT); wel. Omdat pinMode() met een kleine letter p aan het begin geschreven moet worden. Dit geldt dus ook voor variabelen. Hierdoor zijn int pinLED = 13; en int PinLED = 14; twee verschillende variabelen. Gebruik voor variabelen duidelijke namen die omschrijven wat de inhoud van een variabele is, bijvoorbeeld int geboorteJaar = 1990; en int geboorteDag = 23;.

Gebruik van de ‘;’ (puntkomma)
In programmeren is de puntkomma (;) zoals een punt aan het einde van een zin. Het vertelt de computer dat je klaar bent met een instructie. Als je het vergeet, raakt de computer in de war omdat het niet weet waar de ene instructie stopt en de volgende begint. Het is een klein teken, maar heel belangrijk om fouten te voorkomen.

Gebruik van ‘{}’ (accolades)
Stel je voor dat je een reeks taken hebt die je wilt uitvoeren, maar alleen onder bepaalde omstandigheden. Accolades helpen je om deze taken als één geheel te groeperen, zodat ze alleen worden uitgevoerd wanneer die specifieke omstandigheden zich voordoen. Ze werken als een container die de taken bij elkaar houdt en vertelt de computer dat alles binnen die container samen hoort. Dit maakt je code gemakkelijker te begrijpen en te beheren, omdat je duidelijk kunt zien welke taken samen worden uitgevoerd in een bepaalde situatie. Je ziet ze bijvoorbeeld bij de setup() en loop() functie. Zo zie je wat er bij elke functie hoort, ze geven het begin en het einde aan.

Inspringen van de programma regels
Het inspringen van tekst in C++ code (of in elke andere programmeertaal) is belangrijk om verschillende redenen:

  1. Leesbaarheid: Goed ingesprongen code is veel makkelijker te lezen en te begrijpen. Dit helpt de persoon die de code schrijft en anderen die later de code moeten aanpassen.
  2. Structuur: Inspringen maakt de structuur van de code duidelijker. Vooral bij herhalingen zoals lussen (for) en voorwaarden (if). Hierdoor kun je snel zien welke stukken code bij elkaar horen.
  3. Fouten vermijden: Correct inspringen helpt om logische fouten te voorkomen. Als de inspringing niet klopt, kan dit betekenen dat er een fout in het programma zit.
  4. Samenwerking: Als iedereen dezelfde inspringstijl gebruikt, is het makkelijker voor teams om samen te werken en de code te begrijpen.

Download het programma zonder inspring en verbeter het, door de code te laten inspringen.

Zonder en met inspring

Voorbeeld van een compleet programma

/*
  Eenvoudige LED knipper sketch
  Auteur: Laurens
  Beschrijving: 
  Dit programma knippert een LED die is aangesloten op pin 13 van een Arduino bord.
  De LED wordt om de seconde aan- en uitgezet, waarbij de status via de seriële monitor wordt weergegeven.
*/

// Inclusief de standaard Arduino bibliotheek
#include <Arduino.h> 

// Variabelen
int ledPin = 13; // Het pinnummer waarop de LED is aangesloten

void setup() {
  pinMode(ledPin, OUTPUT); // Stel de pinmode van ledPin in op OUTPUT
  Serial.begin(9600);      // Start de seriële communicatie met de computer
}

void loop() {
  turnLEDOn();   // Roep functie aan om de LED aan te zetten
  delay(1000);   // Wacht 1000 milliseconden (1 seconde)
  turnLEDOff();  // Roep functie aan om de LED uit te zetten
  delay(1000);   // Wacht nogmaals 1000 milliseconden (1 seconde)
}

// Functie om de LED aan te zetten
void turnLEDOn() {
  digitalWrite(ledPin, HIGH); // Zet de LED aan
  Serial.println("LED AAN");  // Stuur een bericht naar de seriële monitor
}

// Functie om de LED uit te zetten
void turnLEDOff() {
  digitalWrite(ledPin, LOW);  // Zet de LED uit
  Serial.println("LED UIT");  // Stuur een bericht naar de seriële monitor
}
]]>
De Arduino C++ taal https://claasen-tech.nl/c-plus-plus/de-arduino-c-plusplus-taal/ Tue, 25 Jun 2024 20:23:55 +0000 https://claasen-tech.nl/?p=3482 , , , ,

Arduino C++ is een versie van C++ aangepast voor Arduino microcontrollers en andere compatibele microcontroller-systemen. Het bevat speciale functies en bibliotheken om hardware zoals sensoren, motoren en dergelijke gemakkelijk uit te lezen of aan te sturen. Arduino C++ code wordt geschreven in de Arduino IDE. Dit is een eenvoudige programmeer omgeving om te gebruiken. Ze helpt bij het ontwikkelen, compileren en uploaden van de code naar de hardware. Hierdoor is het een goede keuze voor zowel beginners als gevorderden.

Voor installatie-instructies van de Arduino IDE en configuratie-details van het ESP32-DevKitC bord, raadpleeg ‘Installeren Arduino IDE‘ en ‘Configuratie van ESP32-DevKitC in Arduino IDE‘. Deze zijn ook te vinden onder ‘Technische Info’.

We gaan hieronder de Arduino C++ taal uitleggen. Hier wordt niet te diep in de Arduino C++ taal in gegaan, maar genoeg om de workshops te maken en meer. Ik begin met het invoeren van de taal delen die we in de workshops gebruiken. Zodra die klaar zijn, voeg ik ook andere toe.

Als je deze pagina voor het eerst bekijkt, kun je het beste van boven naar onderen werken om zo een goed overzicht te krijgen van Arduino C++. Later kun je rechtstreeks naar het onderwerp gaan wat je nog een keer wil bekijken. Zoeken met de zoekbalk kan natuurlijk ook.

  • Wat is de structuur van een programma
    Hier wordt omschreven waar een programma uit bestaat en hoe dit opgebouwd is.
  • setup()
    Dit is de eerste standaard functie die wordt doorlopen. De commando’s die hier uitgevoerd worden, hoeven en/of mogen maar één keer uitgevoerd te worden.
  • loop()
    Dit is de tweede standaard functie die wordt uitgevoerd. Dit is het hoofd gedeelte dat steeds weer wordt herhaald. Dus wordt het einde van deze functie bereikt, begint deze weer vooraan. Er komt geen einde aan.

Wat zijn variabelen

Bijzondere variabelen

  • Arrays
  • Constanten

Over variabelen

zichtbaarheid (scope)

Logische operatoren
(! && ||)

Vergelijkingsoperatoren
(== != < <= > >=)

Rekenkundige operatoren
(= + / * %)

Samengestelde toewijzingsoperatoren
(+= -= *= /= %= ++ – –)

In- en uitvoer

Zelf gemaakte functies

Tijd

Voorwaardelijke structuren

Herhaal structuren

  • for
  • do…while
  • while

Overige

  • break
  • continue
  • goto
  • return

Onder communicatie verstaan we het praten met andere microcomputers, sensoren, computer en gebruikers. Hier gebruiken we diverse protocollen (manieren) voor. Debuggen is het onderzoeken waarom iets gebeurt of juist niet gebeurt. Dit doe je als het programma niet doet wat jij ervan verwacht.

Serial

SPI

Wire / I2C

WIFI

Bluetooth

Debug

Nog geen gegevens

]]>
Notities https://claasen-tech.nl/c-plus-plus/notities/ Thu, 27 Jun 2024 18:00:22 +0000 https://claasen-tech.nl/?p=3467 ,

Notities in Arduino C++ zijn kleine stukjes tekst die je in je code schrijft om uit te leggen wat de code doet. De computer leest deze notities niet wanneer hij de code uitvoert. Ze helpen je onder andere om je eigen code beter te begrijpen. Er zijn twee soorten Notities:

  1. Enkelregelig notities
    Deze beginnen met ‘//’. Alles wat na ‘//’ op dezelfde regel staat, is een notities.
  2. Meerregelig notities
    Deze beginnen met ‘/*’ en eindigen met ‘*/’. Alles tussen ‘/*’ en ‘*/’ is een notitie, ook als het over meerdere regels gaat.

Waarom gebruik je commentaar?

  • Helderheid
    Notities maken je code gemakkelijker te begrijpen. Als je later terugkomt naar je code, helpen ze je herinneren wat je hebt gedaan.
  • Delen
    Als je je code deelt met anderen, helpt een notities hen te begrijpen wat elk deel van de code doet.
  • Herinneren
    Notities helpen je te herinneren waarom je bepaalde keuzes in je code hebt gemaakt. Of wat een eigen gemaakte functie doet, wat je door moet geven en wat de functie terug geeft.
  • Fouten vinden
    Als je problemen in je code probeert op te lossen, helpen notities je begrijpen waarom je bepaalde stukken code hebt geschreven. Ook kun je code tijdelijk uitschakelen door er een notitie van te maken.

Enkelregelig notitie

// Dit is een enkelregelig notitie.
// int ledPin = 16;
int ledPin = 13;  // Dit betekent dat de groene LED op pin 13 zit.

Meerregelig notitie

/* 
  Dit is een meerregelig notitie.
  Het kan over meerdere regels gaan.
*/
int ledPin = 10; /* Dit betekent dat de rode LED op pin 10 zit */

// onderstaande code tijdelijk uitgeschakeld.
/*
for(int x=0; x<5; x++){
  Serial.println("Print iets 5 keer");
}
*/

In het kort
Notities zijn kleine stukjes tekst die je in je code schrijft om dingen uit te leggen. Ze maken je code makkelijker te begrijpen en zijn handig voor jezelf en voor anderen die naar je code kijken. Maar doen verder niets.

]]>
setup() https://claasen-tech.nl/c-plus-plus/setupfunctie/ Tue, 23 Jan 2024 20:37:02 +0000 https://claasen-tech.nl/?p=2496 ,

Beschrijving
De setup()-functie wordt aangeroepen wanneer een programma begint. Gebruik deze functie om taken eenmalig uit te voeren. De setup()-functie wordt slechts één keer uitgevoerd, dit is na elke inschakeling of herstart (reset) van het microprocessor board. Wat in de setup() functie zit, is alles wat tussen de accolades {} staat. Deze geven het begin en het einde aan.

Syntax
setup() {
functies;
}

Parameters
functies: een of meerdere regels programma code.

Geeft terug
Niets.

Voorbeeld

int pin = 6;

void setup() {
  Serial.begin(115200);
  pinMode(pin, INPUT);
}

void loop() {
  // ...
}

Toelichting voorbeeld
In het voorbeeld zie je 2 functies staan. Deze zijn ‘Serial.begin(115200);’ en ‘pinMode(pin, INPUT);’. Dit zijn functies die je maar éénmaal hoeft uit te voeren. Daarom staan ze in setup()

Opmerkingen en waarschuwingen
De variabelen die in de setup()-functie geïnitieerd worden zijn alleen in de setup()-functie zichtbaar.

]]>
loop() https://claasen-tech.nl/c-plus-plus/loopfunctie/ Thu, 25 Jan 2024 21:24:39 +0000 https://claasen-tech.nl/?p=2549 ,

Beschrijving
Nadat de setup()-functie alle eenmalige taken heeft uitgevoerd, wordt de loop()-functie aangeroepen. De loop()-functie blijft zich herhalen. De functie begint met het eerste commando binnen de loop()-functie en voert daarna alle andere commando’s binnen deze functie uit. Bij het laatste commando gekomen, binnen de loop()-functie, springt het programma weer terug naar het eerste commando van de loop()-functie en gaat daar weer verder. Dit blijft zich herhalen totdat je het microprocessorbord uitzet of een herstart geeft. Wat in de loop() functie zit, is alles wat tussen de accolades {} staat. Deze geven het begin en het einde aan.

Syntax
loop() {
functies;
}

Parameters
functies: een of meerdere regels programma code.

Geeft terug
Niets.

Voorbeeld

int ledPin = 6;

void setup() {
  // ...
}

void loop() {
  digitalWrite(ledPin, HIGH);
  delay(1000);
  digitalWrite(ledPin, LOW);
  delay(1000);
}

Toelichting voorbeeld
De loop()-functie bevat vier regels code. Op regel 8 zet de digitalWrite()-functie ledPin op HIGH, bijvoorbeeld om een led te activeren. Vervolgens wacht het programma 1.000 milliseconden (1 seconde). Daarna wordt ledPin op LOW gezet, gevolgd door nog eens 1.000 milliseconden wachten. Dit is het laatste commando in de loop(). Het programma keert terug naar het eerste commando en voert alle commando’s binnen de loop()-functie opnieuw uit: van regel 8 naar 9, 10, 11 en terug naar 8. Dit proces blijft zich herhalen.

Opmerkingen en waarschuwingen
De variabelen die in de loop()-functie geïnitieerd worden zijn alleen in de loop()-functie zichtbaar.

]]>
if https://claasen-tech.nl/c-plus-plus/if/ Sun, 17 Mar 2024 22:53:04 +0000 https://claasen-tech.nl/?p=2793 , ,

Beschrijving
De if-opdracht voert een controle uit. Als deze controle waar is, wordt de programma code binnen de if-opdracht uitgevoerd. Bijvoorbeeld ‘1 == 1’ is waar (true), maar ‘1 == 2’ is onwaar (false).

Syntax
if(vergelijking) {
functies;
}

Parameters
vergelijking: dit is een boolean vergelijking die als resultaat waar (true) of onwaar (false) heeft.
functies: een of meerdere regels programma code.

Enkele voorbeelden van vergelijkingen
1 == 1 (is gelijk aan, true) | 1 == 2 (is gelijk aan, false) | 1 > 2 (is groter dan, false) | 5 > 2 (is groter dan, true)
5 != 6 (is niet gelijk aan, true) | 5 <= 8 (is kleiner of gelijk aan, true) | 5 >= 8 (is groter of gelijk aan, false)

Geeft terug
Niets.

Voorbeeld

int temperatuur = 0;

void setup() {
  // ...
}

void loop() {

  // vul de variabele temperatuur door een temperatuursensor te lezen.

  if(temperatuur > 25){
    // Wordt uitgevoerd als de vergelijking waar is.
    // Geef aan dat het warm is.
  }

}

Toelichting voorbeeld
In de loop()-functie staat op regel 9 bijvoorbeeld een opdracht om een temperatuursensor uit te lezen en deze waarde wordt dan in de variabele ‘temperatuur’ gezet. Op regel 11 staat de if-opdracht en deze controleert of de temperatuur groter is dan 25. Indien de vergelijking true (waar) is, wordt een melding gegeven dat het warm is. De if-opdracht loopt dus van regel 11 t/m 14. Alles wat tussen de accolade ({) op regel 11 en de accolade (}) op regel 14 staat wordt uitgevoerd. Dit kan één regel zijn, maar ook 20 regels of meer.

]]>
else https://claasen-tech.nl/c-plus-plus/else/ Thu, 26 Dec 2024 13:23:31 +0000 https://claasen-tech.nl/?p=4058 , ,

Beschrijving
Else is een uitbreiding van de if-opdracht en heeft 2 vormen. Dit zijn de ‘else {}’ en de ‘else if () {}’.

De ‘else {}’ is de eenvoudigste, als de if controle niet waar is wordt de programma code achter ‘else’ (die tussen de ‘{}’ staat) uitgevoerd.

Met ‘else if () {}’ wordt een nieuwe controle uitgevoerd. als deze waar is, wordt de programma code (die tussen de ‘{}’ staat) uitgevoerd.

Je moet minimaal de ‘if () {}’ gebruiken. Je mag daarna één ‘else {}’ gebruiken. Of je mag een of meerdere ‘else if () {}’ gebruiken. Deze moet altijd na ‘if () {}’ én voor de ‘else {}’ komen. De ‘else {}’ is een optie, dus als je hem niet nodig hebt mag je hem weglaten.

Syntax

Optie 1 (zie ook if)

if (vergelijking) {
functies;
}

Optie 2 (alleen met else)

if (vergelijking) {
functies;
}
else {
functies;
}

Optie 3 (alleen met else if)

if (vergelijking) {
functies;
}
else if (vergelijking) {
functies;
}

Optie 4 (met else if én else)

if (vergelijking) {
functies;
}
else if (vergelijking){
}
else {
functies;
}

Bij optie 4 mogen dus meer dan een ‘else if () {}’ gebruikt worden.

Parameters
vergelijking: dit is een boolean vergelijking die als resultaat waar (true) of onwaar (false) heeft.
functies: een of meerdere regels programma code.

Enkele voorbeelden van vergelijkingen
1 == 1 (is gelijk aan, true) | 1 == 2 (is gelijk aan, false) | 1 > 2 (is groter dan, false) | 5 > 2 (is groter dan, true)
5 != 6 (is niet gelijk aan, true) | 5 <= 8 (is kleiner of gelijk aan, true) | 5 >= 8 (is groter of gelijk aan, false)

Geeft terug
Niets.

Voorbeeld

int leeftijd; // Variabele om de ingevoerde leeftijd op te slaan

void setup() {
  ...
}

void loop() {
  // geef de variabele 'leeftijd' een waarde
  
  // Bepaal de leeftijdsfase
    if (leeftijd < 12) {
      Serial.println("Je zit in de kindertijd.");
    } else if (leeftijd < 18) {
      Serial.println("Je zit in de tienerfase.");
    } else if (leeftijd < 65) {
      Serial.println("Je zit in de volwassenfase.");
    } else {
      Serial.println("Je zit in de seniorenfase.");
    }

  delay(1000); // Wacht 1 seconde
}

Toelichting voorbeeld
In dit voorbeeld wordt de variabele ‘leeftijd’ gevuld met een leeftijd van een persoon en wordt weergegeven in welke leeftijdfase de persoon zich bevindt.

De variabele ‘leeftijd’ wordt met een waarde gevuld.
Op regel 11 wordt door ‘if ()’ bepaald of ‘leeftijd’ kleiner is dan 12. Zo ja, dan wordt de programma code tussen de ‘{}’ uitgevoerd. In dit geval alleen regel 12, daarna gaat het programma verder naar regel 21. Als dit niet waar is gaat het programma verder op regel 13.

Hier wordt door ‘else if ()’ bepaald of leeftijd kleiner is dan 18. Zo ja, dan wordt de programma code tussen de ‘{}’ uitgevoerd. In dit geval alleen regel 14, daarna gaat het programma verder naar regel 21. Als dit niet waar is gaat het programma verder op regel 15.

Hier wordt door ‘else if ()’ bepaald of leeftijd kleiner is dan 65. Zo ja, dan wordt de programma code tussen de ‘{}’ uitgevoerd. In dit geval alleen regel 16, daarna gaat het programma verder naar regel 21. Als dit niet waar is gaat het programma verder op regel 17.

Hier wordt de ‘else {}’ uitgevoerd. Dit betekent dat de programma code tussen de ‘{}’ wordt uitgevoerd. In dit geval alleen regel 18, daarna gaat het programma verder naar regel 21.

Als het programma bij de regel met ‘else {}’ komt, wordt de programma code tussen de ‘{}’ altijd uitgevoerd.

]]>
Float https://claasen-tech.nl/c-plus-plus/float/ Sun, 29 Dec 2024 13:29:46 +0000 https://claasen-tech.nl/?p=3899 ,

Beschrijving
Float is een gegevenstype voor het opslaan van niet gehele (decimale) getallen.

Een float is een datatype dat gebruikt wordt om decimale getallen op te slaan, zoals ‘3.14’ of ‘-0.001’. Het verschil met een integer is dat een float ook waarden kan bevatten tussen hele getallen, wat handig is voor metingen die nauwkeurigheid vereisen, zoals temperatuur of snelheid. Een float neemt 4 bytes aan geheugen in beslag en kan een bereik aan van ongeveer -3.4E38 tot 3.4E38, met een precisie van ongeveer 6-7 cijfers.

  • Opmerkingen en waarschuwingen
    • Let op dat er geen komma wordt gebruikt om de gehele getallen te scheiden van de decimalen, maar een punt. Dus niet ‘3,14’ maar ‘3.14′.
    • Bij het toekennen van een waarde aan een variabele dien je altijd een punt te gebruiken, dus ‘1.0’ en NIET ‘1’.

Syntax
float var = waarde;

Parameters
var: variabelenaam.
waarde: de waarde die je toekent aan die variabele.

Voorbeeld

float Pi = 3.14159;
float temperatuur = 23.5;
float snelheid = 55.5;

Toelichting voorbeeld

Hierboven worden 3 variabelen gedefinieerd en wordt er een begin waarde toegekend. ‘Pi’ krijgt de waarde ‘3.14159’ toegekend, ‘temperatuur’ krijgt de waarde ‘23.5’ en ‘snelheid’ krijgt de waarde ‘55.5’. Neem bijvoorbeeld ‘temperatuur’, elke keer dat een temperatuur sensor uitgelezen wordt die waarde aan de variabele ‘temperatuur’ toegekend. Deze waarde wordt uitgedrukt met 1 of 2 decimalen en kan daardoor dus niet in een integer opgeslagen worden.

Opmerkingen en waarschuwingen
Geen.

]]>
Samengestelde toewijzingsoperatoren https://claasen-tech.nl/c-plus-plus/samengestelde-toewijzingsoperatoren/ Thu, 29 Aug 2024 21:04:49 +0000 https://claasen-tech.nl/?p=3867 , ,

Omschrijving
In Arduino C++ zijn operators speciale tekens die je helpen bij taken zoals rekenen en vergelijken. Je hebt rekenkundige operators zoals ‘+’, ‘-‘, ‘*’, en ‘/’ voor wiskundige berekeningen. Vergelijkingsoperators zoals ‘==’, ‘!=’, ‘>’, en ‘<‘ controleren of waarden gelijk zijn of hoe ze zich tot elkaar verhouden. Logische operators zoals ‘!’, ‘&&’, en ‘||’ voeren logische bewerkingen uit. Met deze operators wordt het makkelijker om berekeningen en vergelijkingen in je code uit te voeren, zodat je programma precies doet wat je wilt. Hier bekijken we de samengestelde toewijzingsoperatoren. Deze zijn vergelijkbaar met de rekenkundige operators, maar compacter. Er zijn er 10, maar we gaan er voor nu 7 bekijken.

Samengestelde toewijzingsoperatoren zijn speciale tekens in programmeertalen die je helpen om snel en efficiënt wiskundige bewerkingen uit te voeren en de resultaten op te slaan in variabelen.

  1. += (samengestelde optelling):
    • Voegt een waarde toe aan een variabele en slaat het resultaat op in dezelfde variabele.
    • Voorbeeld:
      Als x gelijk is aan 10 en je schrijft ‘x += 5’, dan wordt x nu 15.
      De lange versie zou zijn: ‘x = x + 5’
  2. -= (samengestelde aftrekking):
    • Trekt een waarde af van een variabele en slaat het resultaat op in dezelfde variabele.
    • Voorbeeld:
      Als y gelijk is aan 20 en je schrijft ‘y -= 4’, dan wordt y nu 16.
      De lange versie zou zijn: ‘x = x – 4’
  3. *= (samengestelde vermenigvuldiging):
    • Vermenigvuldigt een variabele met een waarde en slaat het resultaat op in dezelfde variabele.
    • Voorbeeld:
      Als z gelijk is aan 3 en je schrijft ‘z *= 2’, dan wordt z nu 6.
      De lange versie zou zijn: ‘z = z * 6’
  4. /= (samengestelde deling):
    • Deelt een variabele door een waarde en slaat het resultaat op in dezelfde variabele.
      Als de resultaat variabele (a) een int is, gaat een deel verloren. Alleen het gedeelte van het gehele deel van het getal wordt opgeslagen.
    • Voorbeeld:
      • Als a een integer is, dus ‘int a = 14’.
        Als a gelijk is aan 14 en je schrijft ‘a /= 4’, dan wordt a nu 3.
        De lange versie zou zijn: ‘a = a / 4’
      • Als a een float is, dus float a =14.
        Als a gelijk is aan 14 en je schrijft ‘a /= 4’, dan wordt a nu 3,5.
        De lange versie zou zijn: ‘a = a / 4’
  5. %= (samengestelde modulo):
    • Berekent de rest van de deling uit, van een variabele die gedeeld wordt door een waarde en slaat het resultaat op in dezelfde variabele.
    • Voorbeeld:
      Als b gelijk is aan 7 en je schrijft ‘b %= 3’, dan wordt b nu 1.
      3 zit 2 keer in 7 (dit is 6), dus houd je 1 over (dit is de rest).
      De lange versie zou zijn: ‘b = b % 3’
  6. — (decrement):
    • Verlaagt de waarde van een variabele met 1.
    • Voorbeeld:
      Als count gelijk is aan 5 en je schrijft ‘count–‘, dan wordt count nu 4.
      De lange versie zou zijn: ‘count = count – 1’
  7. ++ (increment):
    • Verhoogt de waarde van een variabele met 1.
    • Voorbeeld:
      Als score gelijk is aan 8 en je schrijft ‘score++’, dan wordt score nu 9.
      De lange versie zou zijn: ‘score = score +1’

Wat is pre-increment/post-increment en pre-decrement/post-decrement:

Pre-increment en post-increment, evenals pre-decrement en post-decrement, zijn manieren om een getal in programmeertalen zoals C++ te verhogen (incrementeren) of te verlagen (decrementeren). Bij pre-increment wordt het getal eerst verhoogd voordat het in een berekening wordt gebruikt, bijvoorbeeld ‘++x’. Bij post-increment wordt het getal eerst gebruikt in een berekening en daarna verhoogd, bijvoorbeeld ‘x++’. Hetzelfde geldt voor pre-decrement (–x) en post-decrement (x–), waarbij ‘–x’ eerst verlaagt en dan gebruikt, en ‘x–‘ eerst gebruikt en dan verlaagt. Deze operatoren zijn handig bij het tellen of bij lussen in programma’s.

  • Pre-increment (++) en pre-decrement (–): Eerst wordt de waarde van de variabele verhoogd of verlaagd, en daarna wordt deze nieuwe waarde gebruikt in de rest van de uitdrukking. Voorbeeld:
  int x = 5;
  int result = ++x; // result wordt 6, x wordt 6
  • Post-increment (++) en post-decrement (–): Eerst wordt de huidige waarde van de variabele gebruikt in de rest van de uitdrukking, en daarna wordt de waarde van de variabele verhoogd of verlaagd. Voorbeeld:
  int y = 5;
  int result = y++; // result wordt 5, y wordt 6

Deze operatoren zijn handig bij het schrijven van code omdat ze je helpen om sneller en efficiënter basis-wiskundige bewerkingen uit te voeren en variabelen te wijzigen.

Voorbeeld
Een veel gebruikte situatie de for-lus:

int ledPin = 13;  // Verbind de LED met pin 13

void setup() {
  pinMode(ledPin, OUTPUT);  // Stel de LED-pin in als uitgang
}

void loop() {
  for (int i = 0; i < 15; i++) {
    digitalWrite(ledPin, HIGH);  // Zet de LED aan
    delay(500);                  // Wacht 500 milliseconden
    digitalWrite(ledPin, LOW);   // Zet de LED uit
    delay(500);                  // Wacht 500 milliseconden
  }
  
  // Als de loop is voltooid, wacht het programma 10 seconden en begint weer opnieuw op regel 7.
  delay(10000); // wacht 10 seconden
}

Hier gebruiken we het ‘++’ teken om x elke keer met 1 te verhogen.

]]>
Vergelijkingsoperatoren https://claasen-tech.nl/c-plus-plus/vergelijkingsoperatoren/ Thu, 27 Jun 2024 20:45:26 +0000 https://claasen-tech.nl/?p=3689 , ,

Omschrijving
In Arduino C++ zijn operators speciale tekens die je helpen bij taken zoals rekenen en vergelijken. Je hebt rekenkundige operators zoals ‘+’, ‘-‘, ‘*’, en ‘/’ voor wiskundige berekeningen. Vergelijkingsoperators zoals ‘==’, ‘!=’, ‘>’, en ‘<‘ checken of dingen gelijk zijn of hoe ze zich tot elkaar verhouden. Logische operators zoals ‘!’, ‘&&’, en ‘||’ voeren logische bewerkingen uit. Met deze operators wordt het makkelijker om berekeningen en vergelijkingen in je code te doen, zodat je programma precies doet wat je wilt. Hier bekijken we de Vergelijkingsoperatoren.

Vergelijkingsoperatoren in Arduino C++ zijn speciale tekens die je kunt gebruiken om dingen met elkaar te vergelijken. Ze helpen je om te kijken of iets waar is of niet waar is in je programma. Hier zijn de belangrijkste:

  1. Gelijk aan
    ‘==’ (twee gelijke tekens naast elkaar). Dit gebruik je om te kijken of twee dingen precies hetzelfde zijn.
    • Bijvoorbeeld: ‘if (leeftijd == 10)’ betekent “als de leeftijd precies 10 is”.
  2. Niet gelijk aan
    ‘!=’ (uitroepteken en gelijkteken naast elkaar). Hiermee kijk je of twee dingen niet hetzelfde zijn.
    • Bijvoorbeeld: ‘if (kamer != “slaapkamer”)’ betekent “als de kamer niet de slaapkamer is”.
  3. Kleiner dan
    ‘<‘ (kleiner teken). Dit gebruik je om te zien of iets kleiner is dan iets anders.
    • Bijvoorbeeld: ‘if (aantalAppels < 5)’ betekent “als het aantal appels minder dan 5 is”.
  4. Kleiner dan of gelijk aan
    ‘<=’ (kleiner teken en gelijkteken naast elkaar). Hiermee kijk je of iets kleiner is dan of gelijk aan iets anders.
    • Bijvoorbeeld: ‘if (temperatuur <= 25)’ betekent “als de temperatuur 25 graden of minder is”.
  5. Groter dan
    ‘>’ (groter teken). Dit gebruik je om te kijken of iets groter is dan iets anders.
    • Bijvoorbeeld: ‘if (tijd > 12)’ betekent “als de tijd groter is dan 12 uur”.
  6. Groter dan of gelijk aan
    ‘>=’ (groter teken en gelijkteken naast elkaar). Hiermee kijk je of iets groter is dan of gelijk aan iets anders.
    • Bijvoorbeeld: ‘if (punten >= 100)’ betekent “als het aantal punten 100 of meer is”.

Waarom zijn Vergelijkingsoperatoren Handig?

  • Ze helpen je om beslissingen te nemen in je programma’s, zoals of je een lampje moet aanzetten als het donker is, of een bericht moet laten zien als iemand iets goed heeft gedaan.
  • Vergelijkingsoperatoren maken het makkelijker om te bepalen wat er moet gebeuren op basis van wat er gebeurt in je programma.

Voorbeeld
Stel je voor dat je een programma hebt dat controleert of het buiten regent. Je zou het kunnen schrijven als:

int regenSensor = 1;  // Stel in dat er regen is (1 betekent ja, 0 betekent nee)

if (regenSensor == 1) {
  Serial.println("Het regent buiten! Neem je paraplu mee.");
} else {
  Serial.println("Het regent niet buiten. Je kunt zonder paraplu gaan.");
}

Hier gebruiken we het ‘==’ teken om te kijken of regenSensor gelijk is aan 1. Als dat zo is, printen we een bericht om te zeggen dat het regent. Anders, als regenSensor niet gelijk is aan 1 (wat zou betekenen dat het niet regent), printen we een ander bericht.

Vergelijkingsoperatoren maken programmeren leuk omdat ze je helpen om je programma’s te laten weten wat ze moeten doen, net zoals je beslissingen maakt in het dagelijks leven!

]]>