Soek Kode

Les 14/31-4: Arduino-kodering map() voorbeeld 1

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

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

Beelde

Sunfounder car assembled
Sunfounder car assembled
919-Lesson 14/31-4: Arduino coding map() example 1
Taal: C++
/*
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() {

 
 }
 

Hulpbronne en verwysings

Lêers📁

Gebruikershandleiding