نمایش نتایج: از 1 به 2 از 2

موضوع: کد نویسی برای خواندن 2 پارامتر

  1. #1
    Junior Member
    تاریخ عضویت
    Jun 2016
    نوشته ها
    1

    کد نویسی برای خواندن 2 پارامتر

    سلام دوستان.
    از اونجا که من در زمینه الکترونیک و برنامه نویسی تقریبا کار نکردم لذا اگر سوالاتم احیاناً پیش پا افتادس ببخشید.

    من قصد دارم با یه برد UNO اطلاعات مربوط به یک موتور انکودر دار رو شامل دور موتور و ولتاژش رو بخونم. یه سری سرچ کردم و کد های مربوط رو پیدا کردم و طبق دستور العمل ها پیش رفتم و تونستم خروجی های مورد نظر رو بگیرم. منتها مشکل من اینجاست که هر کدوم از این کد ها در یک اسکچ (Sketch) قابلیت لود شدن روی بُرد آردوئینو رو داره و نمی تونم هر دوی اون های رو در یک اسکچ قرار بدم که با یک پورت سریال بتونم هر دوی اونها رو به ترتیب خروجی بگیریم و روی کامپیوتر داشته باشم.
    یعنی مشکل اصلی من اینه که این دو تا کد رو بتونم در غالب یک کد و یک اسکچ قرار بدم و آپلود کنم روی ماژول آردوئینو.

    ممنون می شم راهنمایی کنید

    کد اول برای خوندن ولتاژ

    // the setup routine runs once when you press reset:
    void setup() {
    // initialize serial communication at 9600 bits per second:
    Serial.begin(9600);
    }

    // the loop routine runs over and over again forever:
    void loop() {
    // read the input on analog pin 0:
    int sensorValue = analogRead(A0);
    // Convert the analog reading (which goes from 0 - 1023) to a voltage (0 - 5V):
    float voltage = sensorValue *(5.0 / 1023.0*4.86)*sensorValue *(5.0 / 1023.0*4.86)/4;
    delay(300);
    // print out the value you read:
    Serial.println(voltage);
    }

    کد دوم برای خودند تعداد پالس انکودر ( جهت چرخش برام مهم نیست فقط دور موتور رو می خوام)






    // Bidirectional 4x Array Encoder Program (First Program)
    unsigned long count=0;
    unsigned long timep, t, etime;
    void setup()
    {
    Serial.begin(9600);
    pinMode(3,INPUT); //Channel A
    attachInterrupt(1,transition,CHANGE);
    timep = micros(); //Set the initial time
    }



    void loop()
    {
    t = micros();
    etime = t - timep;
    if (etime > 100000)
    {
    Serial.println(count*0.33);
    count= 0;
    timep = t;
    }
    }
    void transition()
    {
    count++;
    }


  2. #2
    مدیر گروه
    تاریخ عضویت
    Nov 2013
    محل سکونت
    ایران
    نوشته ها
    3,992
    مبنای کد دومت اینتراپته
    این رو تست کن ببین جواب میگیری:
    کد:
    
    
    unsigned long count = 0;
    unsigned long timep, t, etime;
    
    
    void setup() {
    
    
      Serial.begin(9600);
      pinMode(3, INPUT); //Channel A
      attachInterrupt(1, transition, CHANGE);
      timep = micros(); //Set the initial time
    
    
    }
    
    
    // the loop routine runs over and over again forever:
    void loop() {
      voltageRead();
      rpmRead();
    }
    
    
    void voltageRead() {
    
    
      int sensorValue = analogRead(A0);
      float voltage = sensorValue * (5.0 / 1023.0 * 4.86) * sensorValue * (5.0 / 1023.0 * 4.86) / 4;
      delay(300);
      Serial.println(voltage);
    
    
    }
    
    
    void rpmRead() {
      t = micros();
      etime = t - timep;
      if (etime > 100000)
      {
        Serial.println(count * 0.33);
        count = 0;
        timep = t;
      }
    }
    
    
    void transition()
    {
    count++;
    }

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

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

SEO by vBSEO