دنبال یه فرمان در بسکام هستم که اگر یک کنتاکت باز شد و به مدت 3 ثانیه باز ماند برنامه را مثلا به یک لوپ هدایت کند تا یک کار خواصی انجام شود.
ممنون میشم اگه کمک کنید.
دنبال یه فرمان در بسکام هستم که اگر یک کنتاکت باز شد و به مدت 3 ثانیه باز ماند برنامه را مثلا به یک لوپ هدایت کند تا یک کار خواصی انجام شود.
ممنون میشم اگه کمک کنید.
سلام
یه ورودی تعریف میکنی که میکرو متوجه بشه کنتاکت بازه
حالا یه شرط میزاری اگه کنتاکت باز بود زمان شروع به شمارش کنه
یه شرط هم میزاری اگه زمان به 3 ثانیه رسید با دستور مثلا Gosub پرش کن به فلان حلقه و اون کار رو انجام بده
اگر زمان کمتر از 3 ثانیه بود و کنتاکت دوباره بسته شد زمان رو صفر کن و دوباره برگرد سر چک کردن کنتاکت
حالا اگه میخای 3 ثانیه دقیق باشه از تایمر استفاده کن توی Help بسکام نمونه کد برای راه اندازی تایمر داره
اگر هم زمان دقیق مهم نیست خودت با تاخیر یه چیز حدودی درست کن
دستورات رو هم توی Help بسکام جستجو کنی طریقه استفادش رو پیدا میکنی
حالا برنامه رو خودت بنویس اگه موردی داشت دوستان کمک میفرمایند
*** اللّهم عجّل لولیک الفرج ***
درست مثل همونه که دوستمون براتون توضیح دادن
main:
.
.
.
.
if PINA=0 then
waitms 3000
goto barnamedovom
endif
.
.
.
.
.
barnamedovom:
.
.
.
goto main
تعداد ورودی هایی که می خوام این بلا را سرشون بیارم زیاده و در ضمن می خوام این ورودیها دائم در حال چک شدن باشند و به محض اینکه هر یک از اونا باز شدند برنامه این باز شدن رو تشخیص بده و اگه این باز شدن برای مدت 3 ثانیه ادامه پیدا کرد ( در واقع می خوام لوز کانکشن های احتمالی بوجود اومده در مدار فیلتر بشن) برنامه به یه زیر برنامه بپره و اون رو انجام بده.
خیلی مایلم اگه بشه با فرمان debounce این برنامه رو بنویسم
سلام ،
شما باید حتماً از تایمر میکرو استفاده کنید. یک تایمر داشته باشید که دائم در حال شمردن باشه و یک حلقه که دائماً پین ها رو چک کنه و زمان باز شدن هر کدوم رو ثبت کنه. اگر پینی بیشتر از 3 ثانیه باز بود، یه روتین خاص رو اجرا کنه.