Bekijk de 38 andere Arduino lessen

4 · Knippersnelheid regelen met potmeter


Introductie

In deze les gaan we aan de slag met een nieuw component: de potentiometer. Deze gaan we gebruiken om de knipper snelheid van een LED te kunnen regelen. Benieuwd wat een potentiometer allemaal kan? Dat weet je na het volgen van deze les! 🤓

Lesmateriaal

Onderaan op deze pagina vind je de knop lesmateriaal waarmee je het lesmateriaal kunt downloaden. Dit materiaal bestaat uit de code, schakelschema en andere bestanden die in de les worden gebruikt.

Potentiometer

In de vorige lessen maakte we gebruik van een weerstand met een vaste waarde. Bij de potentiometer, vaak afgekort als potmeter, is dit anders. Eigenlijk is kun je een potmeter zien als een variabele weerstand. De weerstand veranderd door te draaien, net zoals de volumeknop op een versterker. In deze les maken we gebruik van een 10K Ohm potmeter. Dit houdt in dat de weerstandswaarde van 0 tot 10K Ohm loopt.

Potentiometer / potmeter
Potentiometer / potmeter

Een normale weerstand heeft 2 uiteinden, de potmeter heeft er 3. Links en rechts zijn de + en de -, welke je voor wat gebruikt maakt niet omdat een weerstand beide kanten op werkt.

De middelste pin geeft de stroom terug waarop de weerstand van de potmeter is toegepast. Stel je zet op de + 5 Volt, en sluit de - aan op de GND. Vervolgens draaien we de potentiometer 50% open. Dan komt op de middelste pin 2.5 Volt te staan.

Dit kun je gebruiken om een lampje harder of zachter te laten branden, of geluid harder of zachter te zetten. Wij gaan het gebruiken om de knipper snelheid van een LED te regelen.

🎓 Als ik de potmeter op 20% zet, hoeveel Volt staat er dan op de middelste pin?

De schakeling

Voor het aansluiten van de potmeter op de Arduino maken we gebruik van het breadboard. Prik de potmeter hierin zoals op onderstaande afbeelding is weergegeven.

Arduino met potentiometer
De schakeling met de potmeter in het breadboard geprikt

Sluit vervolgens de volgende jumper wires aan:

  • De 5V op de Arduino -> linker pin van de potmeter
  • De analoge pin A2 op de Arduino -> middelste pin van de potmeter
  • De GND op de Arduino -> rechter pin van de potmeter

Arduino Code

We beginnen met het definiëren van 3 variabelen:

1 int potPin = A2;              // Potmeter pin
2 int ledPin = LED_BUILTIN;     // Ingebouwde LED pin
3 int potVal = 0;               // Waarde van potmeter

Door gebruik te maken van LED_BUILTIN kan de Arduino IDE zelf bepalen op welke pin het ingebouwde LED is aangesloten. We moeten bij het uitlezen de waarde van de potmeter ergens opslaan. Hiervoor maken wel gebruik van de potVal variabele.

setup()

1 void setup() {
2   Serial.begin(9600);         // Stel de seriële monitor in
3   pinMode(ledPin, OUTPUT);    // Stel de ledPin in als uitvoer
4 }

In de setup() zien we iets nieuws staan: Serial.begin(9600); hier kom verderop op terug in de uitleg over de seriële monitor. Verder stelt de setup() de ledPin in als uitvoer.

loop()

1 // Herhaal oneindig
2 void loop() {
3 
4   potVal = analogRead(potPin);    // Lees de analoge waarde van de potmeter 0-1023
5   Serial.println(potVal);         // Toon de waarde in de seriële monitor
6   
7   digitalWrite(ledPin, HIGH);     // Zet de ingebouwde LED aan
8   delay(potVal);                  // Pauzeer de waarde van de potmeter
9   
10   digitalWrite(ledPin, LOW);      // Zet de ingebouwde LED uit
11   delay(potVal);                  // Pauzeer de waarde van de potmeter
12 
13 }

