This repository has been archived by the owner on Jan 16, 2023. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
Showing
2 changed files
with
109 additions
and
76 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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 */ |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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 */ |