Лекција 14/31-4: Arduino кодирање map() пример 1
Овај туторијал е дел од серија за програмирање на Arduino и се фокусира на практичната употреба на функцијата map(). Во оваа лекција, ќе научите како да конвертирате процентна вредност (0–100) во PWM (Pulse Width Modulation) вредност (0–255) за да ја контролирате осветленоста на LED диода. Наместо рачно да пресметувате дека 60% е еднакво на 153, функцијата map() ја врши линеарната конверзија за вас, правејќи го вашиот код почист и поинтуитивен.
Оваа техника е од суштинско значење за многу реални апликации каде што треба да ги преведете читањата од сензори или корисничките влезови во различни опсези. На пример, можете да ја користите за:
- Контрола на брзината на DC мотор врз основа на читање од потенциометар.
- Прикажување на суровата вредност на температурен сензор на скала од 0-100%.
- Мапирање на координатите од џојстик на аглите на серво мотор.
- Прилагодување на осветленоста на LED врз основа на сензор за амбиентална светлина.
- Конвертирање на аналогно читање од 0-5V во дигитална вредност од 0-1023 или обратно.
Хардвер/Компоненти
За да го следите овој проект, ќе ви бидат потребни следниве компоненти:
- Arduino плоча (Uno, Nano, итн.)
- LED диода
- Отпорник од 220 оми
- Поврзувачки жици
- Прототипна плоча (опционално, но препорачано)
Водич за поврзување
Во видеото, инструкторот го демонстрира проектот користејќи поставување на жици од претходна лекција за затемнување на LED. Колото е едноставно: поврзете ја анодата (долгата нога) на LED диодата со отпорник од 220 оми, а другиот крај на тој отпорник поврзете го со дигитален пин 3 на Arduino. Поврзете ја катодата (кратката нога) на LED диодата директно со пин за заземјување (GND) на Arduino.
Објаснување на кодот
Кодот за овој пример е многу концизен, со основната логика сместена во функцијата setup(). Ајде да ги разложиме деловите што може да ги конфигурира корисникот.
int LEDpin = 3; //дефиниран пин за LED
Оваа линија го дефинира пинот на Arduino на кој е поврзана вашата LED диода. Во овој пример, поставен е на пин 3, кој е пин со PWM способност, неопходен за аналоген излез. Можете да го промените овој број ако ја поврзете вашата LED на различен PWM пин.
int b=8;//60% осветленост
Ова е клучната променлива што ќе ја менувате за да тестирате различни нивоа на осветленост. Таа ја претставува саканата осветленост како процент. Коментарот во кодот вели „60%“, но вредноста е поставена на 8 за демонстративни цели во видеото. Можете да ја промените оваа вредност на кој било цел број помеѓу 0 и 100. На пример, поставувањето b = 60 би претставувало ниво на осветленост од 60%.
int brightness = map(b, 0, 100, 0,255);
Ова е срцето на лекцијата. Функцијата map() ја зема вашата процентна вредност (b) и ја конвертира од нејзиниот оригинален опсег (0 до 100) во нов целен опсег (0 до 255). Резултатот се чува во променливата brightness, која потоа се користи за запишување аналогна вредност на пинот на LED диодата.
analogWrite(LEDpin, brightness);// вклучи ја LED со 60% осветленост
Конечно, оваа линија ја испраќа мапираната вредност до пинот на LED користејќи analogWrite(). Ова го поставува работниот циклус на LED, ефективно контролирајќи ја нејзината осветленост. Убавината на овој пристап е што треба само да ја промените променливата b за да ја контролирате LED, а функцијата map() ги врши сите потребни пресметки.
Жив проект/Демонстрација
Во видеото, инструкторот го поставува кодот и ја демонстрира промената на променливата b. Кога b е поставена на 8, серискиот монитор ја печати мапираната вредност од 20, а LED е видливо затемнета. Промената на b на 90 резултира со мапирана вредност од 229, правејќи ја LED многу посветла. Поставувањето b на 100 се мапира на 255, што е целосна осветленост. Оваа практична демонстрација јасно покажува како функцијата map() го поедноставува процесот на контролирање на аналогни излези со кориснички пријатни процентни вредности.
Поврзани проекти од ова видео
- Лекција 14/31-1: Arduino Millis (без delay) и map функции | SunFounder Robojax
- Лекција 14/31-2: Arduino кодирање millis() пример 2 со настан
- Лекција 14/31-3: Arduino кодирање millis() пример 3 со копче
- Лекција 14/31-5: Arduino кодирање map() пример 2
Поглавја
- [00:00] Вовед во курсот за Arduino од Robojax
- [01:19] Што е millis() и зошто да се користи
- [05:46] Пример 1: Користење на millis() за временски настан
- [08:29] Пример 2: Користење на millis() со копче
- [12:14] Пример 3: Детектирање на второ притискање на копче по одредено време
- [17:20] Вовед во функцијата map()
- [19:47] Преглед на кодот за примерот со map()
- [20:41] Жива демонстрација на функцијата map()
/*
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() {
}
Работи што можеби ќе ви требаат
-
AmazonSunFounder Arduino Learning Kit on AliExpresss.click.aliexpress.com
-
Amazon
-
Amazon
-
Amazon
-
Amazon
Ресурси и референци
-
ДокументацијаDocumentation for SunFounder 3 in 1 IoT/Smart Car/Learning Kitdocs.sunfounder.com
-
Надворешно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