Workshops – Claasen-tech https://claasen-tech.nl Sat, 22 Mar 2025 17:34:46 +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 Workshops – Claasen-tech https://claasen-tech.nl 32 32 Led aan en uit https://claasen-tech.nl/workshops/led-aan-en-uit/ Sun, 20 Mar 2022 18:56:34 +0000 https://claasen-tech.nl/?p=1829

Workshop 1

We starten met een eenvoudige kennismaking waarbij we een LED aan- en uitzetten met een microprocessorbord.

In deze workshops maak ik voornamelijk gebruik van het betaalbare microprocessorbord ESP32-DevKitC Bord, dat vanaf de €10,- kost en veel mogelijkheden biedt.

Om dit microprocessorbord te kunnen gebruiken in combinatie met de Arduino IDE, moeten enkele installatie- en configuratiestappen worden uitgevoerd. Raadpleeg de sectie ‘Technische info’ voor instructies over hoe dit te doen.

Benodigdheden

  • Programmeer omgeving Arduino IDE
  • microprocessorbord (in deze workshop ESP32-DevKitC Bord)
  • 1 x breadboard
  • 2 x led (kleur maakt niets uit, in deze workshop een rode en een groene led)
  • 2 x weerstand van min. 150Ω (max. 1KΩ, in deze workshop 220Ω)
  • 5 x jumper kabels (in deze workshop 3x zwart en 2x rood)

Voor deze onderdelen kun je terecht op websites zoals AZ-Delivery, Hackerstore, Otronic en Ben’s Electronics, waar ik veel van mijn onderdelen koop.

Technische info

Hieronder vind je pagina’s waar dieper wordt ingegaan op de materialen die tijdens deze workshop worden gebruikt, evenals extra informatie.

Breadboard

In afb. 1 zie je dat er twee rode draadjes lopen van GPIO 22 en 23 naar het breadboard. Vanuit deze rij (verticaal) worden beide draadjes verbonden met een weerstand (220 Ohm). Deze weerstanden zijn aan de andere zijde verbonden met een van de leds (lange pootje, ook wel anode genoemd). De andere zijde van de leds (korte pootje, ook wel kathode genoemd) worden verbonden met het zwarte draadje. Deze zwarte draadjes zijn weer verbonden met de min rij (bovenste rij). Deze rij is door het derde zwarte draadje verbonden met GND (ground/aarde of -) van het microprocessorbord.

Opmerking:
De weerstand mag zowel tussen het ledje (kathode) en de min als tussen het ledje (anode) en de plus geplaatst worden. Het maakt ook niets uit hoe om de weerstand wordt geplaatst.

Afb. 1

Programma omschrijving

Het programma stuurt 2 leds (1 rode en 1 groene) aan. Het laat de leds 1 seconde branden en daarna blijven ze 1 seconde uit. Dit blijft zich herhalen.

Arduino programma code (C++)

De Arduino C++ code van het programma.

// Hier maak je een variabele die aangeeft op welke pin het ledje aangesloten zit.
int pin1 = 22; // GPIO22
int pin2 = 23; // GPIO23
// met de 'duur' variabele geef je aan hoelang het ledje aan én uit moet gaan.
int duur = 1000;

// de setup functie wordt een keer uitgevoerd als je het Single Board Computer start of reset.
void setup() {
   // initializeert de digital pinnen 'pin1' en 'pin2' als uitvoer.
   pinMode(pin1, OUTPUT);
   pinMode(pin2, OUTPUT);
}

// de loop functie loopt keer op keer opnieuw, het is een eindeloze lus.
void loop() {
   digitalWrite(pin1, HIGH); // laat het ledje branden (HIGH is het voltage niveau, dus 3,3 volt)
   digitalWrite(pin2, HIGH);
   delay(duur); // wacht 1 seconde
   digitalWrite(pin1, LOW); // zet het ledje uit door het voltage nivea op LOW te zetten, 0 volt
   digitalWrite(pin2, LOW);
   delay(duur); // wacht 1 seconde
}

Uitleg code:
Het programma begint bij regel 1 en gaat daarna verder naar regel 2, 3, 4, 5 en zo voort.

In regel 2 en 3 worden 2 integer variabelen gedefinieerd, namelijk ‘pin1’ (pin nummer 22 voor GPIO22) en ‘pin2’ (pin nummer 23 voor GPIO23).
In regel 5 wordt een derde integer variabele gedefinieerd, namelijk ‘duur’. Deze krijgt de waarde 1000 (dit is de tijd in milliseconden dat er gewacht wordt). Opmerking, 1000 milliseconden is 1 seconde.

setup()
Regel 8 t/m 12 is de ‘setup()’ functie, deze wordt éénmalig uitgevoerd bij elke start of reset (herstart) van het programma.
Op regel 10 en 11 wordt van de mode van de pinnen aangegeven. Dit wordt door het commando ‘pinMode()’ gedaan, deze krijgt de waarde ‘INPUT’ (invoer) of ‘OUTPUT’ (uitvoer). Dit betekent dat de pin dan data ontvangt of uitstuurt. In bovenstaande code dus uitstuurt. Eerst wordt in het commando de pin aangegeven en daarna dat de mode uitvoer (OUTPUT) is.

