توابع ریاضی در آردوینو – آموزش برنامه نویسی آردوینو
توابع ریاضی در آردوینو هم وجود داره و خیلی وقتا برای محاسبه زاویه ها و اندازه و … کاربرد دارن.
سعی میکنم اون هارو توی این قسمت کامل بگم ، اگر بار اولتونه و این کدها رو میخونید سعی کنین با مفهومشون آشنا بشید و بدونید که آره این ها هستن و مثلا گوشه ی ذهنمون بمونه که اوکی ، میشه با دستور Sin سینوس حساب کرد. همین کافیه! اصلا لازم نیست همشون رو حفظ کنید(من ک حفظ نکردم:D)
چون خیلی ساده هست این جلسه این مطلب رو یک قسمت جدا نکردم و براش جلسه نزدم مثل بقیه ی آموزش ها.
توابع ریاضی در آردوینو
تابع map
1 |
map(value,fromLow,fromHig,toLow,toHigh) |
این تابع مقدار دلخواه را از یک بازه به بازه دیگر نگاشت می کنه. مقدار fromLow به toLow و مقدار fromHigh به toHigh و اعداد بین این دو بازه به بازه جدید نگاشت میشوند.
به بیان دیگه. مثلا یک سنسوری رنج خروجیش اعدادی بین 10 تا 100 باشه و ما بخوایم این عدد رو به بازه ی دیگه ای مثلا صفر تا 255 ببریم و برای یک سنسور/موتور یا هر وسیله ی دیگه ای بفرستیم میتونیم از این تابع استفاده کنیم. این تابع 10 رو برابر صفر و 100 رو برابر 255 قرار میده و بازه بین 10 تا 100 رو به بازه ی بین 0 تا255 تغییر میده.
مثال:عدد 10 بیتی (بازه ی 0 تا 1024) را به 0 تا 255 نگاشت کنید.
1 2 3 4 |
void loop() { val=map(val,0,1023,0,255) } |
توی دستور بالا ما یک متغیر به اسم val داریم که مثلا عددی بین 0 تا 1023 رو از ورودی آنالوگ خوندیم و ریختیم داخل اون، حالا میخوایم روی یک پین دیگه با بازه ی 0 تا 255 نشون بدیم، با map کردن این متغیر ، خروجی ،عددی بین 0 تا 255 میشه که مطلوب ما بود.
تابع abs
1 |
abs(x) |
این تابع مقدار قدر مطلق عدد x رو محاسبه میکنه.
تابع min
1 |
min(x,y) |
این تابع مینیمم دو مقدار X و Y را از هر نوع داده ای که باشه ، محاسبه می کنه.
تابع max
1 |
max(x,y) |
این تابع ماکزیمم دو مقدار X و Y را از هر نوع داده ای که باشه ، محاسبه می کنه.
تابع pow
1 |
pow(base,exponent) |
این تابع عدد base رو به توان عدد exponent می رسونه. base و exponent هر دو از نوع float و خروجی تابع از نوع double هستن .
تابع sqrt
1 |
sqrt(x) |
این تابع ریشه دوم یک عدد را حساب میکنه که x میتواند از هر نوع داده ای باشد و خروجی تابع از نوع double هستش.
تابع (random(seed
1 |
randomseed(seed) |
این تابع مولد عدد تصادفی تعریف میکنه که منجر به ایجاد رشته ای از اعداد تصادفی می شه.این رشته بسیار طولانیه و تصادفی بودن مقدار ورودی اون باعث ایجاد مقادیر تصادفی با فراخوانی تابع random() می شه.
برای مثال با اعمال خروجی یک پایه مبدل آنالوگ به دیجیتال که به جایی متصل نیست،میشه رشته اعداد تصادفی ایجاد کرد.(با نویزی که روی پایه ایجاد شده) چنانچه بخوایم رشته ی اعداد تصادفی ایجاد شده توسط تابع randomSeed(seed) همواره یکسان باشه.ورودی اون رو عددی ثابت قرار می دهیم.
تابع random
این تابع ، اعداد شبه تصادفی ایجاد می کند که قالب اون به شکل زیره.
random(max)
random(min,max)
یادتون نره : پارامترهای min و max به ترتیب بازه پایین و بالا را برای عدد تصادفی تعریف می کنند که مقدار min شامل بازه بوده و مقدار max خارج از بازه است.
برای اطمینان از تصادفی بودن اعداد ایجاد شده، از تابع randomseed(seed) با ورودی تصادفی استفاده کنید.
مثال:
برنامه ای بنویسید که دو عدد تصادفی بین اعداد صفر تا 299 و 10 تا 19 ایجاد کند. برای اطمینان از تصادفی بودن اعداد ایجاد شده از randomseed با ورودی تصادفی که یک پایه ی مبدل آنالوگ به دیجیتال می باشد، استفاده کنید.نویز روی پایه ی مبدل ، تصادفی بودن عدد را تا حودو زیادی تضمین می کند.
1 2 3 4 5 6 7 8 9 10 11 |
long randNumber; void setup(){ Serial.begin(9600); randomSeed(analogread(0)); } Void loop(){ randNumber = random (300); Serial.println(randNumber); delay(50); } |
تابع constrain
1 |
constrain(x,a,b) |
این تابع عدد x را در بازه ی (a,b)محدود میکنه .
مثلا: مقدار خوانده شده ی sensval رو بین 20 تا 200 محدود کنید.
1 |
sensVal=constrain(sensval,20,200) |
تابع sin
1 |
sin(rad) |
این تابع سینوس زاویه برحسب رادیان را محاسبه میکنه. خروجی تابع عددی از نوع double است.
تابع cos
1 |
cos(rad) |
این تابع کسینوس زاویه برحسب رادیان را محاسبه میکنه. خروجی تابع عددی از نوع double است.
تابع tan
1 |
tan(rad) |
این تابع تانژانت زاویه برحسب رادیان را محاسبه میکنه. خروجی تابع عددی از منفی بینهایت تا مثبت بی نهایت از نوع double است.