Skip to main content
Bumped by Community user
Bumped by Community user
Bumped by Community user
Bumped by Community user
Bumped by Community user
Bumped by Community user
Bumped by Community user
added 196 characters in body
Source Link

I have changeedchanged the code,but but values are keeps on repeating when I trigger the hard braking and it keep on repeating even I released the brake.

Here is the output enter image description here

I have changeed the code,but values are keeps on repeating

I have changed the code, but values are keeps on repeating when I trigger the hard braking and it keep on repeating even I released the brake.

Here is the output enter image description here

deleted 15 characters in body
Source Link
chrisl
  • 16.6k
  • 2
  • 18
  • 27
 #include <movingAvg.h>                 
 #include <Wire.h>

// H3LIS331DL I2C address is 0x18(24)
 #define Addr 0x18                   

       movingAvg xAxisAverage(5);

       int readingIndex=0;
       int readingArray[10];
       int firstFiveReadingAverage;
       int lastFiveReadingAverage;

    void setup()
   {

      // Initialise I2C communication as MASTER
         Wire.begin();
     // Initialise Serial Communication, set baud rate = 9600
        Serial.begin(9600);

    // Start I2C Transmission
       Wire.beginTransmission(Addr);
   // Select control register 1
      Wire.write(0x20);
  // Enable X, Y, Z axis, power on mode, data output rate 50Hz
     Wire.write(0x27);
  // Stop I2C Transmission
     Wire.endTransmission();

// Start I2C Transmission
   Wire.beginTransmission(Addr);
// Select control register 4
   Wire.write(0x23);
 // Set full scale, +/- 100g, continuous update
  Wire.write(0x00);
 // Stop I2C Transmission
  Wire.endTransmission();
  delay(300);

   }
 void loop()
 {

   unsigned int data[6];
   for(int i = 0; i < 6; i++)
  {
    // Start I2C Transmission
    Wire.beginTransmission(Addr);
    // Select data register
    Wire.write((40+i));
    // Stop I2C Transmission
    Wire.endTransmission();

    // Request 1 byte of data
     Wire.requestFrom(Addr, 1);
    // Read 6 bytes of data
    // xAccl lsb, xAccl msb, yAccl lsb, yAccl msb, zAccl lsb, zAccl msb
     if(Wire.available() == 1)
       {
       data[i] = Wire.read();
      }
    }
   delay(300);

     // Convert the data
       int xAccl = ((data[1] * 256) + data[0]);
       int yAccl = ((data[3] * 256) + data[2]);
       int zAccl = ((data[5] * 256) + data[4]);

    if(readingIndex<10)
  {
     readingArray[readingIndex]=xAccl;
     readingIndex++;
     if(readingIndex == 10)
  {
    firstFiveReadingAverage= (readingArray[0]+readingArray[1]+readingArray[2]+readingArray[3]+readingArray[4])/5;

(readingArray[0]+readingArray[1]+readingArray[2]+readingArray[3]+readingArray[4])/5; lastFiveReadingAverage= (readingArray[5]+readingArray[6]+readingArray[7]+readingArray[8]+readingArray[9])/5 ; if(lastFiveReadingAverage>firstFiveReadingAverage) { Serial.print("Hardbrake Pressed"); Serial.println(); } readingIndex=0; }
}

  /  lastFiveReadingAverage= (readingArray[5]+readingArray[6]+readingArray[7]+readingArray[8]+readingArray[9])/int5 avg =;
 avgAccl  if(lastFiveReadingAverage>firstFiveReadingAverage)
    {
     Serial.readingprint(xAccl"Hardbrake Pressed");
     Serial.println();
    }
     readingIndex=0;
    }  
    }


  //int avg = avgAccl.reading(xAccl);
  // calculate the moving 
  average


     // Output data to serial monitor
        Serial.print("Acceleration in X-Axis : ");
        Serial.println(xAccl);
        Serial.print("Acceleration in Y-Axis : ");
        Serial.println(yAccl);
        Serial.print("Acceleration in Z-Axis : ");
        Serial.println(zAccl);
        delay(300);
        Serial.println();

     int average=xAxisAverage.reading(xAccl);

    if (average < -1000)
    {
     Serial.print("Hardbraking: ");
    //Serial.print(average/100.0);
      Serial.print(average);
      Serial.println();
        }
       }
 #include <movingAvg.h>                 
 #include <Wire.h>