loop()
Regel 15 t/m 23 is de ‘loop()’ functie, deze wordt na de functie ‘setup()’ uitgevoerd. Deze herhaald zich continue. Dus als regel 23 uitgevoerd is, gaat hij weer naar regel 15. Deze herhaald zich continue en is het eigenlijke uitvoerende gedeelte van het programma.
Regel 16, 17, 20 en 21 geven we het commando ‘digitalWrite()’ om 3,3 volt (‘HIGH’) of 0 volt (‘LOW’) op de pin te zetten.
Regel 16 en 17 zetten we de leds aan door deze op ‘HIGH’ te zetten.
Regel 18 gebruiken we het commando ‘delay()’ om een bepaalde tijd te wachten. Deze tijd is in de variabele ‘duur’ vastgelegd en heeft de waarde ‘1000’ (vastgelegd in regel 5).
Regel 20 en 21 zetten we de leds uit door deze op ‘LOW’ te zetten.
Regel 22 gebruiken we het commando ‘delay()’ om een bepaalde tijd te wachten. Deze tijd is in de variabele ‘duur’ vastgelegd en heeft de waarde ‘1000’ (vastgelegd in regel 5).
Het programma heeft het einde bereikt regel 23 en gaat nu weer terug naar regel 16. Dit gaat zo door totdat je het microprocessorbord uitzet of herstart (reset).

LET OP!!!
C++ is hoofdletter gevoelig, dus ‘digitalWrite’ werkt, maar ‘digitalwrite’ of ‘DigitalWrite’ werkt niet.
Bij variabelen is het ook zo, dus Pin1, pin1, PIN1 zijn allemaal verschillende variabelen. Doe dit niet op deze manier, dit is erg verwarrend en maakt de code slecht leesbaar. Geef duidelijke namen.

Opdrachten

  1. Probeer om een alarmlicht te maken waar de ene led aangaat als de andere uitgaat en andersom.
  2. Maak een knipperlicht waarbij de ene led dubbel zo vaak knippert als de andere.
]]>
Drukknop uitlezen https://claasen-tech.nl/workshops/drukknop-uitlezen/ Sat, 06 Jan 2024 17:59:44 +0000 https://claasen-tech.nl/?p=2209

Workshop 2

In deze workshop gaan we een drukknop gebruiken.

We gebruiken als basis de opstelling van de workshop Led aan en uit op het breadbord. Hier voegen we een drukknop aan toe.

Benodigdheden

  • Microprocessorbord (in deze workshop ESP32-DevKitC Bord)
  • 2 x led (kleur maakt niets uit, in deze workshop een rode en een groene led)
  • 2 x weerstand van min. 150Ω (max. 1KΩ, in deze workshop 220Ω)
  • 1 x weerstand van 10KΩ
  • 9 x jumper kabels (in deze workshop 4x zwart, 4x rood en 1x blauw)
  • 1 x breadboard
  • Programmeer omgeving Arduino IDE

Voor deze onderdelen kun je terecht op websites zoals AZ-Delivery, Hackerstore, Otronic en Ben’s Electronics, waar ik veel van mijn onderdelen koop.

Technische info

Hieronder vind je pagina’s waar dieper wordt ingegaan op de materialen die tijdens deze workshop worden gebruikt, evenals extra informatie.

Breadboard

Aansluiten van de twee leds.
Als je het breadboard van de vorige workshop nog hebt opgesteld, kun je verder gaan naar ‘Aansluiten van de knop’. In afb. 1 zie je dat er twee rode draadjes lopen van GPIO 22 en 23 (plus) naar het breadboard. Vanuit deze rij (verticaal) worden beide draadjes verbonden met een weerstand (220Ω). Deze weerstanden zijn aan de andere zijde verbonden met een van de leds (lange pootje, ook wel anode genoemd). De andere zijde van de leds (korte pootje, ook wel kathode genoemd) worden verbonden met het zwarte draadje. Deze zwarte draadjes zijn weer verbonden met de min rij (bovenste rij met blauwe lijn erboven). Deze rij is door het derde zwarte draadje verbonden met GND (ground/aarde of -) van het microprocessorbord.

Aansluiten van de knop.
We verbinden een rood draadje met de 3,3 Volt (3V3 bij de aansluiting) op de ESP. De andere kant wordt met de plus rij (van de bovenste twee rijen de onderste met de rode lijn eronder) verbonden op het breadboard. Het blauwe draadje wordt verbonden met GPIO 36 op het microprocessorbord en van daaruit op de linkerzijde van de drukknop. De rechterkant van de drukknop wordt door een zwart draadje verbonden met de min rij (bovenste rij met blauwe lijn erboven). We sluiten een weerstand (10KΩ) ook aan de linkerkant van de drukknop. De andere kant van de weerstand wordt door een rood draadje verbonden met de plus rij (van de bovenste twee rijen de onderste met de rode lijn eronder). De weerstand die op deze manier aangesloten wordt, wordt ook wel een pull-up weerstand genoemd.

