nucleo側のプログラム

Dependents:   serial_connected_mcu_nucleo serial_connected_mcu_nucleo

Fork of serial_connected_mcu by tarou yamada

Files at this revision

API Documentation at this revision

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