// H3LIS331DL I2C address is 0x18(24)
 #define Addr 0x18                   

       movingAvg xAxisAverage(5);

       int readingIndex=0;
       int readingArray[10];
       int firstFiveReadingAverage;
       int lastFiveReadingAverage;

    void setup()
   {

      // Initialise I2C communication as MASTER
         Wire.begin();
     // Initialise Serial Communication, set baud rate = 9600
        Serial.begin(9600);

    // Start I2C Transmission
       Wire.beginTransmission(Addr);
   // Select control register 1
      Wire.write(0x20);
  // Enable X, Y, Z axis, power on mode, data output rate 50Hz
     Wire.write(0x27);
  // Stop I2C Transmission
     Wire.endTransmission();

// Start I2C Transmission
   Wire.beginTransmission(Addr);
// Select control register 4
   Wire.write(0x23);
 // Set full scale, +/- 100g, continuous update
  Wire.write(0x00);
 // Stop I2C Transmission
  Wire.endTransmission();
  delay(300);

   }
 void loop()
 {

   unsigned int data[6];
   for(int i = 0; i < 6; i++)
  {
    // Start I2C Transmission
    Wire.beginTransmission(Addr);
    // Select data register
    Wire.write((40+i));
    // Stop I2C Transmission
    Wire.endTransmission();

    // Request 1 byte of data
     Wire.requestFrom(Addr, 1);
    // Read 6 bytes of data
    // xAccl lsb, xAccl msb, yAccl lsb, yAccl msb, zAccl lsb, zAccl msb
     if(Wire.available() == 1)
       {
       data[i] = Wire.read();
      }
    }
   delay(300);

     // Convert the data
       int xAccl = ((data[1] * 256) + data[0]);
       int yAccl = ((data[3] * 256) + data[2]);
       int zAccl = ((data[5] * 256) + data[4]);

    if(readingIndex<10)
  {
     readingArray[readingIndex]=xAccl;
     readingIndex++;
     if(readingIndex == 10)
  {
    firstFiveReadingAverage= 

(readingArray[0]+readingArray[1]+readingArray[2]+readingArray[3]+readingArray[4])/5; lastFiveReadingAverage= (readingArray[5]+readingArray[6]+readingArray[7]+readingArray[8]+readingArray[9])/5 ; if(lastFiveReadingAverage>firstFiveReadingAverage) { Serial.print("Hardbrake Pressed"); Serial.println(); } readingIndex=0; }
}

  //int avg = avgAccl.reading(xAccl);             // calculate the moving 
  average


     // Output data to serial monitor
        Serial.print("Acceleration in X-Axis : ");
        Serial.println(xAccl);
        Serial.print("Acceleration in Y-Axis : ");
        Serial.println(yAccl);
        Serial.print("Acceleration in Z-Axis : ");
        Serial.println(zAccl);
        delay(300);
        Serial.println();

     int average=xAxisAverage.reading(xAccl);

    if (average < -1000)
    {
     Serial.print("Hardbraking: ");
    //Serial.print(average/100.0);
      Serial.print(average);
      Serial.println();
        }
       }
 #include <movingAvg.h>                 
 #include <Wire.h>

