Lesson_2.ino
662 B
#درس 2: نرم افزار LED چشمک زن یک ثانیه ای https://telegram.me/ArduinoKaraneJavan
کار با دستورات پین های دیجیتال
استفاده از کلید برای روشن کردن و خاموش کردن LED:
در این مثال ما با نحوه دیگری از تعریف متغیر برای نام پایه های دیجیتال آشنا شده و با دستورات ورودی و خروجی دیجیتال آشنا می شویم.
سپس با استفاده از دستور if_then_else برنامه را کنترل می کنیم.
https://telegram.me/ArduinoKaraneJavan
استفاده از کلید برای روشن کردن و خاموش کردن LED:
در این مثال ما با نحوه دیگری از تعریف متغیر برای نام پایه های دیجیتال آشنا شده و با دستورات ورودی و خروجی دیجیتال آشنا می شویم.
سپس با استفاده از دستور if_then_else برنامه را کنترل می کنیم.
https://telegram.me/ArduinoKaraneJavan
Lesson_3.ino
2 KB
طرح روشن و خاموش کردن LED با استفاده از کلید. در این طرح با نحوه خواندن و نوشتن دیجیتال آشنا میشویم.
https://telegram.me/ArduinoKaraneJavan
https://telegram.me/ArduinoKaraneJavan
دانا ، نادان را می شناسد
چرا که خود زمانی نادان بوده است
اما نادان ، دانا را نمی شناسد
چرا که هرگز دانا نبوده است
👤 افلاطون
چرا که خود زمانی نادان بوده است
اما نادان ، دانا را نمی شناسد
چرا که هرگز دانا نبوده است
👤 افلاطون
https://telegram.me/ArduinoKaraneJavan
حامد محضرنیا
شب یلداتون پیشاپیش مبارک
Debounce
در کلید های مکانیکی هنگام فشردن یا رها کردن کلید، بدلیل مکانیکی بودن آنها و ارتعاشات تیغه های فلزی استفاده شده در کلیدها هنگامی که ما کلید را به ظاهر یکبار فشار می دهیم عملاً کلید فوق چندین بار قطع و وصل می شود تا فشرده گردد. و همین عمل هنگام رها کردن یک کلید تحت فشار نیز دوباره اتفاق می افتد. که به این اتفاق نویز می گویند.
لذا برای جلوگیری از این امر و حذف نویز های فوق از روش Debounce استفاده می گردد.
روش Debounce به دو صورت می تواند انجام گیرد:
1⃣ روش Debounce سخت افزاری: در این روش پین ورودی آردوینو که می خواهیم به آن کلید متصل نماییم را با یک مقاومت 1K الی 10K به زمین متصل نموده و با یک خازن الکترولیت در حدود 47uF به مثبت مدار متصل می نمایند و کلید فوق را با خازن مزبور موازی می کنند. در این حالت خازن با اولین فشرده شدن کلید تخلیه شده و مقدار 1 منطقی به پین مورد نظر می رسد ولی چون خازن با یک مقاومت سری شده، لذا نمیتواند بصورت آنی شارژ شود و بنابراین لرزش های تیغه اثری در مقدار منطقی پبن متصل به کلید نخواهد داشت.
در هنگام رها کردن کلید نیز برعکس این اتفاق روی می دهد. چون هنگام رها کردن کلید ابتدا لرزش تیغه فلزی کلید اتفاق می افتد، وضعیت منطقی پین در همان حالت قبلی یعنی 1 منطقی باقی می ماند و پس از رها شدن کامل کلید، یعنی بعد از آخرین لرزش آن خازن پس از گذشت مدت زمان 5RC بطور کامل شارژ شده و در حکم مدار باز عمل می کند. یعنی پین مورد نظر در این حالت فقط با یک مقاومت به زمین متصل است و دارای مقدار منطقی 0 می شود.
استفاده از روش Debounce سخت افزاری باعث پیچیدگی مدار طراحی شده و همچنین شلوغی آن می گردد. مثلاً فرض کنید اگر کی برد کامپیوتر که 108 عدد کلید دارد را بخواهیم با این روش حذف نویز کنیم چه اتفاقی می افتد.
لذا روش دیگری بنام Debounce نرم افزاری ابداع گردید.
2⃣ روش Debounce نرم افزاری: در این روش طی یک زیر برنامه ای که می نویسیم به محض اینکه در پین ورودی که کلید به آن متصل است اولین تغییر از سطح منطقی 1 به 0 یا برعکس اتفاق افتاد مقدار آنرا می خوانیم و به مدت زمان معینی بین 50 تا 100 میلی ثانیه صبر می کنیم تا لرزش کلید تمام شود و سپس مجدداً مقدار منطقی کلید را می خوانیم. اگر مقدار خوانده شده با مقداری که قبل از زمانبندی اندازه گرفته بودیم برابر بود یعنی کلید تغییر حالت داده و از مقدار خوانده شده در برنامه استفاده می کنیم. در غیر اینصورت آنرا نویز حساب کرده و مجدداً منتظر تغییر حالت کلید می مانیم.
https://telegram.me/ArduinoKaraneJavan
در کلید های مکانیکی هنگام فشردن یا رها کردن کلید، بدلیل مکانیکی بودن آنها و ارتعاشات تیغه های فلزی استفاده شده در کلیدها هنگامی که ما کلید را به ظاهر یکبار فشار می دهیم عملاً کلید فوق چندین بار قطع و وصل می شود تا فشرده گردد. و همین عمل هنگام رها کردن یک کلید تحت فشار نیز دوباره اتفاق می افتد. که به این اتفاق نویز می گویند.
لذا برای جلوگیری از این امر و حذف نویز های فوق از روش Debounce استفاده می گردد.
روش Debounce به دو صورت می تواند انجام گیرد:
1⃣ روش Debounce سخت افزاری: در این روش پین ورودی آردوینو که می خواهیم به آن کلید متصل نماییم را با یک مقاومت 1K الی 10K به زمین متصل نموده و با یک خازن الکترولیت در حدود 47uF به مثبت مدار متصل می نمایند و کلید فوق را با خازن مزبور موازی می کنند. در این حالت خازن با اولین فشرده شدن کلید تخلیه شده و مقدار 1 منطقی به پین مورد نظر می رسد ولی چون خازن با یک مقاومت سری شده، لذا نمیتواند بصورت آنی شارژ شود و بنابراین لرزش های تیغه اثری در مقدار منطقی پبن متصل به کلید نخواهد داشت.
در هنگام رها کردن کلید نیز برعکس این اتفاق روی می دهد. چون هنگام رها کردن کلید ابتدا لرزش تیغه فلزی کلید اتفاق می افتد، وضعیت منطقی پین در همان حالت قبلی یعنی 1 منطقی باقی می ماند و پس از رها شدن کامل کلید، یعنی بعد از آخرین لرزش آن خازن پس از گذشت مدت زمان 5RC بطور کامل شارژ شده و در حکم مدار باز عمل می کند. یعنی پین مورد نظر در این حالت فقط با یک مقاومت به زمین متصل است و دارای مقدار منطقی 0 می شود.
استفاده از روش Debounce سخت افزاری باعث پیچیدگی مدار طراحی شده و همچنین شلوغی آن می گردد. مثلاً فرض کنید اگر کی برد کامپیوتر که 108 عدد کلید دارد را بخواهیم با این روش حذف نویز کنیم چه اتفاقی می افتد.
لذا روش دیگری بنام Debounce نرم افزاری ابداع گردید.
2⃣ روش Debounce نرم افزاری: در این روش طی یک زیر برنامه ای که می نویسیم به محض اینکه در پین ورودی که کلید به آن متصل است اولین تغییر از سطح منطقی 1 به 0 یا برعکس اتفاق افتاد مقدار آنرا می خوانیم و به مدت زمان معینی بین 50 تا 100 میلی ثانیه صبر می کنیم تا لرزش کلید تمام شود و سپس مجدداً مقدار منطقی کلید را می خوانیم. اگر مقدار خوانده شده با مقداری که قبل از زمانبندی اندازه گرفته بودیم برابر بود یعنی کلید تغییر حالت داده و از مقدار خوانده شده در برنامه استفاده می کنیم. در غیر اینصورت آنرا نویز حساب کرده و مجدداً منتظر تغییر حالت کلید می مانیم.
https://telegram.me/ArduinoKaraneJavan
This media is not supported in your browser
VIEW IN TELEGRAM
🔴 4 درس از یک فیلم 5 ثانیه ای!
1.زود ناامید نشو!
2.موفقیت تو را مغرور نکند.
3.گاهی کمی صبر، شکست را به پیروزی تبدیل می کند.
4.گاهی کمی عجله، پیروزی را به شکست تبدیل می کند. (نشردهید)
1.زود ناامید نشو!
2.موفقیت تو را مغرور نکند.
3.گاهی کمی صبر، شکست را به پیروزی تبدیل می کند.
4.گاهی کمی عجله، پیروزی را به شکست تبدیل می کند. (نشردهید)
شب جمشید و جامش
شب بوسه به خاکش
شب حافظ و سعدی
شب پارسی و مادی
شب آخر آذر
شب پاک و منور
شب آرش و آتش
شب مهر و سیاوش
شب پاک اهوراست
شب مژده و یلداست
پیشاپیش یلداتون مبارک.❤️
شب بوسه به خاکش
شب حافظ و سعدی
شب پارسی و مادی
شب آخر آذر
شب پاک و منور
شب آرش و آتش
شب مهر و سیاوش
شب پاک اهوراست
شب مژده و یلداست
پیشاپیش یلداتون مبارک.❤️
آرایه چیست؟
خدمت آردوینو کاران عزیزان باید عرض کنم در قسمتهای قبل، داده ها را در درون متغیرها و یا ثوابت ذخیره می کردیم. اما گاهی لازم است تعدادی از داده ها را بگونه ای ذخیره نماییم که متعلق به یک مجموعه بوده و دسترسی به آنها آسان باشد .
گاهی وقتها لازم است که یک سری از داده هم نوع را دریافت کرده و بروی آنها عملیات خاصی را مثل مقایسه یا مرتب کردن و ... را انجام دهیم، لذا باید آنها را بگونه ای خاص در کنار یکدیگر قرار دهیم که این مسئله در برنامه نویسی را با استفاده از آرایه ها حل خواهیم کرد .
آرایه مجموعه ای از عناصر هم نوع است. در برنامه نویسی C++ برای تعریف آرایه باید نوع عناصر آنرا مشخص کنیم و آرایه باید حتما دارای نام باشد که از قانون نامگذاری برای متغیرها تبعیت می کند و بعد از نام از [] استفاده می کنیم که درون آن می توان از یک عدد صحیح برای تعیین طول آرایه استفاده نمود .
برای دسترسی به عناصر آرایه از اندیس استفاده می کنیم که اولین اندیس هر آرایه ای از عدد صفر شروع می شود .
int arr[4];
کد برنامه نویسی ++C بالا آرایه ای را با نام arr تعریف می کند که عناصر آن از نوع عدد صحیح هستند و تعداد عناصر آرایه (طول) برابر با 44 است .
به این نکته توجه کنید که تعداد عناصر آرایه بالا 4 است ولی اندیس عناصر آن از صفر شروع شده و به سه ختم می شود و نباید تعداد را با اندیس اشتباه گرفت .
گفتنی است که عناصر آرایه پشت سر هم در خانه های حافظه ذخیره می شوند و هر عنصر (خانه) از آرایه به اندازه طول نوع آرایه فضا اشغال می کند. در آرایه بالا چون نوع آرایه تعریف شده int است پس هر عنصر مقدار 4 بایت و چون طول آن 4 است در نهایت 16 بایت پشت سر هم از حافظه را اشغال می کند .
معمولا آرایه ها با توجه به ابعادشان تقسیم بندی می شوند :
✅ آرایه های یک بعدی :
آرایه های یک بعدی دارای یک سطر و چند ستون و یا دارای یک ستون و چند سطر هستند و فقط دارای یک اندیس برای دسترسی به عناصرشان می باشند .
✅ مقدار دادن به عناصر آرایه ها :
برای مقدار دادن به آرایه ها هم می توان به تمامی عناصر بصورت یکجا مقدار داد که حالت مجموعه در ریاضی را بخود می گیرد و هم بصورت تک به تک. وقتی طول آرایه را مشخص نمی کنیم با مقدار دادن به عناصر، طول آرایه نیز مشخص خواهد شد .
نکته) دوستان دقت داشته باشند هنگام تعریف آرایه باید طول را قید کرد مگر اینکه همانجا بدون ذکر طول، به یکایک عناصر مقدار دهیم. پس یا باید طول آرایه را مشخص کنیم یا با مقدار دادن به عنصرهای آرایه،طول برای کامپایلر مشخص شود و اگر غیر از این باشد کامپایلر از برنامه خطا خواهد گرفت .
intx[5] = { 10, 37, -3, 8023, 0 };
یا
int x[4];
x[0] = 10;
x[1] = 37;
x[2] = -3;
x[3] = 8023;
یا
int x[] = { 10, 37, -3, 8023, 0 };
https://telegram.me/ArduinoKaraneJavan
خدمت آردوینو کاران عزیزان باید عرض کنم در قسمتهای قبل، داده ها را در درون متغیرها و یا ثوابت ذخیره می کردیم. اما گاهی لازم است تعدادی از داده ها را بگونه ای ذخیره نماییم که متعلق به یک مجموعه بوده و دسترسی به آنها آسان باشد .
گاهی وقتها لازم است که یک سری از داده هم نوع را دریافت کرده و بروی آنها عملیات خاصی را مثل مقایسه یا مرتب کردن و ... را انجام دهیم، لذا باید آنها را بگونه ای خاص در کنار یکدیگر قرار دهیم که این مسئله در برنامه نویسی را با استفاده از آرایه ها حل خواهیم کرد .
آرایه مجموعه ای از عناصر هم نوع است. در برنامه نویسی C++ برای تعریف آرایه باید نوع عناصر آنرا مشخص کنیم و آرایه باید حتما دارای نام باشد که از قانون نامگذاری برای متغیرها تبعیت می کند و بعد از نام از [] استفاده می کنیم که درون آن می توان از یک عدد صحیح برای تعیین طول آرایه استفاده نمود .
برای دسترسی به عناصر آرایه از اندیس استفاده می کنیم که اولین اندیس هر آرایه ای از عدد صفر شروع می شود .
int arr[4];
کد برنامه نویسی ++C بالا آرایه ای را با نام arr تعریف می کند که عناصر آن از نوع عدد صحیح هستند و تعداد عناصر آرایه (طول) برابر با 44 است .
به این نکته توجه کنید که تعداد عناصر آرایه بالا 4 است ولی اندیس عناصر آن از صفر شروع شده و به سه ختم می شود و نباید تعداد را با اندیس اشتباه گرفت .
گفتنی است که عناصر آرایه پشت سر هم در خانه های حافظه ذخیره می شوند و هر عنصر (خانه) از آرایه به اندازه طول نوع آرایه فضا اشغال می کند. در آرایه بالا چون نوع آرایه تعریف شده int است پس هر عنصر مقدار 4 بایت و چون طول آن 4 است در نهایت 16 بایت پشت سر هم از حافظه را اشغال می کند .
معمولا آرایه ها با توجه به ابعادشان تقسیم بندی می شوند :
✅ آرایه های یک بعدی :
آرایه های یک بعدی دارای یک سطر و چند ستون و یا دارای یک ستون و چند سطر هستند و فقط دارای یک اندیس برای دسترسی به عناصرشان می باشند .
✅ مقدار دادن به عناصر آرایه ها :
برای مقدار دادن به آرایه ها هم می توان به تمامی عناصر بصورت یکجا مقدار داد که حالت مجموعه در ریاضی را بخود می گیرد و هم بصورت تک به تک. وقتی طول آرایه را مشخص نمی کنیم با مقدار دادن به عناصر، طول آرایه نیز مشخص خواهد شد .
نکته) دوستان دقت داشته باشند هنگام تعریف آرایه باید طول را قید کرد مگر اینکه همانجا بدون ذکر طول، به یکایک عناصر مقدار دهیم. پس یا باید طول آرایه را مشخص کنیم یا با مقدار دادن به عنصرهای آرایه،طول برای کامپایلر مشخص شود و اگر غیر از این باشد کامپایلر از برنامه خطا خواهد گرفت .
intx[5] = { 10, 37, -3, 8023, 0 };
یا
int x[4];
x[0] = 10;
x[1] = 37;
x[2] = -3;
x[3] = 8023;
یا
int x[] = { 10, 37, -3, 8023, 0 };
https://telegram.me/ArduinoKaraneJavan
آرایه چیست؟ (ادامه)
سلام بر دوستان عزیر آردوینو کار
امروز میخواهم با یک مثال به برسی آرایه بپردازیم که در آن از درس های گذشته نیز استفاده شده است.
در این مثال ما تعداد 4 عدد رله و تعداد 6 عدد کلید فشاری داریم و میخواهیم کارهای زیر را انجام دهیم:
1⃣ با فشردن هرکدام از 4 کلید اول رله مربوط به آن کلید روشن شود و با فشردن مجدد همان کلید رله مربوطه خاموش گردد.
2⃣ با فشردن کلید پنجم تمامی رله ها روشن شوند.
3⃣ با فشردن کلید ششم همه رله ها خاموش گردند.
در این مثال از Debounce استفاده نکرده ایم تا مفهوم آرایه را به خوبی متوجه شوید. در مثال های بعدی همین برنامه را با استفاده از Debounce انجام خواهیم داد.
// چون مقدار یک آرایه از نوع عدد صحیح است و نمیتواند تغییر کند باید حتماً از نوع const یعنی ثابت تعرف گردد. //
// تعریف تعداد پایه های کلید فشاری و رله //
const int B_Count = 5, R_Count = 4;
// تعریف شماره پایه های رله ها //
int Rellay_Pin[R_Count] = {6, 8, 11, 12};
// تعریف شماره پایه های کلید فشاری ها //
int Button_Pin[B_Count] = {2, 4, 5, 9, 13, 7};
// به تعداد کلید ها متغیری بنام B_State تعریف می کنیم تا آخرین وضعیت کلید را در خود نگهداری کند. //
bool B_State[B_Count] = {0};
// یعنی از B_State صفرم تا B_State چهارم همه مقدار صفر به خود بگیرند //
// میتوانستیم به این صورت نیز بنویسیم //
//bool B_State[B_Count] = {0, 0, 0, 0};
// ولی در اینصورت اگر تعداد کلید ها تغییر پیدا می کرد باید تعداد صفر ها را نیز تغییر میدادیم. //
void setup() {
// تنظیم حالت ورودی و خروجی پایه ها //
// در این حلقه For چون تعداد پایه های کلید های فشاری از تعداد//
// پایه های رله بیشتر است از تعداد کلید ها استفاده می کنیم. //
for (int i = 0; i < B_Count; i++) {
// پایه های کلیدهای فشاری بعنوان ورودی با مقاومت PULLUP تعریف می شوند. //
pinMode(Button_Pin[i], INPUT_PULLUP);
// اگر شمارنده حلقه(i) از تعداد پایه های رله بیشتر نیست //
if (i < R_Count) {
// پایه های رله بعنوان خروجی تعریف شوند //
pinMode(Rellay_Pin[i], OUTPUT);
// رله ها خاموش شوند //
digitalWrite(Rellay_Pin[i], LOW);
}
}
}
void loop() {
// به تعداد کلید ها حلقه درست میکنیم. //
for (int i = 0; i < B_Count; i++)
// در داخل حلقه تمامی کلید ها را با ارسال اندیس شماره پایه کلید به تابع Read_Key وضعیت کلید مورد نظر را می خوانیم. //
Read_Key(i);
// به تعداد رله ها حلقه درست میکنیم. //
for (int i = 0; i < R_Count; i++)
// در داخل حلقه آخرین وضعیت هر رله که توسط کلید ها تنظیم شده را به آن اعمال میکنیم. //
digitalWrite(Rellay_Pin[i], B_State[i]);
}
// این تابع را برای خواندن وضعیت کلید ها نوشته ایم. //
// این تابع یک ورودی که همان اندیس شماره پایه کلید است را می گیرد. //
void Read_Key(int x ) {
// یک متغیر جهت خواندن وضعیت منطقی پایه دیجیتال کلیدی که اندیس آن به تابع ارسال شده است تعریف می کنیم. //
int Button_Pressed;
// وضعیت کلید مورد نظر را میخوانیم. //
Button_Pressed = digitalRead(Button_Pin[x]);
// اگر کلید مورد نظر فشرده شده بود، مقدار صفر به خود میگیرد. //
if (Button_Pressed == 0) {
// اگر اندیس کلید مورد نظر کمتر از تعداد رله ها بود
// (چون اندیس از صفر شروع میشود یک واحداز تعداد کمتر است) //
// بنابراین به تعداد رله ها اعمال زیر انجام می شود. //
if (x < R_Count) {
// وضعیت را معکوس کن. //
B_State[x] != B_State[x];
}
// در غیر اینصورت یعنی اگر کلید بعد از آخرین شماره اندیس رله ها بود //
else if (x == R_Count) {
// تمامی رله ها را روشن کن //
for (int i = 0; i < R_Count; i++)B_State[i] = 1;
}
// در غیر اینصورت یعنی اگر کلید بعدی بود //
else if (x == R_Count + 1) {
// تمامی رله ها را خاموش کن //
for (int i = 0; i < R_Count; i++)B_State[i] = 0;
}
}
}
https://telegram.me/ArduinoKaraneJavan
سلام بر دوستان عزیر آردوینو کار
امروز میخواهم با یک مثال به برسی آرایه بپردازیم که در آن از درس های گذشته نیز استفاده شده است.
در این مثال ما تعداد 4 عدد رله و تعداد 6 عدد کلید فشاری داریم و میخواهیم کارهای زیر را انجام دهیم:
1⃣ با فشردن هرکدام از 4 کلید اول رله مربوط به آن کلید روشن شود و با فشردن مجدد همان کلید رله مربوطه خاموش گردد.
2⃣ با فشردن کلید پنجم تمامی رله ها روشن شوند.
3⃣ با فشردن کلید ششم همه رله ها خاموش گردند.
در این مثال از Debounce استفاده نکرده ایم تا مفهوم آرایه را به خوبی متوجه شوید. در مثال های بعدی همین برنامه را با استفاده از Debounce انجام خواهیم داد.
// چون مقدار یک آرایه از نوع عدد صحیح است و نمیتواند تغییر کند باید حتماً از نوع const یعنی ثابت تعرف گردد. //
// تعریف تعداد پایه های کلید فشاری و رله //
const int B_Count = 5, R_Count = 4;
// تعریف شماره پایه های رله ها //
int Rellay_Pin[R_Count] = {6, 8, 11, 12};
// تعریف شماره پایه های کلید فشاری ها //
int Button_Pin[B_Count] = {2, 4, 5, 9, 13, 7};
// به تعداد کلید ها متغیری بنام B_State تعریف می کنیم تا آخرین وضعیت کلید را در خود نگهداری کند. //
bool B_State[B_Count] = {0};
// یعنی از B_State صفرم تا B_State چهارم همه مقدار صفر به خود بگیرند //
// میتوانستیم به این صورت نیز بنویسیم //
//bool B_State[B_Count] = {0, 0, 0, 0};
// ولی در اینصورت اگر تعداد کلید ها تغییر پیدا می کرد باید تعداد صفر ها را نیز تغییر میدادیم. //
void setup() {
// تنظیم حالت ورودی و خروجی پایه ها //
// در این حلقه For چون تعداد پایه های کلید های فشاری از تعداد//
// پایه های رله بیشتر است از تعداد کلید ها استفاده می کنیم. //
for (int i = 0; i < B_Count; i++) {
// پایه های کلیدهای فشاری بعنوان ورودی با مقاومت PULLUP تعریف می شوند. //
pinMode(Button_Pin[i], INPUT_PULLUP);
// اگر شمارنده حلقه(i) از تعداد پایه های رله بیشتر نیست //
if (i < R_Count) {
// پایه های رله بعنوان خروجی تعریف شوند //
pinMode(Rellay_Pin[i], OUTPUT);
// رله ها خاموش شوند //
digitalWrite(Rellay_Pin[i], LOW);
}
}
}
void loop() {
// به تعداد کلید ها حلقه درست میکنیم. //
for (int i = 0; i < B_Count; i++)
// در داخل حلقه تمامی کلید ها را با ارسال اندیس شماره پایه کلید به تابع Read_Key وضعیت کلید مورد نظر را می خوانیم. //
Read_Key(i);
// به تعداد رله ها حلقه درست میکنیم. //
for (int i = 0; i < R_Count; i++)
// در داخل حلقه آخرین وضعیت هر رله که توسط کلید ها تنظیم شده را به آن اعمال میکنیم. //
digitalWrite(Rellay_Pin[i], B_State[i]);
}
// این تابع را برای خواندن وضعیت کلید ها نوشته ایم. //
// این تابع یک ورودی که همان اندیس شماره پایه کلید است را می گیرد. //
void Read_Key(int x ) {
// یک متغیر جهت خواندن وضعیت منطقی پایه دیجیتال کلیدی که اندیس آن به تابع ارسال شده است تعریف می کنیم. //
int Button_Pressed;
// وضعیت کلید مورد نظر را میخوانیم. //
Button_Pressed = digitalRead(Button_Pin[x]);
// اگر کلید مورد نظر فشرده شده بود، مقدار صفر به خود میگیرد. //
if (Button_Pressed == 0) {
// اگر اندیس کلید مورد نظر کمتر از تعداد رله ها بود
// (چون اندیس از صفر شروع میشود یک واحداز تعداد کمتر است) //
// بنابراین به تعداد رله ها اعمال زیر انجام می شود. //
if (x < R_Count) {
// وضعیت را معکوس کن. //
B_State[x] != B_State[x];
}
// در غیر اینصورت یعنی اگر کلید بعد از آخرین شماره اندیس رله ها بود //
else if (x == R_Count) {
// تمامی رله ها را روشن کن //
for (int i = 0; i < R_Count; i++)B_State[i] = 1;
}
// در غیر اینصورت یعنی اگر کلید بعدی بود //
else if (x == R_Count + 1) {
// تمامی رله ها را خاموش کن //
for (int i = 0; i < R_Count; i++)B_State[i] = 0;
}
}
}
https://telegram.me/ArduinoKaraneJavan
👍1