سبق 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 پر)۔
اس ویڈیو سے متعلقہ پروجیکٹس
- سبق 14/31-1: Arduino Millis (بغیر تاخیر) اور map فنکشنز | SunFounder Robojax
- سبق 14/31-2: Arduino کوڈنگ millis() مثال 2 ایونٹ کے ساتھ
- سبق 14/31-3: Arduino کوڈنگ millis() مثال 3 پش بٹن کے ساتھ
- سبق 14/31-4: Arduino کوڈنگ map() مثال 1
ابواب
- [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] میپنگ کو سنبھالنے کے لیے کسٹم فنکشن بنانا
/*
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
آپ کو جن چیزوں کی ضرورت ہو سکتی ہے
-
ایمیزونSunFounder Arduino Learning Kit on AliExpresss.click.aliexpress.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