Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- -(IBAction)measureAngle:(id)sender {
- test = test+1; // updates test
- // we check for remainder of test odd or even, this alternates between
- // the moving angle reading and the static angle reading
- j = j + 0.5; // update by 0.5, as it takes 2 button clicks to call display label
- // this is used as the amount to divide by for the average
- [self displayLabel];
- }
- -(void) displayLabel {
- NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
- buttonImage1 = [UIImage imageNamed:@"aoe_btn_start_off.png"];
- buttonImage2 = [UIImage imageNamed:@"aoe_btn_stop_off.png"];
- [self.view addSubview:startButton];
- self.motionManager = [[[CMMotionManager alloc] init] autorelease];
- NSOperationQueue *queue = [[[NSOperationQueue alloc] init] autorelease];
- if ((test%2) == 1) { // triggered when it is equal to 0
- // so after the first call ( 1 + (-1)) = 0
- // then
- [startButton setImage:buttonImage2 forState:UIControlStateNormal];
- motionManager.accelerometerUpdateInterval = 1.0/10.0;
- [motionManager startAccelerometerUpdatesToQueue:queue withHandler:
- ^(CMAccelerometerData *accelerometerData, NSError *error){
- if (error) {
- [motionManager stopAccelerometerUpdates];
- labelText = [NSString stringWithFormat:
- @"Accelerometer encountered error: %@", error];
- }
- else {
- labelText = [NSString stringWithFormat:
- @"%.0f",
- fabs((accelerometerData.acceleration.y)*90)];
- result = fabs((accelerometerData.acceleration.y)*90);
- }
- [accelerometerLabel performSelectorOnMainThread:@selector(setText:)
- withObject:labelText
- waitUntilDone:YES];
- }];
- [pool drain];
- }
- else {
- accelerometerLabel.text = @"This device has no accelerometer.";
- }
- if ( test > 20) {
- [self resetMethod];
- }
- if ((test%2) == 0){
- [startButton setImage:buttonImage1 forState:UIControlStateNormal];
- accelerometerLabel.text = [NSString stringWithFormat:@"%.f", result];
- switch (test)
- {
- case 2:
- angle1.text = [NSString stringWithFormat:@"%.0f", result];
- a1 = result;
- break;
- case 4:
- angle2.text = [NSString stringWithFormat:@"%.0f", result];
- a2 = result;
- break;
- case 6:
- angle3.text = [NSString stringWithFormat:@"%.0f", result];
- a3 = result;
- break;
- case 8:
- angle4.text = [NSString stringWithFormat:@"%.0f", result];
- a4 = result;
- break;
- case 10:
- angle5.text = [NSString stringWithFormat:@"%.0f", result];
- a5 = result;
- break;
- case 12:
- angle6.text = [NSString stringWithFormat:@"%.0f", result];
- a6 = result;
- break;
- case 14:
- angle7.text = [NSString stringWithFormat:@"%.0f", result];
- a7 = result;
- break;
- case 16:
- angle8.text = [NSString stringWithFormat:@"%.0f", result];
- a8 = result;
- break;
- case 18:
- angle9.text = [NSString stringWithFormat:@"%.0f", result];
- a9 = result;
- break;
- case 20:
- angle10.text = [NSString stringWithFormat:@"%.0f", result];
- a10 = result;
- break;
- default:
- average = 0;
- break;
- }
- average = (a1 + a2 + a3 + a4 + a5 + a6 + a7 + a8 + a9 + a10)/j; // calculates average
- // j is the running total
- if(isnan(average)) {
- averageAngle.text = [NSString stringWithFormat:@""];
- }
- else {
- averageAngle.text = [NSString stringWithFormat:@"%.1f\u00B0", average ];
- }
- }
- }
- -(IBAction)resetAll:(id)sender {
- [self resetMethod];
- [self displayLabel];
- }
- -(void) resetMethod {
- averageAngle.text = [NSString stringWithFormat:@""];
- test = 0;
- average = 0;
- result =0;
- j =0;
- a1 = 0;
- a2 = 0;
- a3 = 0;
- a4 = 0;
- a5 = 0;
- a6 = 0;
- a7 = 0;
- a8 = 0;
- a9 = 0;
- a10= 0;
- accelerometerLabel.text = [NSString stringWithFormat:@""];
- angle1.text = [NSString stringWithFormat:@""];
- angle2.text = [NSString stringWithFormat:@""];
- angle3.text = [NSString stringWithFormat:@""];
- angle4.text = [NSString stringWithFormat:@""];
- angle5.text = [NSString stringWithFormat:@""];
- angle6.text = [NSString stringWithFormat:@""];
- angle7.text = [NSString stringWithFormat:@""];
- angle8.text = [NSString stringWithFormat:@""];
- angle9.text = [NSString stringWithFormat:@""];
- angle10.text = [NSString stringWithFormat:@""];
- }
- // Implement viewDidLoad to do additional setup after loading the view, typically from a nib.
- - (void)viewDidLoad {
- self.title = @"Angle of Elevation";
- [super viewDidLoad];
- [self resetMethod];
- }
- - (void)didReceiveMemoryWarning {
- // Releases the view if it doesn't have a superview.
- [super didReceiveMemoryWarning];
- // Release any cached data, images, etc that aren't in use.
- }
- - (void)viewDidUnload {
- // Release any retained subviews of the main view.
- // e.g. self.myOutlet = nil;
- self.motionManager = nil;
- self.accelerometerLabel = nil;
- self.gyroscopeLabel = nil;
- self.angle1 =nil;
- self.angle2 =nil;
- self.angle3 =nil;
- self.angle4 =nil;
- self.angle5 =nil;
- self.angle6 =nil;
- self.angle7 =nil;
- self.angle8 =nil;
- self.angle9 =nil;
- self.angle10 =nil;
- self.averageAngle=nil;
- [super viewDidUnload];
- }
- - (void)dealloc {
- [motionManager release];
- [accelerometerLabel release];
- [gyroscopeLabel release];
- [startButton release];
- [angle1 release];
- [angle2 release];
- [angle3 release];
- [angle4 release];
- [angle5 release];
- [angle6 release];
- [angle7 release];
- [angle8 release];
- [angle9 release];
- [angle10 release];
- [averageAngle release];
- [buttonImage1 release];
- [buttonImage2 release];
- [super dealloc];
- }
- @end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement