Пребарување код

Лекција 14/31-4: Arduino кодирање map() пример 1

Лекција 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() го поедноставува процесот на контролирање на аналогни излези со кориснички пријатни процентни вредности.

Поврзани проекти од ова видео

Поглавја

  • [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()

Слики

Sunfounder car assembled
Sunfounder car assembled
919-Lesson 14/31-4: Arduino coding map() example 1
Јазик: 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() {

 
 }
 

Ресурси и референци

Датотеки📁

Упатство за корисникот