لومړی ۱۴/۳۱-۴: د Arduino کوډینګ map() بېلګه ۱
دا ټیوټوریل د 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-ohm مقاومت
- جمپر تارونه
- یو بریډبورډ (اختیاري، مګر سپارښتنه کیږي)
د تارونو لارښود
په ویډیو کې، ښوونکی د LED فېډینګ په اړه د پخواني درس څخه د تارونو تنظیم په کارولو سره پروژه ښیې. سرکټ ساده دی: د LED انوډ (اوږده پښه) د 220-ohm مقاومت سره وصل کړئ، او د هغه مقاومت بل پای د Arduino په ډیجیټل پن 3 سره وصل کړئ. د LED کیتوډ (لنډه پښه) مستقیم د Arduino په ځمکني (GND) پن سره وصل کړئ.
د کوډ تشریح
د دې مثال کوډ ډیر لنډ دی، اصلي منطق د 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٪ روښانتیا سره چالان کړئ
په پای کې، دا کرښه نقشه شوی ارزښت د 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 کوډینګ millis() مثال 2 د پیښې سره
- درس 14/31-3: Arduino کوډینګ millis() مثال 3 د پش بټن سره
- درس 14/31-5: Arduino کوډینګ 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-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