Skip to content
This repository has been archived by the owner on Jan 16, 2023. It is now read-only.

Commit

Permalink
Solenoid, SyncServoのコメントを修正 #22
Browse files Browse the repository at this point in the history
  • Loading branch information
H1rono committed Sep 6, 2022
1 parent 85a97c1 commit 12c550f
Show file tree
Hide file tree
Showing 2 changed files with 109 additions and 76 deletions.
74 changes: 45 additions & 29 deletions include/ssr/Solenoid.hpp
Original file line number Diff line number Diff line change
@@ -1,43 +1,59 @@
/**
* @file Solenoid.hpp
* @author H1rono (hronok66@gmail.com)
* @brief ソレノイドを扱う型Solenoid
* @version 0.1
* @copyright Copyright (c) 2022 ssr2022-saka-maza
*/

#pragma once

#ifndef SSR_SOLENOID_HPP

/**
* @brief ssr/Solenoid.hppがインクルードされていることを示すdefine
*/
#define SSR_SOLENOID_HPP

#include <Arduino.h>
#include "ssr/DigitalOut.hpp"

// このライブラリが使う名前空間
/**
* @brief ssrライブラリが使う名前空間
*/
namespace ssr {

// ソレノイドを扱う
class Solenoid {
private:
// ソレノイドを繋げたピン
DigitalOut _pin;

public:
/**
* 初期化子
* @param pin ssr::PinType ソレノイドを繋げたピン
*/
Solenoid(PinType pin);

/**
* 初期化 全体のsetup()で呼ぶこと
* @brief ソレノイドを扱う型
*/
void begin();

/**
* 状態更新 定期的に呼ぶこと
*/
void update();

/**
* ソレノイドを発火させる
*/
void fire();
}; // class Solenoid

class Solenoid {
private:
/**
* @brief ソレノイドを繋げたピン
*/
DigitalOut _pin;

public:
/**
* @brief 初期化子
* @param pin ssr::PinType ソレノイドを繋げたピン
*/
Solenoid(PinType pin);

/**
* @brief 初期化 全体のsetup()で呼ぶこと
*/
void begin();

/**
* @brief 状態更新 定期的に呼ぶこと
*/
void update();

/**
* @brief ソレノイドを発火させる
*/
void fire();
}; // class Solenoid
} // namespace ssr

#endif /* SSR_SOLENOID_HPP */
111 changes: 64 additions & 47 deletions include/ssr/SyncServo.hpp
Original file line number Diff line number Diff line change
@@ -1,69 +1,86 @@
/**
* @file SyncServo.hpp
* @author H1rono (hronok66@gmail.com)
* @brief サーボ同期用の型SyncServo
* @version 0.1
* @copyright Copyright (c) 2022 ssr2022-saka-maza
*/

#pragma once

#ifndef SSR_SYNC_SERVO_HPP

/**
* @brief ssr/SyncServo.hppがインクルードされていることを示すdefine
*/
#define SSR_SYNC_SERVO_HPP

#include <Servo.h>
#include "ssr/PinType.hpp"
#include "ssr/Input.hpp"
#include "ssr/Output.hpp"

namespace ssr {

/**
* @brief 2つのサーボモーターを同期させる
* @details 実装の詳細仕様
* Servo型のオブジェクトservo1, servo2を持つ(private)
* write(uint8_t v)メソッドではservo1.write(v)が確定
* if (mirrored) servo2.write(180 - v); else servo2.write(v);
* @brief ssrライブラリが使う名前空間
*/
class SyncServo : public Input<int16_t>, public Output<uint8_t> {
private:
// 同期させるサーボ1つ目
Servo _servo1;
// 同期させるサーボ2つ目
Servo _servo2;

public:
namespace ssr {
/**
* @brief サーボの角度を反転させるかどうか(trueで反転)
* @brief 2つのサーボモーターを同期させる
* @details 実装の詳細仕様
* Servo型のオブジェクトservo1, servo2を持つ(private)
* write(uint8_t v)メソッドではservo1.write(v)が確定
* if (mirrored) servo2.write(180 - v); else servo2.write(v);
*/
bool mirrored;
class SyncServo : public Input<int16_t>, public Output<uint8_t> {
private:
/**
* @brief 同期させるサーボ1つ目
*/
Servo _servo1;
/**
* @brief 同期させるサーボ2つ目
*/
Servo _servo2;

/**
* @brief Construct a new Sync Servo object
* @param mirror サーボの角度を反転させるかどうか(trueで反転)
*/
SyncServo(bool mirror = false);
/**
* @brief Construct a new Sync Servo object
* @param pin1 サーボ1のピン
* @param pin2 サーボ2のピン
* @param mirror サーボの角度を反転させるかどうか(trueで反転)
*/
SyncServo(PinType pin1, PinType pin2, bool mirror = false);
public:
/**
* @brief サーボの角度を反転させるかどうか(trueで反転)
*/
bool mirrored;

/**
* @brief サーボにピンを割り当てる
* @param pin1 サーボ1に割り当てるピン
* @param pin2 サーボ2に割り当てるピン
* @return uint16_t (servo2.attach(pin2) << 8) | servo1.attach(pin1)
*/
uint16_t attach(PinType pin1, PinType pin2);
/**
* @brief Construct a new Sync Servo object
* @param mirror bool サーボの角度を反転させるかどうか(trueで反転)
*/
SyncServo(bool mirror = false);
/**
* @brief Construct a new Sync Servo object
* @param pin1 ssr::PinType サーボ1のピン
* @param pin2 ssr::PinType サーボ2のピン
* @param mirror bool サーボの角度を反転させるかどうか(trueで反転)
*/
SyncServo(PinType pin1, PinType pin2, bool mirror = false);

/**
* @brief 角度を設定する
* @param v サーボ1に設定する角度 サーボ2の角度はmirroredの値次第で変わる
*/
virtual void write(uint8_t value) override;
/**
* @brief サーボにピンを割り当てる
* @param pin1 ssr::PinType サーボ1に割り当てるピン
* @param pin2 ssr::PinType サーボ2に割り当てるピン
* @return uint16_t (servo2.attach(pin2) << 8) | servo1.attach(pin1)
*/
uint16_t attach(PinType pin1, PinType pin2);

/**
* @brief 角度を読む
* @return int サーボ1の角度 同期できていない場合は-1
*/
virtual int16_t read() override;
}; // class SyncServo
/**
* @brief 角度を設定する
* @param v uint8_t サーボ1に設定する角度 サーボ2の角度はmirroredの値次第で変わる
*/
virtual void write(uint8_t value) override;

/**
* @brief 角度を読む
* @return int サーボ1の角度 同期できていない場合は-1
*/
virtual int16_t read() override;
}; // class SyncServo
} // namespace ssr

#endif /* SSR_SYNC_SERVO_HPP */

0 comments on commit 12c550f

Please sign in to comment.