NerfUS / Mbed 2 deprecated NerfUSTarget

Dependencies:   LedController mbed-rtos mbed NerfUSXbee Servomotor TargetManager

Fork of NerfUS by NerfUS

Embed: (wiki syntax)

« Back to documentation index

Show/hide line numbers main.cpp Source File

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