23 template <
template <
typename>
class Reader>
25 :
public Reader<Message::PadPS5>
37 using ReaderType::ReaderType;
40 explicit operator bool() const noexcept {
return isConnected; }
148 if (
const auto message = ReaderType::getMessage())
152 triangle.
update(message->triangle);
153 circle.
update(message->circle);
154 cross.
update(message->cross);
155 square.
update(message->square);
158 right.
update(message->right);
159 down.
update(message->down);
160 left.
update(message->left);
169 create.
update(message->create);
170 option.
update(message->option);
171 touch.
update(message->touch);
176 const auto decodeStick = [](int8_t raw) -> int16_t
182 CutDeadZone(decodeStick(message->analogLeftX), deadZone),
183 CutDeadZone(decodeStick(message->analogLeftY), deadZone),
186 CutDeadZone(decodeStick(message->analogRightX), deadZone),
187 CutDeadZone(decodeStick(message->analogRightY), deadZone),
249 static_cast<int8_t
>(rightStick.
x / 2),
250 static_cast<int8_t
>(rightStick.
y / 2),
251 static_cast<int8_t
>(leftStick.
x / 2),
252 static_cast<int8_t
>(leftStick.
y / 2),
258 bool isConnected =
false;
286 static double CutDeadZone(
double value, uint8_t deadZone)
288 if (value > deadZone)
289 return 255 * (value - deadZone) / (255 - deadZone);
290 else if (value < -deadZone)
291 return 255 * (value + deadZone) / (255 - deadZone);
通信経由PS5コントローラークラス
Definition PadPS5.hpp:26
Input getDown() const noexcept
十字キー下
Definition PadPS5.hpp:94
void update(int deadZone=20) noexcept
更新
Definition PadPS5.hpp:144
Input getPs() const noexcept
PSボタン
Definition PadPS5.hpp:130
Reader< MessageType > ReaderType
受信クラス型
Definition PadPS5.hpp:34
Stick getMoveInfo() const noexcept
ロボットの移動に必要なスティックの情報 Udon::Stick オブジェクト {{x,y},turn} を取得
Definition PadPS5.hpp:140
bool isEmergencyStop() const noexcept
非常停止を行うべきかを取得
Definition PadPS5.hpp:46
Input getCircle() const noexcept
○ボタン
Definition PadPS5.hpp:79
Input getRight() const noexcept
十字キー右
Definition PadPS5.hpp:91
Vec2 getRightStick() const noexcept
右スティック [x,y: -255~255]
Definition PadPS5.hpp:136
Input getLeft() const noexcept
十字キー左
Definition PadPS5.hpp:97
Vec2 getLeftStick() const noexcept
左スティック [x,y: -255~255]
Definition PadPS5.hpp:133
Input getMic() const noexcept
マイクボタン
Definition PadPS5.hpp:127
Input getR3() const noexcept
右スティック押し込み
Definition PadPS5.hpp:115
Input getL2() const noexcept
L2ボタン
Definition PadPS5.hpp:106
Input getCreate() const noexcept
クリエイトボタン(左上ボタン)
Definition PadPS5.hpp:118
Input getL3() const noexcept
左スティック押し込み
Definition PadPS5.hpp:112
Input getUp() const noexcept
十字キー上
Definition PadPS5.hpp:88
Input getSquare() const noexcept
□ボタン
Definition PadPS5.hpp:85
Input getTriangle() const noexcept
▵ボタン
Definition PadPS5.hpp:76
Input getR2() const noexcept
R2ボタン
Definition PadPS5.hpp:109
bool isOperable() const noexcept
動作可能であるか
Definition PadPS5.hpp:70
Input getOption() const noexcept
オプションボタン(右上ボタン)
Definition PadPS5.hpp:121
Input getCross() const noexcept
×ボタン
Definition PadPS5.hpp:82
Input getR1() const noexcept
R1ボタン
Definition PadPS5.hpp:103
MessageType getMessage() const
メッセージ構造体に変換
Definition PadPS5.hpp:222
Input getTouch() const noexcept
タッチパッドボタン
Definition PadPS5.hpp:124
Input getL1() const noexcept
L1ボタン
Definition PadPS5.hpp:100
void MaybeInvokeUpdate(HasMemberFunctionUpdate &rhs)
T に T::update 関数が存在する場合呼び出す。それ以外の場合何もしない。
Definition HasMemberFunction.hpp:111
PS5コントローラーのボタン情報
Definition PadPS5.hpp:21
ロボットの位置
Definition Position.hpp:26
送信クラスであるか判定
Definition ReaderWriterTraits.hpp:42
二次元ベクトル
Definition Vector2D.hpp:22
ValueType y
Y成分
Definition Vector2D.hpp:31
ValueType x
X成分
Definition Vector2D.hpp:28
void clear() noexcept
値クリア
Definition Vector2D.hpp:107