Сабақ 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() функциясының пайдаланушыға ыңғайлы пайыздық мәндермен аналогтық шығыстарды басқару процесін қалай жеңілдететінін анық көрсетеді.
Осы бейнеге қатысты жобалар
- 14/31-1 сабақ: Arduino Millis (кешіктірусіз) және map функциялары | SunFounder Robojax
- 14/31-2 сабақ: Arduino coding millis() мысал 2 оқиғамен
- 14/31-3 сабақ: Arduino coding millis() мысал 3 батырмамен
- 14/31-5 сабақ: Arduino coding map() мысал 2
Тараулар
- [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() функциясының тірі демонстрациясы
/*
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() {
}
Сізге қажет болуы мүмкін нәрселер
-
АмазонкаSunFounder Arduino Learning Kit on AliExpresss.click.aliexpress.com
-
Амазонка
-
Амазонка
-
Амазонка
-
Амазонка
Ресурстар мен сілтемелер
-
Құжаттама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-в-1 Arduino Smart Car құрастыру нұсқаулығыБұл құжат SunFounder 3-в-1 Arduino Smart Car құрастыруды қадам бойынша көрсетеді
SunFounder_car_assembly_manual.pdf1.20 MB