کوڈ تلاش کریں

سبق 14/31-5: آرڈوینو کوڈنگ map() مثال 2

سبق 14/31-5: آرڈوینو کوڈنگ map() مثال 2

یہ ٹیوٹوریل ظاہر کرتا ہے کہ Arduino کے map() فنکشن کو کیسے استعمال کیا جائے تاکہ LED کی چمک کو فیصد ویلیو (0–100%) کے ذریعے کنٹرول کیا جا سکے، بجائے اس کے کہ خام 0–255 رینج استعمال کی جائے جو analogWrite() کے لیے درکار ہے۔ یہ ایک بنیادی تکنیک ہے جو آپ کے کوڈ کو آسان بناتی ہے اور اسے زیادہ بدیہی بناتی ہے، کیونکہ آپ صوابدیدی بائٹ ویلیوز کے بجائے فیصد کے لحاظ سے سوچ سکتے ہیں۔

سن فاؤنڈر کار اسمبل شدہ

یہ مہارت کسی بھی پروجیکٹ کے لیے ضروری ہے جہاں آپ کو سینسر ریڈنگز یا کنٹرول سگنلز کو اسکیل کرنے کی ضرورت ہو۔ مثال کے طور پر، آپ اسے استعمال کر سکتے ہیں:

  • پوٹینشیومیٹر کی ریڈنگ کی بنیاد پر LED کی چمک یا موٹر کی رفتار کو کنٹرول کرنے کے لیے۔
  • درجہ حرارت سینسر کے آؤٹ پٹ (مثلاً، 0–1023) کو سیلسیس یا فارن ہائیٹ رینج میں تبدیل کرنے کے لیے۔
  • جوائس اسٹک کے اینالاگ ان پٹ کو سروو موٹر کی پوزیشن کنٹرول کرنے کے لیے میپ کرنے کے لیے۔
  • ایک سادہ یوزر انٹرفیس بنانے کے لیے جہاں فیصد ویلیو ڈیوائس کی پاور لیول سیٹ کرنے کے لیے استعمال ہوتی ہے۔

اس سبق کے اختتام تک، آپ صاف ستھرا، زیادہ قابلِ برقرار کوڈ لکھنے کے قابل ہو جائیں گے جو پڑھنے اور ایڈجسٹ کرنے میں آسان ہو۔

ہارڈویئر/کمپوننٹس

یہ پروجیکٹ کم سے کم کمپوننٹس استعمال کرتا ہے، جو اسے ابتدائی افراد کے لیے بہترین بناتا ہے۔ آپ کو درج ذیل کی ضرورت ہوگی:

  • ایک Arduino بورڈ (مثلاً، Uno)۔
  • ایک LED۔
  • ایک 220-اوہم ریزسٹر۔
  • جمپر وائرز۔
  • ایک بریڈ بورڈ (اختیاری لیکن تجویز کردہ)۔

وائرنگ گائیڈ

اس پروجیکٹ کی وائرنگ بہت سادہ ہے، جیسا کہ ویڈیو میں دکھایا گیا ہے (ویڈیو میں 20:47 پر)۔ LED کو Arduino کے پن 3 سے 220-اوہم کرنٹ لمیٹنگ ریزسٹر کے ذریعے جوڑا گیا ہے۔

LED کے اینوڈ (لمبی ٹانگ) کو ریزسٹر کے ذریعے پن 3 سے جوڑیں۔ LED کے کیتھوڈ (چھوٹی ٹانگ) کو Arduino کے گراؤنڈ (GND) پن سے جوڑیں۔

کوڈ کی وضاحت

یہ مثال ایک صارف کی طرف سے متعین کردہ فنکشن پر مرکوز ہے جو LED کی چمک کو کنٹرول کرنے کو آسان بناتا ہے۔ کوڈ pwmValue() نامی ایک کسٹم فنکشن کے گرد بنایا گیا ہے، جو کوڈ کو بدیہی بنانے کی کلید ہے۔

آئیے کوڈ کے قابلِ ترتیب حصوں کو توڑتے ہیں:

int LEDpin = 3; //defind pin for LED

یہ لائن Arduino پن کی وضاحت کرتی ہے جس سے LED منسلک ہے۔ آپ نمبر 3 کو اپنے Arduino بورڈ پر کسی بھی دوسرے PWM-قابل پن میں تبدیل کر سکتے ہیں۔

پروجیکٹ کا مرکز کسٹم فنکشن pwmValue() ہے۔ یہ فنکشن ان پٹ کے طور پر فیصد ویلیو لیتا ہے اور اسے 0–255 رینج میں تبدیل کرتا ہے جو analogWrite() استعمال کرتا ہے۔ یہیں پر map() فنکشن اپنا جادو دکھاتا ہے۔

int pwmValue(int percent)
{
  if(percent >=0 && percent <=100)
  {
    return map(percent, 0,100,  0,255);
  }else
  {
    return 0;
  }
}