// H3LIS331DL I2C address is 0x18(24)
 #define Addr 0x18                   

       movingAvg xAxisAverage(5);

       int readingIndex=0;
       int readingArray[10];
       int firstFiveReadingAverage;
       int lastFiveReadingAverage;

    void setup()
   {

      // Initialise I2C communication as MASTER
         Wire.begin();
     // Initialise Serial Communication, set baud rate = 9600
        Serial.begin(9600);

    // Start I2C Transmission
       Wire.beginTransmission(Addr);
   // Select control register 1
      Wire.write(0x20);
  // Enable X, Y, Z axis, power on mode, data output rate 50Hz
     Wire.write(0x27);
  // Stop I2C Transmission
     Wire.endTransmission();

// Start I2C Transmission
   Wire.beginTransmission(Addr);
// Select control register 4
   Wire.write(0x23);
 // Set full scale, +/- 100g, continuous update
  Wire.write(0x00);
 // Stop I2C Transmission
  Wire.endTransmission();
  delay(300);

   }
 void loop()
 {

   unsigned int data[6];
   for(int i = 0; i < 6; i++)
  {
    // Start I2C Transmission
    Wire.beginTransmission(Addr);
    // Select data register
    Wire.write((40+i));
    // Stop I2C Transmission
    Wire.endTransmission();

    // Request 1 byte of data
     Wire.requestFrom(Addr, 1);
    // Read 6 bytes of data
    // xAccl lsb, xAccl msb, yAccl lsb, yAccl msb, zAccl lsb, zAccl msb
     if(Wire.available() == 1)
       {
       data[i] = Wire.read();
      }
    }
   delay(300);

     // Convert the data
       int xAccl = ((data[1] * 256) + data[0]);
       int yAccl = ((data[3] * 256) + data[2]);
       int zAccl = ((data[5] * 256) + data[4]);

    if(readingIndex<10)
  {
     readingArray[readingIndex]=xAccl;
     readingIndex++;
     if(readingIndex == 10)
  {
    firstFiveReadingAverage=(readingArray[0]+readingArray[1]+readingArray[2]+readingArray[3]+readingArray[4])/5;
    lastFiveReadingAverage= (readingArray[5]+readingArray[6]+readingArray[7]+readingArray[8]+readingArray[9])/5  ;
   if(lastFiveReadingAverage>firstFiveReadingAverage)
    {
     Serial.print("Hardbrake Pressed");
     Serial.println();
    }
     readingIndex=0;
    }  
    }


  //int avg = avgAccl.reading(xAccl);
  // calculate the moving average


     // Output data to serial monitor
        Serial.print("Acceleration in X-Axis : ");
        Serial.println(xAccl);
        Serial.print("Acceleration in Y-Axis : ");
        Serial.println(yAccl);
        Serial.print("Acceleration in Z-Axis : ");
        Serial.println(zAccl);
        delay(300);
        Serial.println();

     int average=xAxisAverage.reading(xAccl);

    if (average < -1000)
    {
     Serial.print("Hardbraking: ");
    //Serial.print(average/100.0);
      Serial.print(average);
      Serial.println();
        }
       }
