Лекција 14/31-5: Arduino кодирање map() пример 2
Овој туторијал покажува како да ја користите Arduino map() функцијата за да ја контролирате осветленоста на LED диодата користејќи процентна вредност (0–100%) наместо суровиот опсег 0–255 што го бара analogWrite(). Ова е основна техника што го поедноставува вашиот код и го прави многу поинтуитивен, бидејќи можете да размислувате во проценти наместо во произволни бајт вредности.
Оваа вештина е од суштинско значење за секој проект каде што треба да ги скалирате читањата од сензори или контролните сигнали. На пример, можете да ја користите за да:
- Ја контролирате осветленоста на LED диода или брзината на мотор врз основа на читањето на потенциометар.
- Ја конвертирате излезната вредност на температурен сензор (на пр., 0–1023) во опсег во Целзиусови или Фаренхајтови степени.
- Го мапирате аналогниот влез од џојстик за да ја контролирате позицијата на серво мотор.
- Креирате едноставен кориснички интерфејс каде што процентна вредност се користи за поставување на нивото на моќност на уред.
До крајот на оваа лекција, ќе можете да пишувате почист, поодржлив код што е полесен за читање и прилагодување.
Хардвер/Компоненти
Овој проект користи минимален сет на компоненти, што го прави совршен за почетници. Ќе ви требаат:
- Arduino плоча (на пр., Uno).
- LED диода.
- Отпорник од 220 оми.
- Поврзувачки жици.
- Прототипна плоча (опционално, но препорачано).
Водич за поврзување
Поврзувањето за овој проект е многу едноставно, како што е прикажано во видеото (во видеото на 20:47). LED диодата е поврзана на пин 3 од Arduino преку отпорник од 220 оми што го ограничува струјата.
Поврзете ја анодата (подолгата нога) на LED диодата на пин 3 преку отпорникот. Поврзете ја катодата (пократката нога) на LED диодата на земјата (GND) пин на Arduino.
Објаснување на кодот
Овој пример се фокусира на кориснички дефинирана функција што го поедноставува контролирањето на осветленоста на LED диодата. Кодот е изграден околу прилагодена функција наречена pwmValue(), која е клучот за да се направи кодот интуитивен.
Ајде да ги разложиме конфигурабилните делови на кодот:
int LEDpin = 3; //дефиниран пин за LED
Оваа линија го дефинира Arduino пинот на кој е поврзана LED диодата. Можете да го промените бројот 3 во било кој друг пин што поддржува PWM на вашата Arduino плоча.
Јадрото на проектот е прилагодената функција pwmValue(). Оваа функција зема процентна вредност како влез и ја конвертира во опсегот 0–255 што го користи analogWrite(). Ова е местото каде што map() функцијата ја прави својата магија.
int pwmValue(int percent)
{
if(percent >=0 && percent <=100)
{
return map(percent, 0,100, 0,255);
}else
{
return 0;
}
}
За да ја користите оваа функција, едноставно ја повикувате со вашиот посакуван процент на осветленост. Функцијата ќе ја врати точната вредност за analogWrite(). На пример, pwmValue(60) ќе врати 153, што одговара на 60% од 255. Функцијата исто така вклучува безбедносна проверка за да се осигури дека влезниот процент е помеѓу 0 и 100, враќајќи 0 ако е надвор од овој опсег.
Во setup() функцијата, можете да видите како се користи ова:
int b=5;//60% осветленост
Serial.println( pwmValue(b) );//печати на серискиот монитор
analogWrite(LEDpin, pwmValue(b));// вклучи ја LED диодата со 60% осветленост
Овде, променливата b е поставена на вашиот посакуван процент на осветленост. Функцијата pwmValue(b) потоа се користи и за печатење на мапираната вредност на серискиот монитор и за поставување на осветленоста на LED диодата. За да ја промените осветленоста на LED диодата, треба само да ја измените вредноста на b. map() функцијата ги извршува сите потребни пресметки за вас.
Жив проект/Демонстрација
Во видеото, презентерот го демонстрира проектот со менување на вредноста на променливата b и поставување на кодот на Arduino. Кога b е поставено на 60, кодот го мапира на 153 и LED диодата свети со 60% осветленост. Менувањето на b на 90 го мапира на 229, правејќи ја LED диодата значително посветла. Поставувањето на 100 го мапира на 255, што е максимална осветленост. Демонстрацијата јасно покажува како map() функцијата ви овозможува да ја контролирате LED диодата користејќи интуитивна процентна вредност, додека серискиот монитор ја потврдува точната вредност 0–255 што се испраќа до пинот (во видеото на 21:29).
Поврзани проекти од ова видео
- Лекција 14/31-1: Arduino Millis (без delay) и map функции | SunFounder Robojax
- Лекција 14/31-2: Arduino кодирање millis() пример 2 со настан
- Лекција 14/31-3: Arduino кодирање millis() пример 3 со копче
- Лекција 14/31-4: Arduino кодирање map() пример 1
Поглавја
- [00:00] Вовед во Millis и map функции
- [01:19] Што е Millis и зошто да се користи
- [05:46] Користење на Millis со настан за преземање акција
- [08:35] Millis пример 2 со копче
- [12:14] Millis пример 3 проверка за две притискања на копче
- [17:20] Вовед во map() функцијата
- [19:47] Пример на код за мапирање на процент во осветленост на LED
- [20:47] Жива демонстрација на map() функцијата
- [22:41] Креирање на прилагодена функција за справување со мапирање
/*
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
Работи што можеби ќе ви требаат
-
AmazonSunFounder Arduino Learning Kit on AliExpresss.click.aliexpress.com
-
Amazon
-
Amazon
-
Amazon
-
Amazon
-
Друго
Ресурси и референци
-
НадворешноPurchase SunFounder's 3-in-1 Smart car learning kitsunfounder.com
Датотеки📁
Упатство за корисникот
-
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