Opmerking:
De weerstand van de led mag zowel tussen het ledje (kathode) en de min als tussen het ledje (anode) en de plus geplaatst worden.

Afb. 1

Programma omschrijving

Als je op de drukknop drukt gaan de twee leds uit en als je de drukknop weer loslaat gaan ze weer aan.

foto breadboard

Arduino programma code (C++)

De Arduino C++ code van het programma.

// Hier maak je een variabele die aangeeft op welke pin het ledje aangesloten zit.
int pin1 = 22; // GPIO22
int pin2 = 23; // GPIO23

// Deze pin lees je de status van de drukknop uit
int pin3 = 36; // GPIO36

// status van de drukknop wordt in deze variabele opgeslagen
int statusPin = 0;

// de setup functie wordt een keer uitgevoerd als je het Single Board Computer start of reset.
void setup() {
   // initializeert de digital pinnen 'pin1' en 'pin2' als uitvoer.
   pinMode(pin1, OUTPUT);
   pinMode(pin2, OUTPUT);
   pinMode(pin3, INPUT);
}

// de loop functie loopt keer op keer opnieuw, het is een eindeloze lus.
void loop() {

  // de status van de drukknop wordt opgeslagen in statusPin
  statusPin = digitalRead(pin3);
  /* Op het breadboard wordt gebruik gemaakt van een pull-up weerstand
     waardoor de uitgelezen waarde 'HIGH' (1 of 'true')is als de drukknop
     niet ingedrukt is. Dus de leds branden nu.
     Als je de drukknop indrukt, wordt de waarde die je leest 'LOW' (0 of 'false').
     De leds gaan uit.
  */

  digitalWrite(pin1, statusPin ); // laat het ledje branden (HIGH is het voltage niveau, dus 3,3 volt)
  digitalWrite(pin2, statusPin );

  delay(100);
}

Uitleg code:
Het programma begint bij regel 1 en gaat daarna verder naar regel 2, 3, 4, 5 en zo voort.

In de regels 2 t/m 9 worden de variabelen gedefinieerd. In regel 9 wordt de variabele ‘pin3’ gedefinieerd en krijgt de waarde 36 toegekend. Dit is dus GPIO36.

setup()
Regel 12 t/m 17 is de ‘setup()’ functie, deze wordt éénmalig uitgevoerd bij elke start of reset (herstart) van het programma.
In regel 9 wordt de status van de drukknop gedefinieerd in variabele ‘statusPin’, deze krijgt de beginwaarde 0. Op regel 16 wordt bepaald dat de GPIO36 als input zal dienen voor de drukknop. Dit wordt met de functie ‘pinMode(pin3, INPUT);’ gedaan.

loop()
Regel 20 t/m 35 is de ‘loop()’ functie, deze wordt na de functie ‘setup()’ uitgevoerd. Deze herhaald zich continue. Dus als regel 34 uitgevoerd is, gaat hij weer naar regel 23. Dit herhaald zich continue en is het eigenlijke uitvoerende gedeelte van het programma.
Regel 23 geven we het commando ‘statusPin = digitalRead(pin3);’ om de status van GPIO36 (pin3) uit te lezen en toe te kennen aan de variabele ‘statusPin’.
Regel 31 en 32 zetten we de leds aan of uit door de waarde van de variabele ‘statusPin’ door te geven met de functies ‘digitalWrite(pin1, statusPin)’ en ‘digitalWrite(pin2, statusPin)’.
Regel 34 gebruiken we het commando ‘delay()’ om een bepaalde tijd te wachten.
Het programma heeft het einde bereikt regel 35 en gaat nu weer terug naar regel 20. Dit gaat zo door totdat je het microprocessorbord uitzet of herstart (reset).

LET OP!!!
C++ is hoofdletter gevoelig, dus ‘digitalRead’ werkt, maar ‘digitalread’ of ‘DigitalRead’ werkt niet.
Bij variabelen is het ook zo, dus Pin1, pin1, PIN1 zijn allemaal verschillende variabelen. Definieer variabelen niet op deze manier, dit is erg verwarrend.

Opdrachten

  1. Maak een timer programma dat na het indrukken van de drukknop de leds aanzet voor 10 seconden en dan weer uitzet. (lees eerst even over de if-opdracht, dit is een beslissing functie)
  2. Maak van de drukknop een aan/uit schakelaar. Dus als je hem voor de eerste keer indrukt gaan de leds aan en als je hem weer indrukt gaan de leds uit. En zo verder. (lees eerst even over de bool variabele en !-operator)

Bekijk het filmpje om te zien wat het resultaat is.

Bekijk het filmpje om te zien wat het resultaat is.

]]>