Lekcia 14/31-5: Príklad map() v Arduino kódovaní 2
Tento tutoriál ukazuje, ako použiť Arduino map() funkciu na ovládanie jasu LED pomocou percentuálnej hodnoty (0–100 %) namiesto surového rozsahu 0–255, ktorý vyžaduje analogWrite(). Toto je základná technika, ktorá zjednodušuje váš kód a robí ho oveľa intuitívnejším, pretože môžete uvažovať v percentách namiesto ľubovoľných bajtových hodnôt.
Táto zručnosť je nevyhnutná pre akýkoľvek projekt, kde potrebujete škálovať hodnoty zo senzorov alebo riadiace signály. Napríklad ju môžete použiť na:
- Ovládanie jasu LED alebo rýchlosti motora na základe hodnoty potenciometra.
- Prevod výstupu teplotného senzora (napr. 0–1023) na rozsah v stupňoch Celzia alebo Fahrenheita.
- Mapovanie analógového vstupu joysticku na ovládanie polohy servomotora.
- Vytvorenie jednoduchého používateľského rozhrania, kde sa percentuálna hodnota používa na nastavenie úrovne výkonu zariadenia.
Na konci tejto lekcie budete schopní písať čistejší a udržiavateľnejší kód, ktorý sa ľahšie číta a upravuje.
Hardvér/Komponenty
Tento projekt používa minimálnu sadu komponentov, čo ho robí ideálnym pre začiatočníkov. Budete potrebovať:
- Dosku Arduino (napr. Uno).
- LED.
- Rezistor 220 ohmov.
- Prepojovacie vodiče.
- Nepájivé pole (voliteľné, ale odporúčané).
Sprievodca zapojením
Zapojenie pre tento projekt je veľmi jednoduché, ako je ukázané vo videu (vo videu v čase 20:47). LED je pripojená na pin 3 Arduina cez rezistor 220 ohmov na obmedzenie prúdu.
Pripojte anódu (dlhšiu nožičku) LED na pin 3 cez rezistor. Pripojte katódu (kratšiu nožičku) LED na pin GND (uzemnenie) na Arduine.
Vysvetlenie kódu
Tento príklad sa zameriava na používateľom definovanú funkciu, ktorá zjednodušuje ovládanie jasu LED. Kód je postavený okolo vlastnej funkcie nazvanej pwmValue(), ktorá je kľúčom k intuitívnemu kódu.
Poďme si rozobrať konfigurovateľné časti kódu:
int LEDpin = 3; //definovaný pin pre LED
Tento riadok definuje pin Arduina, na ktorý je LED pripojená. Číslo 3 môžete zmeniť na akýkoľvek iný pin s podporou PWM na vašej doske Arduino.
Jadrom projektu je vlastná funkcia pwmValue(). Táto funkcia berie percentuálnu hodnotu ako vstup a prevádza ju na rozsah 0–255 používaný funkciou analogWrite(). Tu robí svoju mágiu funkcia map().
int pwmValue(int percent)
{
if(percent >=0 && percent <=100)
{
return map(percent, 0,100, 0,255);
}else
{
return 0;
}
}
Na použitie tejto funkcie ju jednoducho zavoláte s požadovaným percentom jasu. Funkcia vráti správnu hodnotu pre analogWrite(). Napríklad pwmValue(60) vráti 153, čo zodpovedá 60 % z 255. Funkcia tiež obsahuje bezpečnostnú kontrolu, aby sa zabezpečilo, že vstupné percento je medzi 0 a 100, a vráti 0, ak je mimo tohto rozsahu.
Vo funkcii setup() môžete vidieť, ako sa to používa:
int b=5;//60% jas
Serial.println( pwmValue(b) );//vytlačí to na sériový monitor
analogWrite(LEDpin, pwmValue(b));// zapne LED s 60% jasom
Tu je premenná b nastavená na vaše požadované percento jasu. Funkcia pwmValue(b) sa potom používa na vytlačenie mapovanej hodnoty na sériový monitor aj na nastavenie jasu LED. Na zmenu jasu LED stačí upraviť hodnotu b. Funkcia map() vykoná všetky potrebné výpočty za vás.
Živý projekt/Demonštrácia
Vo videu prezentujúci demonštruje projekt zmenou hodnoty premennej b a nahratím kódu do Arduina. Keď je b nastavené na 60, kód ho mapuje na 153 a LED sa rozsvieti na 60 % jasu. Zmena b na 90 mapuje na 229, čím je LED výrazne jasnejšia. Nastavenie na 100 mapuje na 255, čo je maximálny jas. Demonštrácia jasne ukazuje, ako funkcia map() umožňuje ovládať LED pomocou intuitívnej percentuálnej hodnoty, zatiaľ čo sériový monitor potvrdzuje presnú hodnotu 0–255 odosielanú na pin (vo videu v čase 21:29).
Súvisiace projekty z tohto videa
- Lekcia 14/31-1: Arduino Millis (bez delay) a map funkcie | SunFounder Robojax
- Lekcia 14/31-2: Arduino kódovanie millis() príklad 2 s udalosťou
- Lekcia 14/31-3: Arduino kódovanie millis() príklad 3 s tlačidlom
- Lekcia 14/31-4: Arduino kódovanie map() príklad 1
Kapitoly
- [00:00] Úvod do Millis a map funkcií
- [01:19] Čo je Millis a prečo ho používať
- [05:46] Použitie Millis s udalosťou na vykonanie akcie
- [08:35] Millis príklad 2 s tlačidlom
- [12:14] Millis príklad 3 kontrola dvoch stlačení tlačidla
- [17:20] Úvod do funkcie map()
- [19:47] Príklad kódu na mapovanie percenta na jas LED
- [20:47] Živá demonštrácia funkcie map()
- [22:41] Vytvorenie vlastnej funkcie na spracovanie mapovania
/*
Lesson 14/31-5: Arduino coding map( ) example-2
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);//initialzie serial monitor with 9600 baud
pinMode(LEDpin, OUTPUT);//set pin as output
int b=5;//60% brightness
Serial.println( pwmValue(b) );//print it on serial monitor
analogWrite(LEDpin, pwmValue(b));// turn the LED on with 60% brightness
}
void loop() {
}
/*
* pwmValue(int percent)
* @param precent is value between 0 to 100
* @return it returns the mapped value from 0 to 255
* written by Ahmad Shamshiri on Dec 9, 2022
*
*/
int pwmValue(int percent)
{
if(percent >=0 && percent <=100)
{
return map(percent, 0,100, 0,255);
}else
{
return 0;
}
} //pwmValue end
Veci, ktoré by ste mohli potrebovať
-
AmazonSunFounder Arduino Learning Kit on AliExpresss.click.aliexpress.com
-
Amazon
-
Amazon
-
Amazon
-
Amazon
-
Iné
Zdroje a referencie
-
ExternéPurchase SunFounder's 3-in-1 Smart car learning kitsunfounder.com
Súbory📁
Používateľská príručka
-
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