نمایش نتایج: از 1 به 2 از 2
Like Tree2 لایک
  • 2 Post By siib

موضوع: سرعت سنج

  1. #1
    Senior Member
    تاریخ عضویت
    Jan 2016
    محل سکونت
    ایران عزیز
    نوشته ها
    200

    سرعت سنج

    سلام خسته نباشید
    من یه چرخ گردان دارم و میخوام یه کد براش بنویسم برای مثال اگر مثلا یک پایه اردوینو چندین دفعه در ثانیه 1شد تو کنسول سریال بنویسه کیلومتر در ساعت چطور میشه کدش؟
    با دستورflagمیشه؟

  2. #2
    Senior Member
    تاریخ عضویت
    Nov 2015
    نوشته ها
    229
    نقل قول نوشته اصلی توسط hasandimer نمایش پست ها
    سلام خسته نباشید
    من یه چرخ گردان دارم و میخوام یه کد براش بنویسم برای مثال اگر مثلا یک پایه اردوینو چندین دفعه در ثانیه 1شد تو کنسول سریال بنویسه کیلومتر در ساعت چطور میشه کدش؟
    با دستورflagمیشه؟
    سلام ،
    با دستور pulseIn() میشه به شرطی که مدت زمانی که پایه یک میمونه در برابر مدت زمانی که صفره خیلی کم باشه
    دستور رو برای همون پایه و مقدار صفر تنظیم کنید ، pulseIn(pin,LOW);
    این دستور مدت زمانی که پایه low بوده (تقریبا زمانی که چزخ یک دور زده) رو برمیگردونه
    2*Pi*r رو به این زمان تقسیم کنید تا سرعت به دست بیاد (r شعاع چرخ برحسب متر و زمان رو هم به ثانیه تبدیل کنید)
    تا اینجا سرعت بر حسب متر بر ثانیه به دست اومده در 3.6 ضربش کنید تا بر حسب کیلومتر بر ساعت به دست بیاد

    اگر زمان یک بودنه پایه هم قابل توجه هست میتونین هر لحظه مقدار پایه با مقدار پایه در تکرار قبل رو مقایسه کنید اگه در تکرار قبل صفر بوده و در این تکرار یک شده زمان رو یاداشت کنین و تفاوت این زمان با زمان قبلی میشه مدت زمانی که یه دور زده
    اگه امکان داره برات پایه رو صفر کن به جای یک تا بتونی از پول آپ داخل آردوینو استفاده کنی:
    کد:
    int pin_status, previous_pin_status;
    int input_pin=5;
    int round_number;
    unsigned long timE , interval;
    float speedd=0;
    float R=.5;
    void setup()
    {
      pinMode(input_pin,INPUT_PULLUP);
      pin_status=digitalRead(input_pin);
      round_number=0;
      timE=0;
    }
    void loop()
    {
    previous_pin_status=  pin_status;
    pin_status=digitalRead(input_pin);
    if (previous_pin_status - pin_status ==1)
    {
    interval=millis()-timE;
    timE=millis();
    round_number++;
    }
    
    if (round_number>1)
    speedd=(2*3.14*R/(interval/1000))*3.6;
    }
    R شعاع چرخ ، round_number شماره دور ، timE زمانی که پایه از یک به صفر میره ، interval هم زمان بین دو timE متوالی

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

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

SEO by vBSEO