Claasen-tech https://claasen-tech.nl Fri, 10 Oct 2025 10:49:53 +0000 nl-NL hourly 1 https://wordpress.org/?v=6.8.3 https://claasen-tech.nl/wp-content/uploads/2022/02/cropped-favicon-32x32.gif Claasen-tech https://claasen-tech.nl 32 32 Grafische Rekenmachine https://claasen-tech.nl/c-projecten/grafische-rekenmachine/ Sat, 13 Sep 2025 23:05:57 +0000 https://claasen-tech.nl/?p=4204

Deze tool is nog in ontwikkeling en gebruik ik om mijn vaardigheden in C# en Visual Studio 2022 te oefenen en uit te breiden.

Meer over deze tool volgt.

Via ‘stuur een berichtje’ kun je contact opnemen voor vragen, opmerkingen en bugs.

Toelichtingen

Rekenmachine

Invoer
Voer getallen in d.m.v. de muis of via het nummerieke deel van het toetsenbord.
De volgende rekenkundige bewerkingen zijn er: +, −, × en ÷.

CE of de ‘delete’-toets
Deze wist alleen het huidige getal dat je aan het invoeren bent.

C
Wist alles, inclusief het huidige getal en de lopende berekening.

← of Backspace
Deze verwijdert het laatst ingevoerde cijfer of teken.

Wis geschiedenis
Deze knop verwijdert de lijst met berekeningen.

Berekenen
Druk je op =, dan wordt de berekening uitgevoerd. Druk je daarna opnieuw op =, dan wordt de laatste bewerking met hetzelfde tweede getal nog eens toegepast op het nieuwe resultaat.

Vervolg berekening
Druk na een berekening op +, -, *, ÷ om met de uitkomst verder te rekenen.

LET OP !!!
Een getal mag maximaal 28 cijfers lang zijn, inclusief de cijfers achter de komma.
We gebruiken geen wetenschappelijke schrijfwijze (zoals 1,2E+5).
Als een uitkomst langer is dan 28 cijfers en er zitten cijfers achter de komma, dan wordt het afgerond. Zitten er géén cijfers achter de komma en is het toch langer dan 28 cijfers, dan krijg je een foutmelding. Dit is een simpel rekenmachine, voor zulke berekeningen kun je het standaard rekenmachine van windows gebruiken.

Papier gewicht berekenen

Deze tool bestaat uit twee delen.

  1. Het gewicht van een bepaald formaat berekenen.
    Denk aan het eenvoudig bepalen van het gewicht van een kaart voor een mailing.
  2. Het papier gewicht berekenen.
    Neem een stuk papier, geef het formaat in en hoeveel dat stuk papier weegt in gram.
    Het programma berekent dan het gewicht in gram per viekante meter.
    (Dit is wat we ingeven bij het gewicht van het papier in de printer)
    Dit is een theoretische berekening, maar als het resultaat 118,76 is weet je dat het 120 grams papier is.

Gewicht berekenen
Geef de lengte en breedte van het vel papier in en vervolgens het grams gewicht van het papier. Klik op de knop ‘Bereken’ en de tool berekent het gewicht in gram uit van 1 vel van dat formaat.
Klik je op de knop ‘Herstel’ wordt alles terug gezet naar de begin stand.

Dikte papier berekenen
Geef de lengte en breedte van het papier in en weeg hoeveel gram dit vel weegt. Geef dit in. Klik op de knop ‘Bereken’ en de tool berekent hoe zwaar het papier is in Gram/m2.
Klik je op de knop ‘Herstel’ wordt alles terug gezet naar de begin stand.

Kijk afstand resolutie

Met deze tool kun je zien hoe groot je een foto kunt afdrukken.
Dat hangt af van:
– het aantal pixels (hoeveel puntjes de foto breed en hoog is)
– en de afstand waarop je de foto bekijkt.

Breedte en Hoogte
Je vult in hoeveel pixels de foto breed en hoog is.
De grootte van de afdruk wordt dan meteen opnieuw uitgerekend. Je ziet het resultaat rechts in beeld.

