UdonLibrary
1.0.0
機械システム研究部 C++ ライブラリ
Toggle main menu visibility
読み取り中…
検索中…
一致する文字列を見つけられません
Motor.hpp
[詳解]
1
//
2
// 通信経由モーター制御クラス
3
//
4
// Copyright (c) 2022 udonrobo
5
//
6
7
#pragma once
8
9
#include <
Udon/Stl/EnableSTL.hpp
>
10
#include <algorithm>
11
12
#include <
Udon/Com/Message/Motor.hpp
>
13
#include <
Udon/Traits/HasMemberFunction.hpp
>
14
#include <
Udon/Utility/Show.hpp
>
15
#include <
Udon/Traits/ReaderWriterTraits.hpp
>
16
#include <
Udon/Types/Direction.hpp
>
17
18
namespace
Udon
19
{
20
22
template
<
template
<
typename
>
class
Writer>
23
class
MotorBy
24
{
25
static_assert
(
Traits::IsWriter<Writer>::value
,
"Writer is not writer"
);
26
27
using
WriterType = Writer<Message::Motor>;
28
WriterType writer;
29
30
int16_t power;
// 出力値 -255 ~ 255
31
32
Udon::Direction
direction;
// 回転方向
33
34
public
:
35
39
MotorBy
(WriterType&& writer,
Udon::Direction
direction =
Udon::Direction::Forward
)
40
: writer(
std
::
move
(writer))
41
, power()
42
, direction(direction)
43
{
44
}
45
48
void
move
(int16_t p)
49
{
50
power =
Constrain
(p, (int16_t)-255, (int16_t)255);
51
writer.setMessage({
static_cast<
int16_t
>
(power *
Udon::DirectionToSign
(direction)) });
52
Udon::Traits::MaybeInvokeUpdate
(writer);
53
}
54
56
void
stop
()
57
{
58
move
(0);
59
}
60
62
void
show
()
const
63
{
64
Udon::Show
(power);
65
}
66
};
67
68
}
// namespace Udon
Motor.hpp
Direction.hpp
EnableSTL.hpp
HasMemberFunction.hpp
ReaderWriterTraits.hpp
Show.hpp
Udon::MotorBy::show
void show() const
出力値をシリアル出力
Definition
Motor.hpp:62
Udon::MotorBy::stop
void stop()
停止
Definition
Motor.hpp:56
Udon::MotorBy::MotorBy
MotorBy(WriterType &&writer, Udon::Direction direction=Udon::Direction::Forward)
コンストラクタ
Definition
Motor.hpp:39
Udon::MotorBy::move
void move(int16_t p)
出力値を取得
Definition
Motor.hpp:48
Udon::Traits::MaybeInvokeUpdate
void MaybeInvokeUpdate(HasMemberFunctionUpdate &rhs)
T に T::update 関数が存在する場合呼び出す。それ以外の場合何もしない。
Definition
HasMemberFunction.hpp:111
Udon
Definition
Bit.hpp:12
Udon::Show
void Show(Args &&... args)
区切り文字ありで出力する
Definition
Show.hpp:339
Udon::DirectionToSign
int DirectionToSign(Direction direction)
Definition
Direction.hpp:14
Udon::Direction
Direction
方向
Definition
Direction.hpp:9
Udon::Direction::Forward
@ Forward
Definition
Direction.hpp:10
Udon::Constrain
constexpr A Constrain(const A &amt, const B &low, const C &high)
値を指定された範囲内に収める (std::clamp)
Definition
Math.hpp:69
std
Definition
Typedef.hpp:94
Udon::Traits::IsWriter
送信クラスであるか判定
Definition
ReaderWriterTraits.hpp:25