اس فنکشن کو استعمال کرنے کے لیے، آپ اسے اپنی مطلوبہ چمک کی فیصد کے ساتھ کال کرتے ہیں۔ فنکشن analogWrite() کے لیے صحیح ویلیو لوٹائے گا۔ مثال کے طور پر، pwmValue(60) 153 لوٹائے گا، جو 255 کا 60% ہے۔ فنکشن میں ایک حفاظتی چیک بھی شامل ہے تاکہ یہ یقینی بنایا جا سکے کہ ان پٹ فیصد 0 اور 100 کے درمیان ہے، اگر یہ اس رینج سے باہر ہو تو 0 لوٹاتا ہے۔

setup() فنکشن میں، آپ دیکھ سکتے ہیں کہ یہ کیسے استعمال ہوتا ہے:

int b=5;//60% brightness
Serial.println( pwmValue(b)   );//print it on serial monitor
analogWrite(LEDpin, pwmValue(b));// turn the LED on with 60% brightness

یہاں، متغیر b کو آپ کی مطلوبہ چمک کی فیصد پر سیٹ کیا گیا ہے۔ فنکشن pwmValue(b) پھر میپ شدہ ویلیو کو سیریل مانیٹر پر پرنٹ کرنے اور LED کی چمک سیٹ کرنے دونوں کے لیے استعمال ہوتا ہے۔ LED کی چمک تبدیل کرنے کے لیے، آپ کو صرف b کی ویلیو تبدیل کرنی ہوگی۔ map() فنکشن آپ کے لیے تمام ضروری حسابات سنبھالتا ہے۔

لائیو پروجیکٹ/ڈیموسٹریشن

ویڈیو میں، پریزنٹر b متغیر کی ویلیو تبدیل کرکے اور کوڈ کو Arduino پر اپ لوڈ کرکے پروجیکٹ کا مظاہرہ کرتا ہے۔ جب b کو 60 پر سیٹ کیا جاتا ہے، تو کوڈ اسے 153 پر میپ کرتا ہے اور LED 60% چمک پر روشن ہوتی ہے۔ b کو 90 پر تبدیل کرنے سے 229 میپ ہوتا ہے، جس سے LED نمایاں طور پر زیادہ روشن ہوتی ہے۔ اسے 100 پر سیٹ کرنے سے 255 میپ ہوتا ہے، جو زیادہ سے زیادہ چمک ہے۔ ڈیموسٹریشن واضح طور پر دکھاتی ہے کہ کس طرح map() فنکشن آپ کو بدیہی فیصد ویلیو کے ذریعے LED کو کنٹرول کرنے کی اجازت دیتا ہے، جبکہ سیریل مانیٹر پن پر بھیجی جانے والی عین 0–255 ویلیو کی تصدیق کرتا ہے (ویڈیو میں 21:29 پر)۔

اس ویڈیو سے متعلقہ پروجیکٹس

ابواب

  • [00:00] Millis اور map فنکشنز کا تعارف
  • [01:19] Millis کیا ہے اور اسے کیوں استعمال کریں
  • [05:46] کارروائی کرنے کے لیے ایونٹ کے ساتھ Millis کا استعمال
  • [08:35] Millis مثال 2 پش بٹن کے ساتھ
  • [12:14] Millis مثال 3 دو بٹن پریس چیک کرنا
  • [17:20] map() فنکشن کا تعارف
  • [19:47] فیصد کو LED چمک میں میپ کرنے کے لیے کوڈ مثال
  • [20:47] map() فنکشن کا لائیو مظاہرہ
  • [22:41] میپنگ کو سنبھالنے کے لیے کسٹم فنکشن بنانا

تصاویر

Sunfounder car assembled
Sunfounder car assembled
Sunfounder car assembled
Sunfounder car assembled
920-Lesson 14/31-5: Arduino coding map() example 2
زبان: C++
/*
Lesson 14/31-5: Arduino coding map( ) example-2
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);//initialzie serial monitor with 9600 baud
    pinMode(LEDpin, OUTPUT);//set pin as output
    int b=5;//60% brightness

    Serial.println( pwmValue(b)   );//print it on serial monitor
    analogWrite(LEDpin, pwmValue(b));// turn the LED on with 60% brightness   
 }

 void loop() {

 
 }

/*
 * pwmValue(int percent)
 * @param precent is value between 0 to 100
 * @return it returns the mapped value from 0 to 255
 * written by Ahmad Shamshiri on Dec 9, 2022
 * 
 */
 int pwmValue(int percent)
 {
  if(percent >=0 && percent <=100)
  {
    return map(percent, 0,100,  0,255);
  }else
  {
    return 0;
  }
 } //pwmValue end
 

آپ کو جن چیزوں کی ضرورت ہو سکتی ہے

وسائل اور حوالہ جات

فائلیں📁

صارف کا دستی کتاب