nucleo側のプログラム
Dependents: serial_connected_mcu_nucleo serial_connected_mcu_nucleo
Fork of serial_connected_mcu by
Revision 0:9ca9a6eddffa, committed 2016-07-10
- Comitter:
- inst
- Date:
- Sun Jul 10 05:31:54 2016 +0000
- Child:
- 1:0ba151c701a3
- Commit message:
- ????;
Changed in this revision
serial_connected_mcu.cpp | Show annotated file Show diff for this revision Revisions of this file |
serial_connected_mcu.hpp | Show annotated file Show diff for this revision Revisions of this file |
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/serial_connected_mcu.cpp Sun Jul 10 05:31:54 2016 +0000 @@ -0,0 +1,51 @@ +#include "serial_connected_mcu.hpp" +#include "mbed.h" + +namespace serial_connected_mcu { + +serial_connected_mcu* serial_connected_mcu::_instance = NULL; +const PinName serial_connected_mcu::_servo_pins[SERVO_NUM] = { + PB_6, + PB_7, + PB_8 +}; + +TIM_TypeDef* serial_connected_mcu::_encoder_timers[ENCODER_NUM] = { + TIM1, + TIM2, + TIM3 +}; + +const size_t serial_connected_mcu::_encoder_pulse_per_revol = 100; + +const PinName serial_connected_mcu::_analog_input_pins[ANALOG_INPUT_NUM] = { + A3, + A4, + A5 +}; + + +serial_connected_mcu* serial_connected_mcu::instance() { + if (_instance == NULL) { + _instance = new serial_connected_mcu; + } + return _instance; +} + +serial_connected_mcu::serial_connected_mcu() { + for (size_t i = 0; i < SERVO_NUM; ++i) { + _servos[i] = new servo(_servo_pins[i]); + } + for (size_t i = 0; i < ENCODER_NUM; ++i) { + _encoders[i] = new rotary_encoder_ab_phase(_encoder_timers[i], _encoder_pulse_per_revol); + } + for (size_t i = 0; i < SERVO_NUM; ++i) { + _analog_inputs[i] = new AnalogIn(_analog_input_pins[i]); + } +} + +void serial_connected_mcu::update() { + +} + +} /* namespace serial_connected_mcu */
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/serial_connected_mcu.hpp Sun Jul 10 05:31:54 2016 +0000 @@ -0,0 +1,60 @@ +#ifndef INCUDED_SERIAL_CONNECTED_MCU_HPP +#define INCUDED_SERIAL_CONNECTED_MCU_HPP + +#include "rotary_encoder_ab_phase.hpp" +#include "servo.hpp" +#include "mbed.h" + +namespace serial_connected_mcu { + +class serial_connected_mcu { +public: + enum servo_id { + SERVO_0, + SERVO_1, + SERVO_2, + SERVO_NUM + }; + + enum encoder_id { + ENCODER_0, + ENCODER_1, + ENCODER_2, + ENCODER_NUM + }; + + enum analog_input_id { + ANALOG_IN_0, + ANALOG_IN_1, + ANALOG_IN_2, + ANALOG_INPUT_NUM + }; + + static serial_connected_mcu* instance(); + void update(); + +private: + serial_connected_mcu(); + + // 実体を記述しない + ~serial_connected_mcu(); + void operator=(const serial_connected_mcu&); + serial_connected_mcu(const serial_connected_mcu&); + + static serial_connected_mcu* _instance; + + static const PinName _servo_pins[SERVO_NUM]; + + static TIM_TypeDef* _encoder_timers[ENCODER_NUM]; + static const size_t _encoder_pulse_per_revol; + + static const PinName _analog_input_pins[ANALOG_INPUT_NUM]; + + servo* _servos[SERVO_NUM]; + rotary_encoder_ab_phase* _encoders[ENCODER_NUM]; + AnalogIn* _analog_inputs[ANALOG_INPUT_NUM]; +}; + +} /* namespace serial_connected_mcu */ + +#endif