NerfUS mobile node that manages a target for the Nerf gun firing range

Dependencies:   LedController mbed-rtos mbed NerfUSXbee Servomotor TargetManager

Fork of NerfUS by NerfUS

Revision:
46:853966aab733
Parent:
40:1f0a5e5f24f6
Child:
49:4475f0760594
--- a/main.cpp	Mon Apr 10 17:36:16 2017 +0000
+++ b/main.cpp	Tue Apr 11 03:49:04 2017 +0000
@@ -7,7 +7,9 @@
 #include "RealXbeeTransmitter.hpp"
 #include "RealXbeeReceiver.hpp"
 #include "Target.hpp"
+#include "Calibrator.hpp"
 #include "Bumper.hpp"
+#include "TargetHitCalibrateCallback.hpp"
 #include "TargetHitCallback.hpp"
 #include "TargetMissedCallback.hpp"
 #include "NerfusTicker.hpp"
@@ -23,7 +25,7 @@
 }
 
 int main() 
-{
+{    
     //Transmitter
     RealXbeeTransmitter xbee_transmitter;
     xbee_transmitter.init();
@@ -31,6 +33,7 @@
     //Target 0
     RealPwmOut servo_pwm_out_0(p21);
     Servomotor servomotor_0(servo_pwm_out_0);
+    servomotor_0.set_angle(25);
     
     RealDigitalOut ally_leds_0(p5);
     RealDigitalOut ennemy_leds_0(p6);
@@ -42,6 +45,7 @@
     //Target 1
     RealPwmOut servo_pwm_out_1(p22);
     Servomotor servomotor_1(servo_pwm_out_1);
+    servomotor_1.set_angle(25);
     
     RealDigitalOut ally_leds_1(p9);
     RealDigitalOut ennemy_leds_1(p10);
@@ -50,6 +54,30 @@
     
     Target target_1(servomotor_1, ally_leds_controller_1, ennemy_leds_controller_1, xbee_transmitter, 1);
     
+    wait_ms(250);
+    
+    //Bumpers
+    PinName bumper_0_pin = p11;
+    PinName bumper_1_pin = p12;
+    Bumper bumper_0(bumper_0_pin, NULL);
+    Bumper bumper_1(bumper_1_pin, NULL);
+    
+    //Servomotor calibration
+    Calibrator calibrator_0(servomotor_0);
+    Calibrator calibrator_1(servomotor_1);
+    TargetHitCalibrateCallback target_hit_calibrate_callback_0(calibrator_0);
+    TargetHitCalibrateCallback target_hit_calibrate_callback_1(calibrator_1);
+    
+    bumper_0.set_callbacks(&target_hit_calibrate_callback_0);
+    calibrator_0.calibrate();
+    servomotor_0.set_position_down();
+    printf("Servomotor 0 calibrated\r\n");
+    
+    bumper_1.set_callbacks(&target_hit_calibrate_callback_1);
+    calibrator_1.calibrate();
+    servomotor_1.set_position_down();
+    printf("Servomotor 1 calibrated\r\n");
+
     //Target Manager
     vector<TargetInterface*> targets;
     targets.push_back(&target_0);
@@ -70,14 +98,12 @@
     target_timeout_ticker_1.init(&target_missed_callback_1);
     
     //Bumper 1
-    PinName bumper_0_pin = p11;
     TargetHitCallback target_hit_callback_0(target_manager, 0);
-    Bumper bumper_0(bumper_0_pin, target_hit_callback_0);
+    bumper_0.set_callbacks(&target_hit_callback_0);
     
     //Bumper 2
-    PinName bumper_1_pin = p12;
     TargetHitCallback target_hit_callback_1(target_manager, 1);
-    Bumper bumper_1(bumper_1_pin, target_hit_callback_1);
+    bumper_1.set_callbacks(&target_hit_callback_1);
     
     //Receiver
     target_manager_pointer = &target_manager;