De loop() functie bestaat uit 3 delen:

  • Uitlezen van de potmeter
  • Ingebouwde LED aanzetten
  • Ingebouwde LED uitzetten

analogRead()

1 potVal = analogRead(potPin);

In de vorige les hebben we gebruik gemaakt van analogWrite waarbij we een analoge waarde naar de Arduino schreven. De potentiometer geeft een analoge waarde terug, hiervoor maken we gebruik van analogRead. analogRead heeft 1 parameter, namelijk te pin die moet worden uitgelezen. Hier lezen we dus de waarde van de potPin. De uitgelezen waarde ligt tussen de 0 en 1023.

LED aan/uit zetten

1 digitalWrite(ledPin, HIGH);     // Zet de ingebouwde LED aan
2 delay(potVal);                  // Pauzeer de waarde van de potmeter
3 
4 digitalWrite(ledPin, LOW);      // Zet de ingebouwde LED uit
5 delay(potVal);                  // Pauzeer de waarde van de potmeter

Nu hoeven we alleen nog maar de LED aan en uit te zetten. Hiervoor gebruiken we de digitalWrite() uit de eerdere lessen. Eerder gebruikte we een vaste waarde voor delay(). Nu maken we gebruik van de variabele potVal. Deze bevat de uitgelezen waarde van de potmeter.

🎓 Kun jij bedenken wat langst mogelijke pauze is die we met de potmeter kunnen instellen?

Arduino IDE seriële monitor

Tot nu toe hebben we de code op de Arduino gezet en via een LED laten zien de dat code werkt. De Arduino kan ook terug praten met de computer, dit doet deze via de seriële monitor.

Eerder zagen we in de code de regel:

1 Serial.begin(9600)

Hiermee geven we aan dat de Arduino met een snelheid van 9600 symbolen per seconde terug mag sturen. Dit getal wordt de Baud rate genoemd.

Verderop in de code gaan we ook daadwerkelijk gegevens naar de seriële monitor schrijven. Dit doen we via:

1 Serial.println(potVal)

Hierbij schrijven we de waarde van de variabele potVal naar de seriële monitor. Dit is dus de uitgelezen waarde van de potmeter. println() staat voor print line wat vertaald print een regel is.

De seriële monitor vind je terug in het menu van de Arduino IDE

Hulpmiddelen ▸ Seriële monitor

Arduino IDE seriële monitor
Arduino IDE seriële monitor

Code uploaden naar Arduino

Je kunt nu de code naar de Arduino uploaden. Hierna zie je de uitgelezen potmeter waarden voorbij scrollen, deze veranderen zodra je aan de potmeter draait.

💡 Rechtsonder zie je de Baud-rate staan. Let op dat deze hetzelfde is als in Serial.begin() is opgegeven, in ons geval dus 9600.

4 · Knippersnelheid regelen met potmeter schakelschema

Bas van Dijk

Over Bas on Tech


Mijn naam is Bas van Dijk, ondernemer, freelance frontend developer en maker. Onder de naam "Bas on Tech" bied ik op YouTube videolessen aan over technische onderwerpen zoals Arduino en 3D-printen.

De video’s zijn in het Nederlands met ondertiteling, zodat mensen met een gehoorbeperking ze ook kunnen volgen.

Jaren geleden toen ik mijn eerste Arduino kocht had ik maar één doel: zo snel mogelijk een LCD schermpje aansluiten en er een tekst op laten zien. Na allerlei bronnen te hebben geraadpleegd kwam ik er na veel puzzelen eindelijk uit. Ik was als een kind zo blij met die paar letters op een geel schermpje.

Met Bas on Tech wil ik mijn kennis delen zodat ook anderen deze blijheid kunnen ervaren. Ik heb gekozen voor kort en krachtige YouTube video’s, met een duidelijke vaste opbouw en één onderwerp per video. Daarnaast staan onder elke video links naar de broncode en webshops waar de onderdelen te koop zijn.