کوډ ولټوئ

لومړی ۱۴/۳۱-۴: د Arduino کوډینګ map() بېلګه ۱

لومړی ۱۴/۳۱-۴: د 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() فنکشن د کاروونکي دوستانه سلنې ارزښتونو سره د انلاګ آوټ پټ کنټرول پروسه ساده کوي.

د دې ویډیو څخه اړوند پروژې

فصلونه

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

 
 }
 

هغه شیان چې تاسو ورته اړتیا لرئ

سرچینې او حوالې

فایلونه📁

د کارونکي لارښود