Afbeeldingsvak
Of je sleept een foto naar het afbeeldingsvak.
Dat werkt alleen met deze soorten: jpg, jpeg, png, bmp, gif, tif en tiff.
De velden Breedte en Hoogte worden dan vanzelf ingevuld.

Kijkafstand schuif
Met de schuif kun je de kijkafstand veranderen.
Onder de schuif zie je die afstand in meters en centimeters.
De berekende afdrukgrootte staat steeds rechts in beeld.

Resultaten (rechtsboven)
De grootte wordt weergegeven als goede én matige kwaliteit.

Reset Breedte en Hoogte
Als je een foto naar het afbeeldingsvak in de tool hebt gesleept en de waarden voor ‘Breedte’ en ‘Hoogte’ handmatig hebt aangepast, kun je de waarden van de foto weer terug zetten door op de foto te klikken.

Afmeting foto na Photoshop bewerking
De knop ‘Afmeting foto na Photoshop bewerking’ verdubbeld de breedte en hoogte van de ingegeven aantal pixels.
Dit is een extra bewerking die uitgevoerd moet worden in Photoshop.
Je kunt dit maar eenmaal doen, daarna verdwijnt deze knop.
Deze verschijnt weer als je op het afbeeldingsvak klikt (waarden worden gereset) of een nieuwe foto in het vak sleept.

Informatie over de kwaliteit van foto’s in het algemeen
Hier staan enkele dingen waar je de foto op kunt beoordelen die de kwaliteit nadelig kunnen beïnvloeden.
Dus heb je voldoende pixels om een bepaald formaat te printen, wil dit nog niet zeggen dat de kwaliteit van de afdruk goed zal zijn.

A-formaten berekenen

Met deze tool bereken je de andere zijde die dezelfde verhouding heeft als een A-formaat.
Voorbeeld
Dus als je 210 mm ingeeft en aangeeft dat dit de korte zijde is, dan rekent hij de lange zijde uit die dan 297 mm is. Dit doet de tool voor elke maat. Dus als de korte zijde 85 mm is, rekent de tool de lange zijde uit. Deze is dan 120 mm. De verhouding van de lange en korte zijde is gelijk aan die van een A-formaat.
Dus als je dit vergroot naar een A4 of A3 dan heb je geen witte randen.

Zijde ingeven
Vul de waarde in het invoerveld ‘Geef zijde in’ en kies of deze in millimeters, centimeters of pixels is.

Lange/korte zijde
Geef daarna aan of het om de lange of de korte zijde gaat onder ‘Invoer zijde is:’.

Berekenen
Klik op de knop ‘Bereken’ om direct beide maten te zien (deze verschijnen onderaan).

Kopiëren
Met het kopieericoontje (achter de berekende waarden) zet je die waarde in het klembord zodat je die ergens anders kunt plakken.

Herstel
Klik op ‘Herstel’ om alles terug te zetten naar de beginstand.

Let op!
Als je van centimeters naar millimeters of pixels overschakelt en de ingevoerde waarde decimalen bevat, worden deze decimalen verwijderd.

Lijst met A-formaten
Rechts staat een lijst met A-formaten in mm en cm ter info.

Unieke codes

In dit deel van het programma kun je unieke codes genereren voor diverse toepassingen.
Bijvoorbeeld voor het nummeren van toegangskaarten, inlogcodes voor een website of iets vergelijkbaars.

Aantal codes
In het veld ‘Aantal codes (1 t/m 100.000)’ geef je aan hoeveel unieke codes dat je nodig hebt.
Met een als minimaal aantal 1 code en 100.000 codes als maximum.
Geef je een waarde die kleiner is dan 1 wordt de waarde terug gezet naar 1.
Bij een waarde groter dan 100.000 wordt de waarde terug gezet naar 100.000.
Je kunt deze waarde handmatig invoeren of gebruik maken van de pijltjes.

Lengte van elke code
In het veld ‘Lengte van elke code (2 t/m 50)’ geef je aan uit hoeveel tekens de code moet bestaan. Dit is zonder de prefix en postfix.
Voorbeeld:
Je geeft 15 in en de velden prefix en postfix zijn leeg, krijg je codes van 15 tekens.
Zet je de tekst ‘voor’ in bijvoorbeeld prefix, dan krijg je codes van 19 tekens.
Je kunt deze waarde handmatig invoeren of gebruik maken van de pijltjes.

