استفاده از تابع millis به جای delay

9 ماه قبل
98 بازدید

0

با سلام و عرض ادب

می خوام کدی به اینصورت بنویسم

زمانی که پایه 2 میکرو HIGHشد، LED  روشن بشه و بعد از 10ثانیه خاموش بشه  در این کد برای وقفه 10ثانیه می خوام بجای تابع delay  از تابع millis استفاده بشه ممنون می شم اگر راهنمایی بفرمایید

با تشکر

int period = 1000;
unsigned long time_now = 0;


void setup() {
Serial.begin(115200);
pinMode(A0,INPUT);
pinMode(2,OUTPUT);
pinMode(5,OUTPUT);
int sens;

}

void loop() {
    
  int sens=analogRead(A0);
  Serial.print("sens");
   Serial.println(sens);
   delay(1000);

   time_now = millis();
   if(sens<=100){//---بهد از اینکه مقدار سنسور کمتر یا مساوی100 شد ال ای دی باید روشن بشه و بعد از 10ثانیه خاموش بشه  در حالیکه ال ای دی شماره5همزمان به کار خودش ادامه بده
     digitalWrite(2,HIGH);

       if(millis() > time_now + period){ //--دراین قسمت بعد از اینکه ال ای دی روشن شد بعد از چند ثانیه خاموش بشه ولی ال ای دی روشن میشه و خاموش نمی شه اشکال کد کجاست

     digitalWrite(2,LOW);
     time_now = millis();
    }
    
   }
digitalWrite(5,HIGH);
delay(100);
digitalWrite(5,LOW);

}
22 مرداد 02 در 06:49
حسن دلیر
7

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

1 پاسخ ثبت شده است
1

با سلام.

می توانید از کد زیر استفاده کنید.

 

int period = 10000; // میزان تاخیری که میخواهید

unsigned long time_now = 0;

int led2_state = 0;

void setup() {

  Serial.begin(115200);

  pinMode(A0, INPUT);

  pinMode(2, OUTPUT);

  pinMode(5, OUTPUT);

  int sens;

  time_now = millis();

}

void loop() {

  int sens = analogRead(A0);

  Serial.print("sens");

  Serial.println(sens);

  delay(1000);

  if (led2_state == 1 && (millis() > time_now + period)) {

    digitalWrite(2, LOW);

    led2_state = 0;

  }

  if (sens <= 100) {

    time_now = millis();

    digitalWrite(2, HIGH);

    led2_state = 1;

  }

  digitalWrite(5, HIGH);

  delay(100);

  digitalWrite(5, LOW);

}

23 مرداد 02 در 04:59
مجید مرآتی
579

ضمن تشکر از توجه شما کد را نوشتم ولی اجرا نشد کد را در متن سوال قرار می دم بررسی بفرمایید ممنون می شم با تشکر  – حسن دلیر 02-05-24 در 06:16

کد شما را اصلاح کردم و در جواب سوال شما ارسال شده. تست نشده اما احتمالا مشکلی نداشته باشه  – مجید مرآتی 02-05-28 در 06:08

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


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