ورود به حساب ثبت نام جدید فراموشی کلمه عبور
برای ورود به حساب کاربری خود، نام کاربری و کلمه عبورتان را در زیر وارد کرده و روی «ورود به سایت» کلیک کنید.





اگر فرم ورود برای شما نمایش داده نمیشود، اینجا را کلیک کنید.









اگر فرم ثبت نام برای شما نمایش داده نمی‌شود، اینجا را کلیک کنید.









اگر فرم بازیابی کلمه عبور برای شما نمایش داده نمی‌شود، اینجا را کلیک کنید.






جهت تبلیغ در وب سایت ECA کلیک کنید.

کاربران برچسب زده شده

نمایش نتایج: از 1 به 6 از 6
  1. #1
    2013/07/12
    76
    55

    Lightbulb فرکانس متر با آردوینو

    کد:
    #define input 4
    //#define in 8
    #define F1 15
    #define F2 16
    #define F3 17
    #define F4 13
    unsigned int high_time;
    //int h_time;
    unsigned int low_time;
    //int l_time;
    float time_period;
    //float t_period;
    float frequency;
    //float frequenc;
    
    void setup()
    {
    pinMode(input,INPUT_PULLUP);
    //pinMode(in,INPUT);
    pinMode(F1,OUTPUT);
    pinMode(F2,OUTPUT);
    pinMode(F3,OUTPUT);  
    pinMode(F4,OUTPUT);
    
    Serial.begin(9600);
    }
    void loop()
    {
    
    high_time=pulseIn(input,HIGH);
    low_time=pulseIn(input,LOW);
    
    time_period=high_time+low_time;
    time_period=time_period/1000;
    frequency=1000/time_period;
    
    /*
    h_time=pulseIn(in,HIGH);
    l_time=pulseIn(in,LOW);
     
    t_period=h_time+l_time;
    t_period=t_period/1000;
    frequenc=1000/t_period;
    */
    
    
    //Serial.print('frequenc');
    Serial.println(frequency);
    //Serial.print(" Hz");
    
    
     if (frequency >= 17){
      digitalWrite (F1, HIGH);
      }
           else if (frequency <=16 ) 
           {
           digitalWrite (F1, LOW);
           }
    
     if (frequency >= 25){
      digitalWrite (F2, HIGH);
      }
           else if (frequency <= 24) 
           {
           digitalWrite (F2, LOW); 
           }
    
     if (frequency >= 38){
      digitalWrite (F3, HIGH);
      }
           else if (frequency <= 37) 
           {
           digitalWrite (F3, LOW); 
           }
     if (frequency >= 49){
      digitalWrite (F4, HIGH);
     }
           else if (frequency <=48){
            digitalWrite (F4, LOW);
     }
     delay(50);
    }
    سلام دوستان من به کمک شدید نیاز دارم یکی کمکم کنه لطفا
    ویرایش توسط cjmj : 2016/07/12 در ساعت 15:53
  2. #2
    2014/10/05
    1,546
    1,088

    پاسخ : فرکانس متر با آردوینو

    نقل قول نوشته اصلی توسط cjmj

    مهمان عزیز شما حق دیدن لینک ها را ندارید

    عضویت

    کد:
    #define input 4
    //#define in 8
    #define F1 15
    #define F2 16
    #define F3 17
    #define F4 13
    unsigned int high_time;
    //int h_time;
    unsigned int low_time;
    //int l_time;
    float time_period;
    //float t_period;
    float frequency;
    //float frequenc;
    
    void setup()
    {
    pinMode(input,INPUT_PULLUP);
    //pinMode(in,INPUT);
    pinMode(F1,OUTPUT);
    pinMode(F2,OUTPUT);
    pinMode(F3,OUTPUT);  
    pinMode(F4,OUTPUT);
    
    Serial.begin(9600);
    }
    void loop()
    {
    
    high_time=pulseIn(input,HIGH);
    low_time=pulseIn(input,LOW);
    
    time_period=high_time+low_time;
    time_period=time_period/1000;
    frequency=1000/time_period;
    
    /*
    h_time=pulseIn(in,HIGH);
    l_time=pulseIn(in,LOW);
     
    t_period=h_time+l_time;
    t_period=t_period/1000;
    frequenc=1000/t_period;
    */
    
    
    //Serial.print('frequenc');
    Serial.println(frequency);
    //Serial.print(" Hz");
    
    
     if (frequency >= 17){
      digitalWrite (F1, HIGH);
      }
           else if (frequency <=16 ) 
           {
           digitalWrite (F1, LOW);
           }
    
     if (frequency >= 25){
      digitalWrite (F2, HIGH);
      }
           else if (frequency <= 24) 
           {
           digitalWrite (F2, LOW); 
           }
    
     if (frequency >= 38){
      digitalWrite (F3, HIGH);
      }
           else if (frequency <= 37) 
           {
           digitalWrite (F3, LOW); 
           }
     if (frequency >= 49){
      digitalWrite (F4, HIGH);
     }
           else if (frequency <=48){
            digitalWrite (F4, LOW);
     }
     delay(50);
    }
    سلام دوستان من به کمک شدید نیاز دارم یکی کمکم کنه لطفا
    با سلام و درود
    سوال شما نا مفهوم است. کجای کار مشکل دارید؟
    لطفاً توضیحات کاملی دهید.
  3. #3
    2013/07/12
    76
    55

    پاسخ : فرکانس متر با آردوینو

    این کد ها رو برای ساخت یه فرکانس متر برای یه کار خاص استفاده کردم
    این کد ها در نظر خودم درست میاد فرکانس هم درست اندازه گیری میکنه.

    مشکل من اینجاست که وقتی که دیگه فرکانسی نمیدم به ورودی یعنی ورودی رو به زمین وصل میکنم یا به 5 ولت ، قانونا باید فرکانس صفر رو نشون بده ولی تو سریال مانیتور مینویسه inf و مشکل از همین جا شروع میشه. چون در این لحظه که فرکانس 0 میشه تمام خروجی ها 1 میشن

    وقتی فرکانسی نداریم ، متغییر دوره ی زمانی مساوی میشه با 0 و چون طبق فرمول 1000 تقسیم میشه بر صفر و این یعنی بی نهایت. و وقتی که بی نهایت شد تمام خروجی هام 1 میشن.
    در ضمن تا فرکانس 17 هرتز هم درست نمی سنجه

    راستی در مورد تابع pulsein یه سوال دارم
    این تابع زمان تناوب به میکرو ثانیه رو برمیگردونه یا تعداد نواسانات رو در هر میکروثانیه؟؟؟
    ویرایش توسط cjmj : 2016/07/10 در ساعت 19:09
  4. #4
    2013/07/12
    76
    55

    پاسخ : فرکانس متر با آردوینو

    مشکل من اینجاست که وقتی که دیگه فرکانسی نمیدم به ورودی یعنی ورودی رو به زمین وصل میکنم یا به 5 ولت ، قانونا باید فرکانس صفر رو نشون بده ولی تو سریال مانیتور مینویسه inf و مشکل از همین جا شروع میشه. چون در این لحظه که فرکانس 0 میشه تمام خروجی ها 1 میشن

    وقتی فرکانسی نداریم ، متغییر دوره ی زمانی مساوی میشه با 0 و چون طبق فرمول 1000 تقسیم میشه بر صفر و این یعنی بی نهایت. و وقتی که بی نهایت شد تمام خروجی هام 1 میشن.
    تا این قسمت مشکلم حل شد. اما...
    در ضمن تا فرکانس 17 هرتز هم درست نمی سنجه
    هنوز با این قسمت مشکل دارم و کارم رو با مشکل مواجه کرده

    مشکلم اینه که وقتی فرکانس میدم ،از 1 هرتز تا فرکانس 17 هرتز ، آردوینو قاطی میکنه!! یعنی اگه بالای 17 هرتز فرکانس بدم همه چیز طبق روال پیش میره و درسته اما وقتی فرکانس به زیر 17 میرسه ، توی سریال مانیتور فرکانس های مختلف رو نشون میده و به شدت نوسان داره و خروجی ها هم هی صفر و یک میشن. دلیلش چیه به نظرتون؟؟
  5. #5
    2014/10/05
    1,546
    1,088

    پاسخ : فرکانس متر با آردوینو

    نقل قول نوشته اصلی توسط cjmj

    مهمان عزیز شما حق دیدن لینک ها را ندارید

    عضویت

    تا این قسمت مشکلم حل شد. اما...

    هنوز با این قسمت مشکل دارم و کارم رو با مشکل مواجه کرده

    مشکلم اینه که وقتی فرکانس میدم ،از 1 هرتز تا فرکانس 17 هرتز ، آردوینو قاطی میکنه!! یعنی اگه بالای 17 هرتز فرکانس بدم همه چیز طبق روال پیش میره و درسته اما وقتی فرکانس به زیر 17 میرسه ، توی سریال مانیتور فرکانس های مختلف رو نشون میده و به شدت نوسان داره و خروجی ها هم هی صفر و یک میشن. دلیلش چیه به نظرتون؟؟
    مشکل قسمت قبل چطور حل شد؟

    طبق چیزی که در این مطلب بحث شده است دستور pulseIn مقداری پردازنده میکروکنترلر را مشغول می کند و شاید مشکل شما به این دلیل باشد.

    مهمان عزیز شما حق دیدن لینک ها را ندارید

    عضویت

  6. #6
    2013/07/12
    76
    55

    پاسخ : فرکانس متر با آردوینو

    سلام داداش
    مشکل دومم هم حل شد.
    مشکل قبل با اضافه کردن یک دستور if حل شد.
    اینطوری:
    کد:
    high_time=pulseIn(input,HIGH);
    low_time=pulseIn(input,LOW);
    
    time_period=high_time+low_time;
    time_period=time_period/1000;
    if(time_period!=0){frequency=1000/time_period;}
    else {Serial.println("0 Frequency");frequency=0;}
    و مشکل دوم که توی فرکانس های زیر 17 هرتز قاطی میکرد ، متغییر High_time و Low_time رو از نوع float تایین کردم و مشکل حل شد.
    حتی دو فرکانس مختلف و همزمان رو تونستم بسنجم با دو پین مختلف آردوینو.

    اینم از کد های کامل شده و تست شده:
    کد:
    #define input 4
    //#define in 8
    #define F1 15
    #define F2 16
    #define F3 17
    #define F4 13
    
    float high_time;
    float h_time;
    float low_time;
    float l_time;
    float time_period;
    float t_period;
    float frequency;
    float frequenc;
    
    
    void setup()
    {
      
    pinMode(input,INPUT_PULLUP);
    //pinMode(in,INPUT_PULLUP);
    pinMode(F1,OUTPUT);
    pinMode(F2,OUTPUT);
    pinMode(F3,OUTPUT);  
    pinMode(F4,OUTPUT);
    
    //Serial.begin(9600);
    
    }
    void loop()
    {
    
    high_time=pulseIn(input,HIGH);
    low_time=pulseIn(input,LOW);
    
    time_period=high_time+low_time;
    time_period=time_period/1000;
    if(time_period!=0){frequency=1000/time_period;}
    else {Serial.println("0 Frequency");frequency=0;}
    
    /*
    h_time=pulseIn(in,HIGH);
    l_time=pulseIn(in,LOW);
     
    t_period=h_time+l_time;
    t_period=t_period/1000;
    if(t_period!=0){frequenc=1000/t_period;}
    else {Serial.println("0 Frequenc");frequenc=0;}
    
    */
    
    
    //Serial.println(frequenc);
    //Serial.println(frequency);
    //Serial.print(" Hz");
    
    
    
    
     if (frequency >= 17){
      digitalWrite (F1, HIGH);
      }
           else if (frequency <=16) 
           {
           digitalWrite (F1, LOW);
           }
    
    
     if (frequency >= 25){
      digitalWrite (F2, HIGH);
      }
           else if (frequency <= 24) 
           {
           digitalWrite (F2, LOW); 
           }
    
    
     if (frequency >= 38){
      digitalWrite (F3, HIGH);
      }
           else if (frequency <= 37) 
           {
           digitalWrite (F3, LOW); 
           }
     if (frequency >= 49){
      digitalWrite (F4, HIGH);
     }
           else if (frequency <=48){
            digitalWrite (F4, LOW);
     }
     
    delay(100);
    }
    اگه کسی خواست بسازه ، اون مقادیر خروجی رو از توی کد هاش قرار نده.
    میشه با کمی تغییر توی کد و اظافه کردن یه ای سی 8704 (مقسم فرکانس) ، تا فرکانس 950 مگا هرتز رو هم باهاش به راحتی سنجید.
    ویرایش توسط cjmj : 2016/07/11 در ساعت 15:54
نمایش نتایج: از 1 به 6 از 6

موضوعات مشابه

  1. پاسخ: 7
    آخرين نوشته: 2016/06/12, 03:39
  2. شروع کار با آردوینو
    توسط se2010 در انجمن خانواده Arduino
    پاسخ: 1
    آخرين نوشته: 2016/06/02, 13:07
  3. پاسخ: 15
    آخرين نوشته: 2016/01/17, 13:57
  4. Rf01d و آردوینو
    توسط mehdirm666 در انجمن خانواده Arduino
    پاسخ: 2
    آخرين نوشته: 2015/02/10, 20:10
  5. آردوینو uno یا 2560
    توسط hakeb در انجمن رباتيك و مكاترونيك
    پاسخ: 2
    آخرين نوشته: 2015/01/10, 18:08

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

علاقه مندي ها (Bookmarks)

علاقه مندي ها (Bookmarks)

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

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