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

برای این منظور از دستور زیر استفاده می کنیم:
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
سلام بر آردوینو کاران جوان

امروز میخواهیم یک پروژه با ماژول PING یا همون ماژول آلتراسونیک که تصویر اون رو در گیف بالا می بینید براتون آموزش بدهیم.
اما نه دقیقاً همون پروژه. بلکه میخواهیم با استفاده از ماژول PING یک متر دیجیتالی بسازیم و فاصله اجسام از سنسور رو برحسب سانتیمتر روی پورت سریال نشون بدیم و در پروژه بعدی که می خواهیم کار با LCD های کاراکتری رو یاد بگیریم بجای پورت سریال متراژ خوانده شده را روی LCD نمایش دهیم.

ماژول PING چیست؟
اساس کار ماژول آلتراسونیک (فراصوت) مشابه رادار یا ردیاب صوتی، تشخیص ویژگی های هدف از طریق تحلیل بازتاب امواج رادیویی یا صوتی می باشد. این ماژول امواج صوتی را با فرکانس بالا ایجاد کرده و موج بازتاب شده را دریافت و تحلیل می نماید.
این حسگر با محاسبه ی زمان بین فرستادن سیگنال و گرفتن بازتاب، فاصلهٔ جسم را محاسبه می کند.
در این ماژول سنجش مسافت، فرستنده آلتراسونیک و حسگر بر روی یک برد قرار داده شده و مدار الکترونیکی واسط، کار را برای استفاده از این ماژول بسیار ساده می نماید.
به طور کلی این ماژول با همه میکرو کنترلر ها سازگار می باشد؛ اما چنانچه از آردوینو برای به کارگیری این ماژول استفاده می نمایید با استفاده از توابع NewPing در چند خط کد می توانید آن را راه اندازی نمایید.

قیمت ارزان و به کارگیری آسان، این ماژول را تبدیل به یکی از ماژول های معروف و پرکاربرد در حوزه سنسورهای آلتراسونیک سنجش مسافت تبدیل کرده است.

قبل از ارائه توضیحات در مورد طرح برنامه بهتر است که یک نکته را یاد آوری نمایم که برای کار با هر نوع ماژولی که می خواهیم به آردوینو متصل نماییم باید ابتدا کتابخانه های آنرا از اینترنت دریافت کرده و با استفاده از روشهایی که قبلاً توضیح داده شده اند به نرم افزار آردوینو اضافه نماییم. که در این مثال ما از کتابخانه NewPing.h که مربوط به ماژول PING یا همان آلتراسونیک می باشد استفاده خواهیم کرد بنابراین ابتدا باید این کتابخانه را به نرم افزار آردوینو اضافه نماییم تا برنامه نوشته شده کار کند. البته من کتابخانه NewPing.h را در زیر جهت دانلود قرار خواهم داد.

پس از اضافه نمودن کتابخانه به برنامه شما باید یک متغیر از نوع کلاس کتابخانه مورد نظر بسازید و آرگومانهایی را که لازم دارد به آن بدهید.

خوب به نظرم بهتر است که به برنامه اصلی بپردازیم و نحوه کارکرد آنرا با هم برسی کنیم:

#include <NewPing.h>
// پین آردوینو که به پین trigger بر روی سنسور اولتراسونیک متصل می شود. //
#define TRIGGER_PIN 7
// پین آردوینو که به پین echo بر روی سنسور اولتراسونیک متصل می شود. //
#define ECHO_PIN 8
// حداکثر مسافتی که ما می خواهیم PING کنیم (بر حسب سانتی متر). حداکثر فاصله سنسور بین 400 تا 500 سانتی متر است //
#define MAX_DISTANCE 200
// یک متغیر برای ذخیره فاصله اندازه گیری شده تعریف می کنیم. //
int temp = 0;
// تعریف یک متغیر به نام sonar از نوع کلاس NewPing و همچنین //
// تنظیم پایه های آردوینو و حداکثر فاصله برای کتابخانه NewPing //
NewPing sonar(TRIGGER_PIN, ECHO_PIN, MAX_DISTANCE);

void setup() {
Serial.begin(9600);
}

void loop() {
// تاخیر 100 میلی ثانیه بین PING ها(حدود 10 عدد PING در ثانیه) حداقل تاخیر بین PING ها باید 29 میلی ثانیه باشد. //
delay(100);
// ارسال PING و دریافت زمان PING برحسب میکروثانیه //
// دستور ()ping یک سیگنال مافوق صوت از پایه trigger ارسال میکند و انعکاس آنرا در پایه echo دریافت میکند //
// و با استفاده از رابطه زیر میتوانیم زمان رفت و برگشت آنرا بر حسب میکروثانیه بدست آوریم و به سانتیمتر تبدیل کنیم. //
// چون زمان نمی تواند منفی باشد، یک متغیر از نوع int بدون علامت تعریف کرده و زمان اندازه گیری شده را در آن قرار می دهیم. //
unsigned int uS = sonar.ping() / US_ROUNDTRIP_CM;
// اگر فاصله اندازه گیری شده با مقدار قبلی متفاوت است //
if (uS != temp)
{
// مقدار جدید را ذخیره کن. //
temp = uS;
Serial.print("The distance is : ");
// چاپ مقدار اندازه گیری شده در خروجی. (مقدار 0 یعنی خارج از فاصله تعریف شده) //
Serial.print(temp);
Serial.println("cm");
}
}

خوب دیدید که کار با ماژول ها در آردوینو بخاطر وجود کتابخانه های قدرتمند آن چقدر ساده است؟
حالا شما میتوانید که به راحتی با ماژول PING کار کنید و یک متر دیجیتالی برای خود بسازید. و یا با استفاده از دستور IF در برنامه شرط تعیین کنید که مثلاً اگر جسمی با فاصله 120 سانتی متر از ماژول قرار گرفت چه عملی انجام گیرد و غیره...



https://telegram.me/ArduinoKaraneJavan