Accelerometer

Put your problem here if it does not fit any of the other categories.

Accelerometer

Postby braves180 » Tue Feb 28, 2012 2:24 am

Hi everyone, i'e been trying to work on a pedometer/exercise counter. I've got everything imported and the program runs. My problem is when I tilt the device the count does increment but, if I leave the device tilted it continuously increments instead of just incrementing by 1. I think its because the device continuously senses a movement(even the VERY slightest) and its running the onSensorChanged function. Any thoughts???

Code: Select all
public void onSensorChanged(SensorEvent event) {
      // TODO Auto-generated method stub

      if(event.sensor.getType()==Sensor.TYPE_ACCELEROMETER){
                      //Convert floats to whole numbers
         float x2=Math.round(event.values[0] * 10) /10;
         float y2=Math.round(event.values[1] * 10) /10;
         float z2=Math.round(event.values[2] * 10) /10;
         
                       //output accelerometer values
         xCoor.setText("X: "+x2);
         yCoor.setText("Y: "+y2);
         zCoor.setText("Z: "+z2);
         
                       //Verify accelerometer range
         if(y2 >5){
         flag = 0;
         statementcheck.setText("1st if");
         myCount.setText("Your count is: " + count);
         }
         if(y2 < 5){
         flag = 1;
         count ++;
         statementcheck.setText("2nd if");
         myCount.setText("Your count is: " + count);
         }
         
         
         //commented code for testing
         /*switch (flag){
         case 0: count = count;
         myCount.setText("Your count is : "+ count);
         break;
         case 1:   count ++;
         myCount.setText("Your count is: "+ count);
         //statementcheck.setText("switch");
         break;
         }*/
      }
   }
braves180
Freshman
Freshman
 
Posts: 3
Joined: Fri Jan 27, 2012 2:55 am

Top

Re: Accelerometer

Postby Phyll » Tue Feb 28, 2012 12:54 pm

Hi braves,

I think you need to interpret the movement. That is, you need to read the value from the sensor and determine what happened based on previous values. If these values indicate the movement is still going on, you do not increment the count. When the value plus some hysteresis indicates it has turned around, increment the count. Or something like that anyway.

Noise alone will cause the sensor to jitter and give you fluctuating values. You must filter them in some way. The previous paragraph is really nothing more than an overblown filter. Other types of filters may do the same job. Perhaps just an average filter then compute the delta and use the sign of it to operate the counter.

You might also want to study how other pedometers and the like actually work. This may give you some insights into how to make yours.

Hope this helps.

Phyll
Phyll
Master Developer
Master Developer
 
Posts: 648
Joined: Fri Oct 14, 2011 11:19 am

Top

Return to Other Coding-Problems

Who is online

Users browsing this forum: No registered users and 19 guests