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

موضوع: آی ام یو ( 10dof imu / ahrs ) نه محوره gy-80 - ماژول قطب نمای دیجیتال ، سنسور شتاب

Threaded View

  1. #5
    Junior Member
    تاریخ عضویت
    Sep 2013
    محل سکونت
    Iran
    نوشته ها
    22

    Adxl345

    برای راه اندازی سنسور شتاب سنج نیاز به کتابخونه دارید Adxl345.zip
    یه مثال جالب برای این سنسور پیدا کردم به این صورت که از این سنسور برای تشخیص وضعیت سکون ، حرکت ، وارد شدن ضربه به سنسور ، حس کردن ضربه دوبل و تشخیص سقوط آزاد میشه استفاده کرد.

    کد:
    #include <Wire.h>
    #include <ADXL345.h>
    ADXL345 adxl; //variable adxl is an instance of the ADXL345 library
    
    void setup(){
      Serial.begin(9600);
      adxl.powerOn();
    
      //set activity/ inactivity thresholds (0-255)
      adxl.setActivityThreshold(75); //62.5mg per increment
      adxl.setInactivityThreshold(75); //62.5mg per increment
      adxl.setTimeInactivity(10); // how many seconds of no activity is inactive?
     
      //look of activity movement on this axes - 1 == on; 0 == off 
      adxl.setActivityX(1);
      adxl.setActivityY(1);
      adxl.setActivityZ(1);
     
      //look of inactivity movement on this axes - 1 == on; 0 == off
      adxl.setInactivityX(1);
      adxl.setInactivityY(1);
      adxl.setInactivityZ(1);
     
      //look of tap movement on this axes - 1 == on; 0 == off
      adxl.setTapDetectionOnX(0);
      adxl.setTapDetectionOnY(0);
      adxl.setTapDetectionOnZ(1);
     
      //set values for what is a tap, and what is a double tap (0-255)
      adxl.setTapThreshold(50); //62.5mg per increment
      adxl.setTapDuration(15); //625μs per increment
      adxl.setDoubleTapLatency(80); //1.25ms per increment
      adxl.setDoubleTapWindow(200); //1.25ms per increment
     
      //set values for what is considered freefall (0-255)
      adxl.setFreeFallThreshold(7); //(5 - 9) recommended - 62.5mg per increment
      adxl.setFreeFallDuration(45); //(20 - 70) recommended - 5ms per increment
     
      //setting all interupts to take place on int pin 1
      //I had issues with int pin 2, was unable to reset it
      adxl.setInterruptMapping( ADXL345_INT_SINGLE_TAP_BIT,   ADXL345_INT1_PIN );
      adxl.setInterruptMapping( ADXL345_INT_DOUBLE_TAP_BIT,   ADXL345_INT1_PIN );
      adxl.setInterruptMapping( ADXL345_INT_FREE_FALL_BIT,    ADXL345_INT1_PIN );
      adxl.setInterruptMapping( ADXL345_INT_ACTIVITY_BIT,     ADXL345_INT1_PIN );
      adxl.setInterruptMapping( ADXL345_INT_INACTIVITY_BIT,   ADXL345_INT1_PIN );
     
      //register interupt actions - 1 == on; 0 == off  
      adxl.setInterrupt( ADXL345_INT_SINGLE_TAP_BIT, 1);
      adxl.setInterrupt( ADXL345_INT_DOUBLE_TAP_BIT, 1);
      adxl.setInterrupt( ADXL345_INT_FREE_FALL_BIT,  1);
      adxl.setInterrupt( ADXL345_INT_ACTIVITY_BIT,   1);
      adxl.setInterrupt( ADXL345_INT_INACTIVITY_BIT, 1);
    }
    
    void loop(){
      
      //Boring accelerometer stuff   
      int x,y,z;  
      adxl.readAccel(&x, &y, &z); //read the accelerometer values and store them in variables  x,y,z
    
      // Output x,y,z values - Commented out
      //Serial.print(x);
      //Serial.print(y);
      //Serial.println(z);
      
      //getInterruptSource clears all triggered actions after returning value
      //so do not call again until you need to recheck for triggered actions
       byte interrupts = adxl.getInterruptSource();
      
      // freefall
      if(adxl.triggered(interrupts, ADXL345_FREE_FALL)){
        Serial.println("freefall");
        //add code here to do when freefall is sensed
      } 
      
      //inactivity
      if(adxl.triggered(interrupts, ADXL345_INACTIVITY)){
        Serial.println("inactivity");
         //add code here to do when inactivity is sensed
      }
      
      //activity
      if(adxl.triggered(interrupts, ADXL345_ACTIVITY)){
        Serial.println("activity"); 
         //add code here to do when activity is sensed
      }
      
      //double tap
      if(adxl.triggered(interrupts, ADXL345_DOUBLE_TAP)){
        Serial.println("double tap");
         //add code here to do when a 2X tap is sensed
      }
      
      //tap
      if(adxl.triggered(interrupts, ADXL345_SINGLE_TAP)){
        Serial.println("tap");
         //add code here to do when a tap is sensed
      } 
    
     
    }
    فایل های پیوست شده فایل های پیوست شده
    • نوع فایل: zip Adxl345.zip (13.3 کیلو بایت, 274 مشاهده)

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

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

SEO by vBSEO