Кодты іздеу

Сабақ 14/31-4: Arduino кодтау map() мысалы 1

Сабақ 14/31-4: Arduino кодтау map() мысалы 1

Бұл оқу құралы Arduino бағдарламалау бойынша серияның бөлігі болып табылады және map() функциясын практикалық қолдануға бағытталған. Бұл сабақта сіз LED жарықтығын басқару үшін пайыздық мәнді (0–100) PWM (импульстік ені модуляциясы) мәніне (0–255) қалай түрлендіруге болатынын үйренесіз. 60% 153-ке тең екенін қолмен есептеудің орнына, map() функциясы сызықтық түрлендіруді өзі жасайды, бұл сіздің кодыңызды таза және түсінікті етеді.

Бұл әдіс сенсор көрсеткіштерін немесе пайдаланушы енгізулерін әртүрлі диапазондарға аудару қажет болатын көптеген нақты қолданбалар үшін маңызды. Мысалы, оны келесі жағдайларда қолдануға болады:

  • Потенциометр көрсеткішіне негізделген тұрақты ток қозғалтқышының жылдамдығын басқару.
  • Температура сенсорының шикі мәнін 0-100% шкаласында көрсету.
  • Джойстик координаттарын серво қозғалтқыш бұрыштарына салыстыру.
  • Қоршаған орта жарық сенсорына негізделген LED жарықтығын реттеу.
  • 0-5V аналогтық көрсеткішті 0-1023 цифрлық мәнге немесе керісінше түрлендіру.

Аппараттық құралдар/Компоненттер

Осы жобамен жұмыс істеу үшін сізге келесі компоненттер қажет болады:

  • Arduino тақтасы (Uno, Nano және т.б.)
  • LED
  • 220 Ом резистор
  • Қосылу сымдары
  • Макет тақтасы (міндетті емес, бірақ ұсынылады)

Қосылу нұсқаулығы

Бейнеде оқытушы LED өшіп-жанып тұруы туралы алдыңғы сабақтағы қосылу схемасын пайдаланып жобаны көрсетеді. Тізбек қарапайым: LED анодын (ұзын аяғын) 220 Ом резисторға қосыңыз, ал резистордың екінші ұшын Arduino-дағы 3-цифрлық пинге қосыңыз. LED катодын (қысқа аяғын) Arduino-дағы жерге (GND) пиніне тікелей қосыңыз.

Кодты түсіндіру

Бұл мысалдың коды өте қысқа, негізгі логика setup() функциясында орналасқан. Пайдаланушы конфигурациялайтын бөліктерді қарастырайық.

int LEDpin = 3; //LED үшін пинді анықтау

Бұл жол LED қосылған Arduino пинін анықтайды. Бұл мысалда ол 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% жарықтықпен қосу

Соңында, бұл жол салыстырылған мәнді analogWrite() көмегімен LED пинына жібереді. Бұл LED-дің жұмыс циклін орнатады, осылайша оның жарықтығын тиімді басқарады. Бұл тәсілдің әдемілігі - LED-ді басқару үшін тек b айнымалысын өзгерту қажет, ал map() функциясы барлық қажетті есептеулерді өзі жасайды.

Тірі жоба/Демонстрация

Бейнеде оқытушы кодты жүктеп, b айнымалысын өзгертудің әсерін көрсетеді. b 8-ге орнатылғанда, сериялық монитор 20 салыстырылған мәнін басып шығарады, ал LED айтарлықтай күңгірт болады. b-ны 90-ға өзгерту 229 салыстырылған мәніне әкеледі, бұл LED-ді әлдеқайда жарық етеді. b-ны 100-ге орнату 255-ке салыстырылады, бұл толық жарықтық. Бұл практикалық демонстрация map() функциясының пайдаланушыға ыңғайлы пайыздық мәндермен аналогтық шығыстарды басқару процесін қалай жеңілдететінін анық көрсетеді.

Осы бейнеге қатысты жобалар

Тараулар

  • [00:00] Robojax Arduino курсына кіріспе
  • [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() {

 
 }
 

Сізге қажет болуы мүмкін нәрселер

Ресурстар мен сілтемелер

Файлдар📁

Пайдаланушының нұсқаулығы