-
چهارشنبه, ۱۳ اسفند ۱۳۹۹، ۰۷:۵۱ ب.ظ
-
۴۲۳
سلام دوستان
امروز میخواستم برنامه لایو التراسونیک با آردوینو که خودم برنامش نوشتم رو باهاتون به اشتراک بزارم. :)
کار این برنامه اینه که شما یک التراسونیک داری و آردوینو رو وصل میکنید به کامپیوتر.
وقتی Serial Monitor رو بیارید التراسونیک هر یک ثانیه برای کامپیوتر عدد میفرسته و میتونین اونجا ببینینش :)
خب اول یک سنسور التراسونیک SRF 05 نیاز دارین.
التراسونیک رو روی یک برد بورد ببندید و پایه GND رو به GND آردوینو وصل کنید.
پایه OUT رو فعلا کاری نداریم.
Echo رو وصل کنید به پین 8 دیجیتال و TRIG رو وصل کنید به پین 7 دیجیتال.
VCC هم به 5V+ روی آردوینو وصل کنید.
حالا میریم سراغ برنامه :)
int trig=7;
int echo=8;
float T;
float d;
int c=343;// sound speed meter per second
void setup() {
// put your setup code here, to run once:
Serial.begin(9600);
pinMode(trig,OUTPUT);
pinMode(echo,INPUT);
}
void loop() {
// put your main code here, to run repeatedly:
digitalWrite(trig,LOW);
delayMicroseconds(2000);
digitalWrite(trig,HIGH);
delayMicroseconds(15);
digitalWrite(trig,LOW);
delayMicroseconds(10);
T=pulseIn(echo,HIGH);
T=T/1000000;
d=c*T;
d=d*100;
d=d/2;
Serial.println(d);
delay(1000);
}
خب توی خط اول و دوم اومدیم پایه های trig و echo رو تعریف کردیم.
توی خط سوم و چهارم اومدیم دو تا متغییر که بعدا لازمشون داریم رو تعریف کردیم.
خط پنجم هم سرعت صوت رو تعریف کردیم.(برای محاسبه فاصله از دیوار)
خط ششم setup مون هست و تو کد Serial.begin(9600) داریم Serial رو تعریف میکنیم تا بتونیم از حالت لایو استفاده کنیم.
بعدش pin mode ها رو تعریف کردیم.(یعنی کدوم پین خروجیه کدوم ورودی)
توی حلقه مون گفتیم trig رو خاموش کنه.(trig همون فرستنده است echo هم گیرنده)
بعدش 2 میکرو ثانیه صبر میکنه و فرستنده رو روشن میکنه.
بعد 10 میکرو ثانیه صبر میکنه(برای التراسونیک های دیگه شاید متفاوت باشه ولی بهترینش 10 میکرو ثانیه تا 15 میکرو ثانیه هست) و فرستنده رو خاموش میکنه که دیگه امواج صوتی نفرسته.
خب کار تابع pulseIn اینه که صبر میکنه تا گیرنده امواج دریافت کنه و مدت زمان این بین رو حساب میکنه(برای توضیحات بیشتر میتونید به اینجا مراجعه کنید).
حالا با استفاده از فرمول v = s / t میتونیم این فاصله رو حساب کنیم.(v = سرعت s = مسافت t = زمان).
حالا سرعت صوت رو که داریم زمان رو هم داریم فاصله رو میخوایم پس یه متغییر d داریم و مقدار سرعت صوت ضربدر مقدار زمان برگشت صوت میکنیم یا همون d = c * T.
حالا d رو ضربدر 100 میکنیم تا واحدمون تبدیل به سانتی متر بشه.
بعدش تقسیم بر دو میکنیم چون توی تابع pulseIn زمان رفت و برگشت رو حساب کردیم!
ولی ما فقط زمان رفت رو میخوایم برای همین.
بعدش روی Serial Monitor چاپش میکنیم و یک ثانیه صبر میکنه و همینجوری تکرار میشه.
پس هر یک ثانیه فاصله رو به ما نشون میده!
امیدوارم مطلب براتون مفید بوده باشه D: