نمایش نتایج: از 1 به 10 از 16
Like Tree8 لایک

موضوع: مشکل با ماژول hc-SR501

Hybrid View

  1. #1
    مدیر گروه
    تاریخ عضویت
    Nov 2013
    محل سکونت
    ایران
    نوشته ها
    4,064
    نقل قول نوشته اصلی توسط behzad70 نمایش پست ها
    خیلی متشکر
    در مورد اینکه من status رو صفر نمیکنم دلیلش اینه که من میخوام تا زمانی که آردوینو رو با ریموت قطع نمیکنم آژیر کار کنه . اگه بلاک else رو همون طور که شما گذاشتید استفاده کنم هر زمان که فرد از جلو سنسور رد میشه آژیر میزنه و هر زمان که دیگه جلوش نیست آژیر قطع میشه که این خودش یک باگ محسوب میشه. بازم اگه من اشتباه میکنم لطفا راهنمایی کنید

    در مورد تایم دیلی ، من حالتی رو میخوام که به محض اینکه عبور یک فرد رو تشخیص میده پین خروجی رو یک کنه و تا زمانی که آردوینو خاموش میشه یک بمونه!
    سوال دیگه ای که داشتم این بود که این ماژول سنسور حرکت سنج بدن انسان هست یا هر نوع حرکت دیگه ای مثل حرکت پرده یا پنکه رو هم تشخیص میده؟

    در مورد اینکه گفتم احتمال میدم یکی از ماژول هام (که به 12 ولت وصلش کردم) سوخته اینه که در همه حال از پین وسط مقدار 3.3 ولت رو برمیگردونه حتی اگه داخل یک اتاق خالی باشه بازم این ولتاژ رو برمیگردونه! احتمال داره نسوخته باشه و مشکل دیگه ای پیش اومد

    قسمت اول: ببینید این ماژول ماکزیمم تا 18 ثانیه ( طبق دیتاشیت ممکنه در عمل کمتر هم باشه ) می تونه یک بمونه وقتی این زمان تموم بشه هر کاری کنید 0 میشه .
    بنابراین ماکزیمم 18 ثانیه وقت دارید تا ریموت رو بزنید و آردوینوتون رو خاموش کنید. حالا می تونید این زمان رو یه جوری با کد نویسی افزایش بدید.
    یعنی از زمانی که آردوینو روشن میشه بگید شروع کن هبه شمارش زمان هر وقت از 18 ثانیه رد شد و هنوز آردوینو روشن بود فلان کار رو بکنه برای این که این 18 ثانیه رو هم بشمارید میتونید از دستور millis استفاده کنید:
    https://www.arduino.cc/en/Reference/Millis

    ************************************************** *

    تو معرفی این سنسور هر جا که ببینید یمبینید نوشته human بنابراین نمیتونه اشیاء رو سنس کنه چرا که دمای بدن ما متفاوته با اشیاء

    **************************************************

    این که 3.3 برمی گردونه داره دائم یه چیزی رو سنس می کنه
    ممکنه حساسیتش رو خیلی کم کرده باشید و با توجه به اینکه زاویه تشخیصش 120 درجه هست داره خودتون رو هم میگیره.

    با پتانسیومتر تنظیم حسایت بازی کنید ببنید مشکل حل میشه !
    چرا که وقتی 3.3 میده یعنی رگولاتور روی برد سالم هست
    لایک کردن

  2. #2
    Member
    تاریخ عضویت
    May 2016
    نوشته ها
    39
    بله برای اینکه این مشکل 18 ثانیه رو حل کنم من این طور عمل کردم :*
    یک متغیر status تعریف کردم و مقدار پیش فرضش رو 0 گذاشتم. توی تایع loop هم گفتم اگه سنسور چیزی رو سنس کرد مقدار status* رو یک کنه و در نهایت هم اگه مقدار status یک بود به آژیر ولتاژ میدم .
    الان یه برنامه ساده نوشتم برای این کار . لطفا نگاه کنید و اگه پیشنهادی برای بهتر کردنش دارید بفرمایید .
    #include <SPI.h>
    int status = 0;
    int sensor = 2;
    int alarm = 10;

    void setup() {
    pinMode(alarm, OUTPUT);
    pinMode(sensor, INPUT);
    }

    void loop() {
    if(digitalRead(sensor) == HIGH){
    status = 1;
    }
    if(status)
    {

    digitalWrite(alarm, HIGH);
    }

    }
    با این کار به محض اینکه سنسور چیزی رو سنس کنه ، مقدار متغیر status رو یک میکنم و تا زمانی که آردوینو ریست یا خاموش نشه این مقدار یک خواهد بود و در نتیجه آژیر زده میشه. درسته؟

  3. #3
    مدیر گروه
    تاریخ عضویت
    Nov 2013
    محل سکونت
    ایران
    نوشته ها
    4,064
    نقل قول نوشته اصلی توسط behzad70 نمایش پست ها
    بله برای اینکه این مشکل 18 ثانیه رو حل کنم من این طور عمل کردم :*
    یک متغیر status تعریف کردم و مقدار پیش فرضش رو 0 گذاشتم. توی تایع loop هم گفتم اگه سنسور چیزی رو سنس کرد مقدار status* رو یک کنه و در نهایت هم اگه مقدار status یک بود به آژیر ولتاژ میدم .
    الان یه برنامه ساده نوشتم برای این کار . لطفا نگاه کنید و اگه پیشنهادی برای بهتر کردنش دارید بفرمایید .


    با این کار به محض اینکه سنسور چیزی رو سنس کنه ، مقدار متغیر status رو یک میکنم و تا زمانی که آردوینو ریست یا خاموش نشه این مقدار یک خواهد بود و در نتیجه آژیر زده میشه. درسته؟
    این کد که همون کد قبلی شماست
    ولی با همین کد هم به محض دیده شدن حرکت وقتی status یک بشه و هیوقت دیگه 0 نشده تا خاموش نشدن آردوینو کماکان بوق میزنه

  4. #4
    Member
    تاریخ عضویت
    May 2016
    نوشته ها
    39
    نقل قول نوشته اصلی توسط magmagmary نمایش پست ها
    این کد که همون کد قبلی شماست
    ولی با همین کد هم به محض دیده شدن حرکت وقتی status یک بشه و هیوقت دیگه 0 نشده تا خاموش نشدن آردوینو کماکان بوق میزنه
    بله منم دقیقا همینو میخام. مشکلی که من دارم خیلی عجیبه . من دیروز بدون اینکه سنسور رو به آردوینو وصل کنم (یعنی پین 2 در این کدی که نوشتم خالی بود ) آردوینو رو روشن کردم اما بعد از حدودا 20 ثانیه خود به خود آژیر بوق زد! با اهم متر هم که پایه 10 رو اندازه گرفتم 5 ولت بود !!
    امروز هم که از یکی از افرادی که در این زمینه تخصص داشتن پرسیدم گفتن باید pullup کنم. توی سایت آردوینو نوشته از یک مقاومت 10 کیلو استفاده کنم اما هنوز نفهمیدم چرا؟!

  5. #5
    مدیر گروه
    تاریخ عضویت
    Nov 2013
    محل سکونت
    ایران
    نوشته ها
    4,064
    نقل قول نوشته اصلی توسط behzad70 نمایش پست ها
    بله منم دقیقا همینو میخام. مشکلی که من دارم خیلی عجیبه . من دیروز بدون اینکه سنسور رو به آردوینو وصل کنم (یعنی پین 2 در این کدی که نوشتم خالی بود ) آردوینو رو روشن کردم اما بعد از حدودا 20 ثانیه خود به خود آژیر بوق زد! با اهم متر هم که پایه 10 رو اندازه گرفتم 5 ولت بود !!
    امروز هم که از یکی از افرادی که در این زمینه تخصص داشتن پرسیدم گفتن باید pullup کنم. توی سایت آردوینو نوشته از یک مقاومت 10 کیلو استفاده کنم اما هنوز نفهمیدم چرا؟!
    تا جایی که من میدونم این سنسور زمانی که حرکت رو تشخیص میده 1 میشه
    بنابراین اگر قصد دارید دقیق کار کنید باید pull down کنیدو

    یعنی چی

    یعنی اینکه به پین آردوینو بگید تا زمانی که سنسور تا زمانی که بهت داده 1 رو نداده الکی نرو 1 شو تا مشکل توهم وجود ادم بوجود بیاد

    با یه مقاومت pull down اش کنید.

    اینو بخون
    پول آپ (Pull-up) و پول دان(Pull-down) چیست؟ : آموزش و مثال*ها AVR
    لایک کردن

کلمات کلیدی این موضوع

مجوز های ارسال و ویرایش

  • شما نمیتوانید موضوع جدیدی ارسال کنید
  • شما امکان ارسال پاسخ را ندارید
  • شما نمیتوانید فایل پیوست کنید.
  • شما نمیتوانید پست های خود را ویرایش کنید
  •  

SEO by vBSEO