added 875 characters in body
Source Link
 #include <movingAvg.h>                 
 #include <Wire.h>

  // H3LIS331DL I2C address is 0x18(24)
    #define Addr 0x18
                    

 void setup     movingAvg xAxisAverage(5);

     {  int readingIndex=0;
       int readingArray[10];
       int firstFiveReadingAverage;
       int lastFiveReadingAverage;

    void setup()
   {

      // Initialise I2C communication as MASTER
             Wire.begin();
           // Initialise Serial Communication, set baud rate = 9600
              Serial.begin(9600);

         // Start I2C Transmission
          Wire.beginTransmission(Addr);
         // Select control register 1
             Wire.write(0x20);
        // Enable X, Y, Z axis, power on mode, data output rate 50Hz
             Wire.write(0x27);
        // Stop I2C Transmission
           Wire.endTransmission();

       // Start I2C Transmission
           Wire.beginTransmission(Addr);
      // Select control register 4
          Wire.write(0x23);
     // Set full scale, +/- 100g, continuous update
         Wire.write(0x00);
        // Stop I2C Transmission
       Wire.endTransmission();
      delay(300);
   
   }


 
         void loop()
          {
            
   unsigned int data[6];
              for(int i = 0; i < 6; i++)
          {
            // Start I2C Transmission
               Wire.beginTransmission(Addr);
            // Select data register
               Wire.write((40+i));
            // Stop I2C Transmission
               Wire.endTransmission();

           // Request 1 byte of data
               Wire.requestFrom(Addr, 1);
          // Read 6 bytes of data
             // xAccl lsb, xAccl msb, yAccl lsb, yAccl msb, zAccl lsb, zAccl msb
            if(Wire.available() == 1)
         {
              data[i] = Wire.read();
          }
         }
             delay(300);

      // Convert the data
          int xAccl = ((data[1] * 256) + data[0]);
          int yAccl = ((data[3] * 256) + data[2]);
          int zAccl = ((data[5] * 256) + data[4]);

    if(readingIndex<10)
  {
     readingArray[readingIndex]=xAccl;
     readingIndex++;
     if(readingIndex == 10)
  {
    firstFiveReadingAverage= 

(readingArray[0]+readingArray[1]+readingArray[2]+readingArray[3]+readingArray[4])/5; lastFiveReadingAverage= (readingArray[5]+readingArray[6]+readingArray[7]+readingArray[8]+readingArray[9])/5 ; if(lastFiveReadingAverage>firstFiveReadingAverage) { Serial.print("Hardbrake Pressed"); Serial.println(); } readingIndex=0; }
}

  //int avg = avgAccl.reading(xAccl);             // calculate the moving 
  average


     // Output data to serial monitor
          Serial.print("Acceleration in X-Axis : ");
          Serial.println(xAccl);
          Serial.print("Acceleration in Y-Axis : ");
          Serial.println(yAccl);
          Serial.print("Acceleration in Z-Axis : ");
        Serial.println(zAccl);
        delay(300);
        Serial.println(zAccl); 

     int average=xAxisAverage.reading(xAccl);

    delayif (300average < -1000)
    {
     Serial.print("Hardbraking: ");
    //Serial.print(average/100.0);
      Serial.print(average);
      Serial.println();
        }
       }

So my question is how can I use this sensor to detect the harsh braking ofhave changeed the vehicle using Arduino nano?code,but values are keeps on repeating

    #include <Wire.h>

  // H3LIS331DL I2C address is 0x18(24)
    #define Addr 0x18
 

 void setup()
     {
          // Initialise I2C communication as MASTER
             Wire.begin();
           // Initialise Serial Communication, set baud rate = 9600
              Serial.begin(9600);

         // Start I2C Transmission
          Wire.beginTransmission(Addr);
         // Select control register 1
             Wire.write(0x20);
        // Enable X, Y, Z axis, power on mode, data output rate 50Hz
             Wire.write(0x27);
        // Stop I2C Transmission
           Wire.endTransmission();

       // Start I2C Transmission
           Wire.beginTransmission(Addr);
      // Select control register 4
          Wire.write(0x23);
     // Set full scale, +/- 100g, continuous update
         Wire.write(0x00);
        // Stop I2C Transmission
       Wire.endTransmission();
      delay(300);
     }


 
         void loop()
          {
              unsigned int data[6];
              for(int i = 0; i < 6; i++)
          {
            // Start I2C Transmission
               Wire.beginTransmission(Addr);
            // Select data register
               Wire.write((40+i));
            // Stop I2C Transmission
               Wire.endTransmission();

           // Request 1 byte of data
               Wire.requestFrom(Addr, 1);
          // Read 6 bytes of data
             // xAccl lsb, xAccl msb, yAccl lsb, yAccl msb, zAccl lsb, zAccl msb
            if(Wire.available() == 1)
         {
              data[i] = Wire.read();
          }
         }
             delay(300);

      // Convert the data
          int xAccl = ((data[1] * 256) + data[0]);
          int yAccl = ((data[3] * 256) + data[2]);
          int zAccl = ((data[5] * 256) + data[4]);

        // Output data to serial monitor
          Serial.print("Acceleration in X-Axis : ");
          Serial.println(xAccl);
          Serial.print("Acceleration in Y-Axis : ");
          Serial.println(yAccl);
          Serial.print("Acceleration in Z-Axis : ");
          Serial.println(zAccl);
          delay(300);
             }

So my question is how can I use this sensor to detect the harsh braking of the vehicle using Arduino nano?

 #include <movingAvg.h>                 
 #include <Wire.h>

// H3LIS331DL I2C address is 0x18(24)
 #define Addr 0x18                   

       movingAvg xAxisAverage(5);

       int readingIndex=0;
       int readingArray[10];
       int firstFiveReadingAverage;
       int lastFiveReadingAverage;

    void setup()
   {

      // Initialise I2C communication as MASTER
         Wire.begin();
     // Initialise Serial Communication, set baud rate = 9600
        Serial.begin(9600);

    // Start I2C Transmission
       Wire.beginTransmission(Addr);
   // Select control register 1
      Wire.write(0x20);
  // Enable X, Y, Z axis, power on mode, data output rate 50Hz
     Wire.write(0x27);
  // Stop I2C Transmission
     Wire.endTransmission();

// Start I2C Transmission
   Wire.beginTransmission(Addr);
// Select control register 4
   Wire.write(0x23);
 // Set full scale, +/- 100g, continuous update
  Wire.write(0x00);
 // Stop I2C Transmission
  Wire.endTransmission();
  delay(300);
 
   }
 void loop()
 {
 
   unsigned int data[6];
   for(int i = 0; i < 6; i++)
  {
    // Start I2C Transmission
    Wire.beginTransmission(Addr);
    // Select data register
    Wire.write((40+i));
    // Stop I2C Transmission
    Wire.endTransmission();

    // Request 1 byte of data
     Wire.requestFrom(Addr, 1);
    // Read 6 bytes of data
    // xAccl lsb, xAccl msb, yAccl lsb, yAccl msb, zAccl lsb, zAccl msb
     if(Wire.available() == 1)
       {
       data[i] = Wire.read();
      }
    }
   delay(300);

     // Convert the data
       int xAccl = ((data[1] * 256) + data[0]);
       int yAccl = ((data[3] * 256) + data[2]);
       int zAccl = ((data[5] * 256) + data[4]);

    if(readingIndex<10)
  {
     readingArray[readingIndex]=xAccl;
     readingIndex++;
     if(readingIndex == 10)
  {
    firstFiveReadingAverage= 

(readingArray[0]+readingArray[1]+readingArray[2]+readingArray[3]+readingArray[4])/5; lastFiveReadingAverage= (readingArray[5]+readingArray[6]+readingArray[7]+readingArray[8]+readingArray[9])/5 ; if(lastFiveReadingAverage>firstFiveReadingAverage) { Serial.print("Hardbrake Pressed"); Serial.println(); } readingIndex=0; }
}

  //int avg = avgAccl.reading(xAccl);             // calculate the moving 
  average


     // Output data to serial monitor
        Serial.print("Acceleration in X-Axis : ");
        Serial.println(xAccl);
        Serial.print("Acceleration in Y-Axis : ");
        Serial.println(yAccl);
        Serial.print("Acceleration in Z-Axis : ");
        Serial.println(zAccl);
        delay(300);
        Serial.println(); 

     int average=xAxisAverage.reading(xAccl);

    if (average < -1000)
    {
     Serial.print("Hardbraking: ");
    //Serial.print(average/100.0);
      Serial.print(average);
      Serial.println();
        }
       }

I have changeed the code,but values are keeps on repeating

edited title
Link
Loading
Source Link
Loading