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
main.cpp
00001 #include "mbed.h" 00002 #include "RealDigitalOut.hpp" 00003 #include "LedController.hpp" 00004 #include "LedController.hpp" 00005 #include "RealPwmOut.hpp" 00006 #include "RealServomotor.hpp" 00007 #include "RealXbeeTransmitter.hpp" 00008 #include "RealXbeeReceiver.hpp" 00009 #include "Target.hpp" 00010 #include "Calibrator.hpp" 00011 #include "Bumper.hpp" 00012 #include "TargetHitCalibrateCallback.hpp" 00013 #include "TargetHitCallback.hpp" 00014 #include "TargetMissedCallback.hpp" 00015 #include "NerfusTicker.hpp" 00016 #include "TargetManager.hpp" 00017 00018 #include <vector> 00019 00020 TargetManager* target_manager_pointer; 00021 00022 void target_manager_callback(vector<uint8_t> message, int address[8]) 00023 { 00024 target_manager_pointer->execute(message, address); 00025 } 00026 00027 int main() 00028 { 00029 //Transmitter 00030 RealXbeeTransmitter xbee_transmitter; 00031 xbee_transmitter.init(); 00032 00033 //Target 0 00034 RealPwmOut servo_pwm_out_0(p21); 00035 RealServomotor servomotor_0(servo_pwm_out_0); 00036 servomotor_0.set_position_down(); 00037 00038 RealDigitalOut ally_leds_0(p5); 00039 RealDigitalOut ennemy_leds_0(p6); 00040 LedController ally_leds_controller_0(ally_leds_0); 00041 LedController ennemy_leds_controller_0(ennemy_leds_0); 00042 00043 Target target_0(servomotor_0, ally_leds_controller_0, ennemy_leds_controller_0, xbee_transmitter, 0); 00044 00045 //Target 1 00046 RealPwmOut servo_pwm_out_1(p22); 00047 RealServomotor servomotor_1(servo_pwm_out_1); 00048 servomotor_1.set_position_down(); 00049 00050 RealDigitalOut ally_leds_1(p9); 00051 RealDigitalOut ennemy_leds_1(p10); 00052 LedController ally_leds_controller_1(ally_leds_1); 00053 LedController ennemy_leds_controller_1(ennemy_leds_1); 00054 00055 Target target_1(servomotor_1, ally_leds_controller_1, ennemy_leds_controller_1, xbee_transmitter, 1); 00056 00057 wait_ms(250); 00058 00059 //Bumpers 00060 PinName bumper_0_pin = p11; 00061 PinName bumper_1_pin = p12; 00062 Bumper bumper_0(bumper_0_pin, NULL); 00063 Bumper bumper_1(bumper_1_pin, NULL); 00064 00065 //Servomotor calibration 00066 Calibrator calibrator_0(servomotor_0); 00067 Calibrator calibrator_1(servomotor_1); 00068 TargetHitCalibrateCallback target_hit_calibrate_callback_0(calibrator_0); 00069 TargetHitCalibrateCallback target_hit_calibrate_callback_1(calibrator_1); 00070 00071 bumper_0.set_callbacks(&target_hit_calibrate_callback_0); 00072 calibrator_0.calibrate(); 00073 servomotor_0.set_position_down(); 00074 printf("Servomotor 0 calibrated\r\n"); 00075 00076 bumper_1.set_callbacks(&target_hit_calibrate_callback_1); 00077 calibrator_1.calibrate(); 00078 servomotor_1.set_position_down(); 00079 printf("Servomotor 1 calibrated\r\n"); 00080 00081 //Target Manager 00082 vector<TargetInterface*> targets; 00083 targets.push_back(&target_0); 00084 targets.push_back(&target_1); 00085 00086 NerfusTicker target_timeout_ticker_0; 00087 NerfusTicker target_timeout_ticker_1; 00088 std::vector<NerfusTickerInterface*> target_timeout_tickers; 00089 target_timeout_tickers.push_back(&target_timeout_ticker_0); 00090 target_timeout_tickers.push_back(&target_timeout_ticker_1); 00091 00092 TargetManager target_manager(targets, target_timeout_tickers); 00093 00094 //Timeout tickers 00095 TargetMissedCallback target_missed_callback_0(target_manager, 0); 00096 TargetMissedCallback target_missed_callback_1(target_manager, 1); 00097 target_timeout_ticker_0.init(&target_missed_callback_0); 00098 target_timeout_ticker_1.init(&target_missed_callback_1); 00099 00100 //Bumper 1 00101 TargetHitCallback target_hit_callback_0(target_manager, 0); 00102 bumper_0.set_callbacks(&target_hit_callback_0); 00103 00104 //Bumper 2 00105 TargetHitCallback target_hit_callback_1(target_manager, 1); 00106 bumper_1.set_callbacks(&target_hit_callback_1); 00107 00108 //Receiver 00109 target_manager_pointer = &target_manager; 00110 RealXbeeReceiver xbee_receiver; 00111 xbee_receiver.start(&target_manager_callback); 00112 00113 while(1) 00114 { 00115 } 00116 } 00117 00118 00119
Generated on Thu Jul 14 2022 01:50:38 by
1.7.2
