Les 14/31-4: Arduino-codering map() voorbeeld 1
Deze tutorial maakt deel uit van een serie over Arduino-programmeren en richt zich op het praktische gebruik van de map()-functie. In deze les leer je hoe je een percentagewaarde (0–100) omzet naar een PWM-waarde (Pulse Width Modulation) (0–255) om de helderheid van een LED te regelen. In plaats van handmatig te berekenen dat 60% gelijk is aan 153, zorgt de map()-functie voor de lineaire conversie, waardoor je code schoner en intuïtiever wordt.
Deze techniek is essentieel voor veel praktische toepassingen waarbij je sensorwaarden of gebruikersinvoer moet vertalen naar verschillende bereiken. Je zou het bijvoorbeeld kunnen gebruiken om:
- De snelheid van een gelijkstroommotor te regelen op basis van een potentiometerwaarde.
- De ruwe waarde van een temperatuursensor weer te geven op een schaal van 0-100%.
- Joystickcoördinaten om te zetten naar servomotorhoeken.
- LED-helderheid aan te passen op basis van een omgevingslichtsensor.
- Een analoge 0-5V-waarde om te zetten naar een digitale 0-1023-waarde of andersom.
Hardware/componenten
Om dit project te volgen, heb je de volgende componenten nodig:
- Arduino-board (Uno, Nano, enz.)
- Een LED
- Een 220-ohm-weerstand
- Jumperdraden
- Een breadboard (optioneel, maar aanbevolen)
Bedradingshandleiding
In de video demonstreert de instructeur het project met een bedradingsopstelling uit een eerdere les over LED-fading. Het circuit is eenvoudig: verbind de anode (lange poot) van de LED met een 220-ohm-weerstand en verbind het andere uiteinde van die weerstand met digitale pin 3 op de Arduino. Verbind de kathode (korte poot) van de LED rechtstreeks met de ground (GND)-pin op de Arduino.
Uitleg van de code
De code voor dit voorbeeld is zeer beknopt, met de kernlogica in de setup()-functie. Laten we de door de gebruiker instelbare onderdelen bekijken.
int LEDpin = 3; //definieer pin voor LED
Deze regel definieert de Arduino-pin waarmee je LED is verbonden. In dit voorbeeld is deze ingesteld op pin 3, een pin die PWM ondersteunt, wat nodig is voor analoge uitvoer. Je kunt dit nummer wijzigen als je je LED op een andere PWM-pin aansluit.
int b=8;//60% helderheid
Dit is de belangrijkste variabele die je zult aanpassen om verschillende helderheidsniveaus te testen. Het vertegenwoordigt de gewenste helderheid als percentage. De opmerking in de code zegt "60%", maar de waarde is ingesteld op 8 voor demonstratiedoeleinden in de video. Je kunt dit wijzigen naar elk geheel getal tussen 0 en 100. Als je bijvoorbeeld b = 60 instelt, vertegenwoordigt dat een helderheidsniveau van 60%.
int brightness = map(b, 0, 100, 0,255);
Dit is de kern van de les. De map()-functie neemt je percentagewaarde (b) en converteert deze van het oorspronkelijke bereik (0 tot 100) naar een nieuw doelbereik (0 tot 255). Het resultaat wordt opgeslagen in de variabele brightness, die vervolgens wordt gebruikt om een analoge waarde naar de LED-pin te schrijven.
analogWrite(LEDpin, brightness);// zet de LED aan met 60% helderheid
Tot slot stuurt deze regel de omgezette waarde naar de LED-pin met behulp van analogWrite(). Dit stelt de duty-cycle van de LED in, waardoor de helderheid effectief wordt geregeld. Het mooie van deze aanpak is dat je alleen de variabele b hoeft te wijzigen om de LED te regelen, en de map()-functie zorgt voor alle benodigde berekeningen.
Live project/demonstratie
In de video uploadt de instructeur de code en demonstreert het effect van het wijzigen van de variabele b. Wanneer b is ingesteld op 8, toont de seriële monitor de omgezette waarde van 20, en de LED is zichtbaar gedimd. Het wijzigen van b naar 90 resulteert in een omgezette waarde van 229, waardoor de LED veel helderder wordt. Het instellen van b op 100 zet om naar 255, wat volledige helderheid is. Deze praktische demonstratie laat duidelijk zien hoe de map()-functie het proces van het regelen van analoge uitgangen met gebruiksvriendelijke percentagewaarden vereenvoudigt.
Gerelateerde projecten uit deze video
- Les 14/31-1: Arduino Millis (zonder delay) en map-functies | SunFounder Robojax
- Les 14/31-2: Arduino-codering millis() voorbeeld 2 met event
- Les 14/31-3: Arduino-codering millis() voorbeeld 3 met drukknop
- Les 14/31-5: Arduino-codering map() voorbeeld 2
Hoofdstukken
- [00:00] Introductie tot de Arduino-cursus door Robojax
- [01:19] Wat is millis() en waarom zou je het gebruiken
- [05:46] Voorbeeld 1: millis() gebruiken voor een getimed event
- [08:29] Voorbeeld 2: millis() gebruiken met een drukknop
- [12:14] Voorbeeld 3: Een tweede knopdruk detecteren na een vertraging
- [17:20] Introductie tot de map()-functie
- [19:47] Code-uitleg voor het map()-voorbeeld
- [20:41] Live demonstratie van de map()-functie
/*
Lesson 14/31: Arduino coding map( ) example-1
Get this code and watch video Download and resource page https://robojax.com/RJT597
YouTube video https://www.youtube.com/watch?v=lqgzQohNiIM
* This code is "AS IS" without warranty or liability. Free to be used as long as you keep this note intact.*
* This code has been download from Robojax.com
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
int LEDpin = 3; //defind pin for LED
void setup() {
Serial.begin(9600);//initialize serial monitor with 9600 baud
pinMode(LEDpin, OUTPUT);//set pin as output
int b=8;//60% brightness
int brightness = map(b, 0, 100, 0,255);
Serial.println(brightness);//print it on serial monitor
analogWrite(LEDpin, brightness);// turn the LED on with 60% brightness
}
void loop() {
}
Dingen die je misschien nodig hebt
-
AmazonSunFounder Arduino Learning Kit on AliExpresss.click.aliexpress.com
-
Amazon
-
Amazon
-
Amazon
-
Amazon
Hulpmiddelen en referenties
-
DocumentatieDocumentation for SunFounder 3 in 1 IoT/Smart Car/Learning Kitdocs.sunfounder.com
-
ExternPurchase SunFounder's 3-in-1 Smart car learning kitsunfounder.com
Bestanden📁
Gebruikershandleiding
-
SunFounder 3-in-1 Arduino Smart Car assembly manualThis document shows step by step assembly of SunFounder 3-in-1 Arduino Smart Car
SunFounder_car_assembly_manual.pdf1.20 MB