چرا برای استفاده از سنسور اولتراسونیک باید حتما delay استفاده کنیم؟

3 سال قبل
692 بازدید

0

من به تازگی کار به آردوینو رو شروع کردم و یک سنسور اولتراسونیک HC-SR04 خریدم.

برای استفاده از این سنسور با توجه به آموزش هایی که بود از کد زیر استفاده کردم:

const int trigPin = 8;
const int echoPin = 7;

long duration;
int distance;

void setup() {
  // put your setup code here, to run once:
  pinMode(trigPin, OUTPUT);
  pinMode(echoPin, INPUT);
  Serial.begin(9600);
}

void loop() {
  // put your main code here, to run repeatedly:
  digitalWrite(trigPin, LOW);
  delayMicroseconds(2); //why do we delay 2 microseconds

  digitalWrite(trigPin, HIGH);
  delayMicroseconds(10); //why do we delay 10 microseconds
  digitalWrite(trigPin, LOW);

  duration = pulseIn(echoPin, HIGH);
  distance = duration*0.034/2;
  Serial.print("Distance: ");
  Serial.println(distance);
}

میخوام بدونم چرا توی loop از delay استفاده شده؟ ممنون میشم اگر کسی بتونه توضیح بده.

29 آذر 00 در 08:21
saba95
15

افزودن دیدگاه

2 پاسخ ثبت شده است
0

سلام

بعضی از سنسور ها نمی توانند با سرعت بالای میکرو کنترلر همراه شوند و داده های جمع آوری شده را به میکرو کنترلر بدهند از این رو لازم هست که مقداری میکرو کنترلر منتظر بماند تا داده های مورد نیاز آماده شود و این داده ها را بتواند پردازش کند.

گاهی نیز برای نمایش اطلاعات نیاز هست اطلاعات مقداری آرام تر نمایش داده شود. از این رو مقدار دیلی بیشتر نیز می شود. 

امیدوارم سوال شما را پاسخ داده باشم.

29 آذر 00 در 09:13
محمد دمیرچی
4220

افزودن دیدگاه

1

اولین delay که 2us هست برای این هست که مطمئن شویم پایه LOW هست. چون ممکن هست پین قبلش HIGH بوده. اگر این 2us را نذاریم میکرو این کار را خیلی سریعتر انجام می دهد و ممکن هست التراسونیک فرصت کافی برای فهمیدن اینکه پین HIGH یا LOW شده را نداشته باشد.

در مورد delay دوم که 10us هست، بر اساس دیتاشیت زمان مورد نیاز برای ارسال پالس امواج اولتراسونیک 10us هست. بنابراین پس از 10us دوباره پایه را LOW می کنیم و منتظر برگشت امواج ارسال شده می مانیم.

احتمالا قبلا شنیده اید که استفاده از delay در کد ار خوبی نیست، چون باعث می شود بقیه کد بلاک شود. اما delay های در حد میکروثانیه واقعا اختلالی ایجاد نمی کند. در نظر داشته باشید delay در حدی باشد که شناسایی وقایع مهم مثل فشرده شدن یک دکمه یا ... از دست نرود.

 

29 آذر 00 در 12:01
asmzxak
81

افزودن دیدگاه


انجمن کافه‌ربات © 1400