Les 14/31-4: Arduino-kodering map() voorbeeld 1
Hierdie tutoriaal is deel van 'n reeks oor Arduino-programmering en fokus op die praktiese gebruik van die map()-funksie. In hierdie les sal jy leer hoe om 'n persentasiewaarde (0–100) om te skakel na 'n PWM (Pulse Width Modulation)-waarde (0–255) om die helderheid van 'n LED te beheer. In plaas daarvan om handmatig te bereken dat 60% gelyk is aan 153, hanteer die map()-funksie die lineêre omskakeling vir jou, wat jou kode skoner en meer intuïtief maak.
Hierdie tegniek is noodsaaklik vir baie werklike toepassings waar jy sensorlesings of gebruikersinsette na verskillende reekse moet vertaal. Byvoorbeeld, jy kan dit gebruik om:
- Die spoed van 'n GS-motor te beheer op grond van 'n potensiometerlesing.
- 'n Temperatuursensor se rou waarde op 'n 0-100% skaal te vertoon.
- Stokkieskoördinate na servomotorhoeke te karteer.
- LED-helderheid aan te pas op grond van 'n omgewingsligsensor.
- 'n 0-5V analooglesing na 'n 0-1023 digitale waarde om te skakel of omgekeerd.
Hardeware/Komponente
Om saam met hierdie projek te volg, sal jy die volgende komponente nodig hê:
- Arduino-bord (Uno, Nano, ens.)
- 'n LED
- 'n 220-ohm-weerstand
- Springdrade
- 'n Broodbord (opsioneel, maar aanbeveel)
Bedradingsgids
In die video demonstreer die instrukteur die projek met behulp van 'n bedradingopstelling uit 'n vorige les oor LED-vervaging. Die stroombaan is eenvoudig: verbind die anode (lang been) van die LED aan 'n 220-ohm-weerstand, en verbind die ander punt van daardie weerstand aan digitale pen 3 op die Arduino. Verbind die katode (kort been) van die LED direk aan die grond (GND)-pen op die Arduino.
Kodeverduideliking
Die kode vir hierdie voorbeeld is baie bondig, met die kernlogika in die setup()-funksie. Kom ons breek die gebruikerskonfigureerbare dele af.
int LEDpin = 3; //definieer pen vir LED
Hierdie lyn definieer die Arduino-pen waaraan jou LED gekoppel is. In hierdie voorbeeld is dit op pen 3 gestel, wat 'n PWM-geskikte pen is, nodig vir analooguitset. Jy kan hierdie nommer verander as jy jou LED aan 'n ander PWM-pen koppel.
int b=8;//60% helderheid
Dit is die sleutelveranderlike wat jy sal wysig om verskillende helderheidsvlakke te toets. Dit verteenwoordig die verlangde helderheid as 'n persentasie. Die kommentaar in die kode sê "60%", maar die waarde is op 8 gestel vir demonstrasiedoeleindes in die video. Jy kan dit na enige heelgetal tussen 0 en 100 verander. Byvoorbeeld, om b = 60 te stel, sal 'n 60% helderheidsvlak verteenwoordig.
int brightness = map(b, 0, 100, 0,255);
Dit is die kern van die les. Die map()-funksie neem jou persentasiewaarde (b) en skakel dit om van sy oorspronklike reeks (0 tot 100) na 'n nuwe teikenreeks (0 tot 255). Die resultaat word in die brightness-veranderlike gestoor, wat dan gebruik word om 'n analoogwaarde na die LED-pen te skryf.
analogWrite(LEDpin, brightness);// skakel die LED aan met 60% helderheid
Laastens stuur hierdie lyn die gekarteerde waarde na die LED-pen met behulp van analogWrite(). Dit stel die LED se dienssiklus in, wat effektief sy helderheid beheer. Die skoonheid van hierdie benadering is dat jy net die b-veranderlike hoef te verander om die LED te beheer, en die map()-funksie hanteer al die nodige berekeninge.
Lewende Projek/Demonstrasie
In die video laai die instrukteur die kode op en demonstreer die effek van die verandering van die b-veranderlike. Wanneer b op 8 gestel is, druk die seriële monitor die gekarteerde waarde van 20, en die LED is merkbaar dowwer. Om b na 90 te verander, lei tot 'n gekarteerde waarde van 229, wat die LED baie helderder maak. Om b na 100 te stel, karteer na 255, wat volle helderheid is. Hierdie praktiese demonstrasie wys duidelik hoe die map()-funksie die proses vereenvoudig om analooguitsette met gebruikersvriendelike persentasiewaardes te beheer.
Verwante projekte uit hierdie video
- Les 14/31-1: Arduino Millis (geen vertraging) en map-funksies | SunFounder Robojax
- Les 14/31-2: Arduino-kodering millis() voorbeeld 2 met gebeurtenis
- Les 14/31-3: Arduino-kodering millis() voorbeeld 3 met drukknoppie
- Les 14/31-5: Arduino-kodering map() voorbeeld 2
Hoofstukke
- [00:00] Inleiding tot die Arduino-kursus deur Robojax
- [01:19] Wat is millis() en hoekom dit gebruik
- [05:46] Voorbeeld 1: Gebruik millis() vir 'n getimede gebeurtenis
- [08:29] Voorbeeld 2: Gebruik millis() met 'n drukknoppie
- [12:14] Voorbeeld 3: Opspoor van 'n tweede knoppiedruk na 'n vertraging
- [17:20] Inleiding tot die map()-funksie
- [19:47] Kodeloop deur die map()-voorbeeld
- [20:41] Lewende demonstrasie van die map()-funksie
/*
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() {
}
Goedere wat jy dalk nodig het
-
AmazonSunFounder Arduino Learning Kit on AliExpresss.click.aliexpress.com
-
Amazon
-
Amazon
-
Amazon
-
Amazon
Hulpbronne en verwysings
-
DokumentasieDocumentation for SunFounder 3 in 1 IoT/Smart Car/Learning Kitdocs.sunfounder.com
-
BuitenburgPurchase SunFounder's 3-in-1 Smart car learning kitsunfounder.com
Lêers📁
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