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

موضوع: اجرای قسمتی از برنامه برای مدت زمان معینی و بعد از تمام شدن زمان، اجرا نشه

Hybrid View

  1. #1
    Senior Member
    تاریخ عضویت
    Feb 2017
    نوشته ها
    153
    نقل قول نوشته اصلی توسط آزیتا نمایش پست ها
    lممنونم از لطفتون
    من تمام کد رو براتون attach کردم. من چندین مرتبه چشمک زن رو مطالعه کردم. فهمیدم ، ولی برای اجراش تو کد خودم به مشکل بر می خورم. نمی دونم دقیقا چیکارش کنم؟
    کد زیر رو تست کنید

    کد:
    /*
      Calibrate HMC5883L. Output for HMC5883L_calibrate_processing.pde
      Read more: http://www.jarzebski.pl/arduino/czujniki-i-sensory/3-osiowy-magnetometr-hmc5883l.html
      GIT: https://github.com/jarzebski/Arduino-HMC5883L
      Web: http://www.jarzebski.pl
      (c) 2014 by Korneliusz Jarzebski
    */
    
    #include <Wire.h>
    #include <HMC5883L.h>
    
    HMC5883L compass;
    
    int minX = 0;
    int maxX = 0;
    int minY = 0;
    int maxY = 0;
    int offX = 0;
    int offY = 0;
    int x0;
    int y0;
    const unsigned long period = 1 * 60000L;       // 1 minutes
    unsigned long timeLastChange = 0;
    
    void setup()
    {
      Serial.begin(9600);
    
      // Initialize Initialize HMC5883L
      while (!compass.begin())
      {
       delay(500);
      }
    
      // Set measurement range
      compass.setRange(HMC5883L_RANGE_1_3GA);
    
      // Set measurement mode
      compass.setMeasurementMode(HMC5883L_CONTINOUS);
    
      // Set data rate
      compass.setDataRate(HMC5883L_DATARATE_75HZ);
    
      // Set number of samples averaged
      compass.setSamples(HMC5883L_SAMPLES_8);
    }
    
    
    void exitCalMode(){
      //Calculate offsets
       offX = (maxX + minX)/2;
    offY = (maxY + minY)/2;
    
    //int  x_scale = 1.0/(maxX - minX);
    //int y_scale = 1.0/(maxY - minY);
      
     compass.setOffset(offX,offY);
    
     
    }
    
    
    void calibrate(){
      bool changed=false;
      Vector mag = compass.readRaw();
    
      //  // Determine Min / Max values
     if (mag.XAxis < minX) minX = mag.XAxis;
     changed = true;
      if (mag.XAxis > maxX) maxX = mag.XAxis;
      changed = true;
     if (mag.YAxis < minY) minY = mag.YAxis;
     changed = true;
      if (mag.YAxis > maxY) maxY = mag.YAxis;
      changed = true;
    //x0 = (maxX + minX)/2;
    //y0 = (maxY + minY)/2;
    //  Serial.print(x0);
    //   Serial.print("    ");
    //    Serial.println(y0);
    //    
      unsigned long cuMillis = millis();
      if(changed)
        
        if(cuMillis > 5000 &&  cuMillis -  timeLastChange >   period) //If the timeout has been reached, exit calibration
        {
          timeLastChange = cuMillis;
          exitCalMode();
        }
       
    }
    
    void loop(){
      
      calibrate();
      
       Vector norm = compass.readNormalize();
       
    Serial.print(" offx = ");
     Serial.print(offX);
     Serial.print("  ");
     Serial.print(" offy = ");
     Serial.print(offY);
     Serial.print("  ");
        
     Serial.print(" Xnorm = ");
     Serial.print(norm.XAxis/10);
     Serial.print("  ");
     Serial.print(" Ynorm = ");
     Serial.print(norm.YAxis/10);
     Serial.print("  ");
     Serial.print(" ZNorm = ");
     Serial.println(norm.ZAxis/10);
        
      
      }

  2. #2
    Junior Member
    تاریخ عضویت
    Dec 2017
    محل سکونت
    ایران
    نوشته ها
    6
    ممنونم از کمکتون. این کد هم اجرا نشد. من نهایتا مثالی که فرمودین از blink رو خوندم و تونستم کد رو تغییر بدم و جواب گرفتم. ممنونم

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

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

SEO by vBSEO