انجمن تخصصی رباتیک و الکترونیک

  1. سالاری
  2. آردوینو
  3. دوشنبه, 19 نوامبر 2018
  4.  اشتراک از طریق ایمیل
سلام مهندس
من برنامه زیر که برای فاصله سنج هست رو گرفتم. یه مدار دیگه میخوام با این برنامه طراحی کنم.مشکلم اینه که تو این حلقه وقتی(if (distance <= 30 به این فاصله میرسهled به طور دایم روشن میمونه.من میخوام تو این فاصله led برای5 ثانیه روشن بمونه. و بعد خاموش بشه.تو مدار من شاید این فاصله یه چند ساعتی ثابت باشه.ولی نمیخوام چراغم ثابت روشن بمونه.فقط 5 ثانیه روشن بمونه.کمکم کنید.نیاز دارم
اینم کل برنامش.برای if اولش حل کنید.سه led دیگه هم حل میشه
#define trigPin 7
#define echoPin 6
#define led 13
#define led2 12
#define led3 11
#define buzzer 3
int sound = 250;


void setup() {
Serial.begin (9600);
pinMode(trigPin, OUTPUT);
pinMode(echoPin, INPUT);
pinMode(led, OUTPUT);
pinMode(led2, OUTPUT);
pinMode(led3, OUTPUT);
pinMode(buzzer, OUTPUT);
}


void loop() {
long duration, distance;
digitalWrite(trigPin, LOW);
delayMicroseconds(2);
digitalWrite(trigPin, HIGH);
delayMicroseconds(10);
digitalWrite(trigPin, LOW);
duration = pulseIn(echoPin, HIGH);
distance = (duration/2) / 29.1;


if (distance <= 30) {
digitalWrite(led, HIGH);
sound = 250;
}
else {
digitalWrite(led,LOW);
}
if (distance < 25) {
digitalWrite(led2, HIGH);
sound = 260;
}
else {
digitalWrite(led2, LOW);
}
if (distance < 20) {
digitalWrite(led3, HIGH);
sound = 270;
}
else {
digitalWrite(led3, LOW);
}
if (distance > 30 || distance <= 0){
Serial.println("Out of range";);
noTone(buzzer);
}
else {
Serial.print(distance);
Serial.println(" cm";);
tone(buzzer, sound);
}
delay(500);


}


هنوز به این بحث پاسخی داده نشده است.
شما نیز اجازه ارسال پاسخ را ندارید