Prefix
In het veld ‘Prefix’ zet je tekst die direct VOOR de code komt.
Deze tekst is maximaal 10 tekens lang.
De tekst mag alleen bestaan uit de volgende tekens:
1234567890abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ!@#$%&*-_=+[]{}()\\/?;:,.<>|

Postfix
In het veld ‘Postfix’ zet je tekst die direct NA de code komt.
Deze tekst is maximaal 10 tekens lang.
De tekst mag alleen bestaan uit de volgende tekens:
1234567890abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ!@#$%&*-_=+[]{}()\\/?;:,.<>|

Voorbeeld Prefix en Postfix
Achter de invoervelden van prefix en postfix kun je zien hoe de code er uit komt te zien.
Het woord ‘CODE’ moet de gegenereerde tekst voor de codes voorstellen.
Dus staat er niets voor en na het woord ‘CODE’, dan is er ook geen prefix of postfix ingegeven. Je hoeft ze niet te gebruiken of je kunt een van de twee of allebei gebruiken.
Houd er rekening mee dat de totale lengte van de code dus het aantal tekens wordt plus de lengte van de prefix en/of postfix.

Tekens keuze
Dan heb je de diverse aanvink vakjes.
Deze zetten standaard tekst in het veld ‘Lijst met karakters die gebruikt worden voor code generatie (maximaal 92 tekens):’.
– Cijfers -> 1234567890
– Kleine letters -> de letters ‘a’ t/m ‘z’
– Hoofdletters -> de letters ‘A’ t/m ‘Z’
– Speciale tekens simpel -> !@#$%&*-_=+[]{}()
– Speciale tekens uitgebreid -> \?/;^”:’,<.>|

Let op!
Bij speciale tekens uitgebreid zitten tekens die in sommige programma’s voor ongewenste gevolgen kunnen zorgen.

Lijst met karakters …
In het veld ‘Lijst met karakters die gebruikt worden voor code generatie (maximaal 92 tekens):’ kun je ook zelf tekens invoeren.
Het veld accepteert geen dubbele tekens en alleen de volgende tekens:
1234567890abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ!@#$%&*-_=+[]{}()\?/;^”:’,<.>|

Als je alle 5 vakjes hebt aangevinkt, heb je alle 92 tekens die zijn toegestaan.
Je kunt deze in het invoerveld aanpassen, bijvoorbeeld als je er geen ‘e’ in wil hebben (of een ander teken).

Onder het invoer veld staat hoeveel unieke codes die je met deze instelling maximaal kunt genereren.

Reset
Met de knop ‘Reset’ zet je alles weer in de begin stand terug.

Genereren
Met de knop ‘Genereren en opslaan’ worden de codes gemaakt en opgeslagen.
Een venster wordt geopend waar je kunt aangeven waar en onder welke naam de codes opgeslagen worden. De codes worden als een ‘CSV’ bestand opgeslagen, dit kan in Excel geopend worden.

Licentieovereenkomst

Copyright ©2025 L.L.M. Claasen. Alle rechten voorbehouden.

Dit programma wordt gratis ter beschikking gesteld onder de volgende voorwaarden:

  1. Gebruik:
    U mag dit programma gratis gebruiken voor persoonlijke en niet-commerciële doeleinden.
  2. Verspreiding:
    U mag dit programma uitsluitend verspreiden in de originele, ongewijzigde vorm, inclusief deze licentie.
  3. Wijzigingen:
    Het aanpassen, reverse-engineeren, decompileren of anderszins wijzigen van dit programma is niet toegestaan.
  4. Commercieel gebruik:
    Voor commercieel gebruik is voorafgaande schriftelijke toestemming van de auteur vereist.
  5. Aansprakelijkheid:
    Dit programma wordt geleverd “zoals het is”, zonder enige garantie.
    Gebruik is geheel op eigen risico.

Door dit programma te gebruiken, gaat u akkoord met deze voorwaarden.

(Voor vragen ga naar de website)

Grafische Rekenmachine 0.4.0

]]>
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.

]]>