آردوینو فارسی
6.9K subscribers
758 photos
306 videos
640 files
243 links
اولین کانال تخصصی آموزش آردوینو
گروه:
https://t.me/ArduinoFarsi_G
لینک کانال یوتیوب:
https://www.youtube.com/c/ArduinoFarsi
ارتباط با ادمین و ثبت سفارش:
☎️ رضا اژدرکش: 09199117192
💲 حمایت از کانال:
شماره کارت: 6104331049714000
بانک ملت بنام رضا اژدرکش
Download Telegram
کار با دستورات پین های دیجیتال

سلام امروز میخوام کار با ورودی و خروجی های دیجیتال رو براتون آموزش بدم.
روی برد آردوینو UNO یک LED در کنار پایه دیجیتال شماره 13 وجود دارد که برای تست استفاده میشود و به همان پایه 13 متصل است.
ما هم در این آموزش از همان پایه به عنوان خروجی دیجیتال استفاده خواهیم کرد. البته شما می توانید از هر یک از پایه های دیگر دیجیتال استفاده کنید. در این صورت باید یک عدد LED را با یک مقاومت 330 اهمی سری کرده و پایه آند LED را به آن پایه که بعنوان خروجی انتخاب کرده اید بزنید و پایه کاتد LED را که با مقاومت سری شده به GND مدار آردوینو متصل نمایید.
در این مثال ما می خواهیم پایه 13 را بعنوان پایه خروجی تعریف کرده و با استفاده از آن LED متصل به آنرا به حالت چشمک زن در بیاوریم. مانند شکل زیر 👇🏻👇🏻👇🏻

https://telegram.me/ArduinoKaraneJavan
کار با دستورات پین های دیجیتال

برای این منظور از دستور زیر استفاده می کنیم:
pinMode(13,OUTPUT) ;
دستور pinMode دو تا آرگومان بعنوان ورودی میگیرد: آرگومان اول شماره پایه و آرگومان دوم حالت پایه است که به چند روش زیر می توانیم توسط آرگومان دوم حالت پایه را کانفیگ نماییم:

1⃣ در این حالت پایه pin بعنوان خروجی تعریف می شود:
1⃣ pinMode(pin,OUTPUT);

2⃣ در این حالت پایه pin بعنوان ورودی تعریف می شود:
2⃣ pinMode(pin,INPUT);

3⃣ در این حالت پایه pin بعنوان ورودی تعریف می شود و پایه مورد نظر توسط یک مقاومت داخل میکروکنترلر به 5v متصل می گردد:
3⃣ pinMode(pin,INPUT_PULLUP);

برای ارسال اطلاعات به پایه های دیجیتال از دستورات زیر استفاده میکنیم:

1⃣ برای فرستادن "1" منطقی به پایه pin که بعنوان خروجی تعریف شده است، از دستور زیر استفاده می نماییم:
1⃣ digitalWrite(pin, HIGH);

2⃣ برای فرستادن "0" منطقی به پایه pin که بعنوان خروجی تعریف شده است، از دستور زیر استفاده می نماییم:
2⃣ digitalWrite(pin, LOW);

توجه نمایید در صورتی که پایه pin بعنوان ورودی تعریف شده باشد، و به آن پایه "1" منطقی بفرستیم. آن پایه به حالت INPUT_PULLUP می رود. و درصورتی که به آن "0" منطقی ارسال کنیم به حالت INPUT می رود. و مقاومت PULLUP آن غیر فعال می گردد.

برای نامگذاری پایه ها به نام دیگری غیر از اعدادی که روی برد نوشته شده است از کلید واژه define# استفاده می کنیم.
توجه نمایید که بعد از دستوراتی که با علامت # استفاده می شوند نباید ";" استفاده گردد.

مثال: می خواهیم نام پایه 13 را LED بگذاریم و آنرا بعنوان خروجی تعریف کرده و سپس LED را روشن کنیم:
#define LED 13
pinMode(LED, OUTPUT);
digitalWrite(LED, HIGH);


https://telegram.me/ArduinoKaraneJavan
👍2
Lesson_2.ino
662 B
#درس 2: نرم افزار LED چشمک زن یک ثانیه ای https://telegram.me/ArduinoKaraneJavan
کار با دستورات پین های دیجیتال

استفاده از کلید برای روشن کردن و خاموش کردن LED:

در این مثال ما با نحوه دیگری از تعریف متغیر برای نام پایه های دیجیتال آشنا شده و با دستورات ورودی و خروجی دیجیتال آشنا می شویم.
سپس با استفاده از دستور if_then_else برنامه را کنترل می کنیم.

https://telegram.me/ArduinoKaraneJavan
طرح شماتیک مدار
نحوه ساخت مدار
Lesson_3.ino
2 KB
طرح روشن و خاموش کردن LED با استفاده از کلید. در این طرح با نحوه خواندن و نوشتن دیجیتال آشنا میشویم.
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
This media is not supported in your browser
VIEW IN TELEGRAM
🔴 4 درس از یک فیلم 5 ثانیه ای!

1.زود ناامید نشو!
2.موفقیت تو را مغرور نکند.
3.گاهی کمی صبر، شکست را به پیروزی تبدیل می کند.
4.گاهی کمی عجله، پیروزی را به شکست تبدیل می کند. (نشردهید)
This media is not supported in your browser
VIEW IN TELEGRAM
This media is not supported in your browser
VIEW IN TELEGRAM
شب جمشید و جامش
شب بوسه به خاکش
شب حافظ و سعدی
شب پارسی و مادی
شب آخر آذر
شب پاک و منور
شب آرش و آتش
شب مهر و سیاوش
شب پاک اهوراست
شب مژده و یلداست
پیشاپیش یلداتون مبارک.❤️
آرایه چیست؟

خدمت آردوینو کاران عزیزان باید عرض کنم در قسمتهای قبل، داده ها را در درون متغیرها و یا ثوابت ذخیره می کردیم. اما گاهی لازم است تعدادی از داده ها را بگونه ای ذخیره نماییم که متعلق به یک مجموعه بوده و دسترسی به آنها آسان باشد .
گاهی وقتها لازم است که یک سری از داده هم نوع را دریافت کرده و بروی آنها عملیات خاصی را مثل مقایسه یا مرتب کردن و ... را انجام دهیم، لذا باید آنها را بگونه ای خاص در کنار یکدیگر قرار دهیم که این مسئله در برنامه نویسی را با استفاده از آرایه ها حل خواهیم کرد .
آرایه مجموعه ای از عناصر هم نوع است. در برنامه نویسی 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