UdonLibrary
1.0.0
機械システム研究部 C++ ライブラリ
Toggle main menu visibility
読み取り中…
検索中…
一致する文字列を見つけられません
E220Base.hpp
[詳解]
1
#pragma once
2
3
namespace
Udon
4
{
5
6
namespace
Impl
7
{
8
11
class
E220Base
12
{
13
public
:
15
struct
Config
16
{
17
HardwareSerial&
serial
;
// シリアルポート
18
19
uint8_t
m0
;
// M0 ピン
20
uint8_t
m1
;
// M1 ピン
21
uint8_t
aux
;
// AUX ピン
22
26
uint8_t
channel
= 0;
27
31
uint16_t
address
= 0x0102;
32
33
#if __cplusplus < 201402L
34
37
Config
(HardwareSerial&
serial
, uint8_t
m0
, uint8_t
m1
, uint8_t
aux
, uint8_t
channel
= 0, uint16_t
address
= 0x0102)
38
:
serial
(
serial
)
39
,
m0
(
m0
)
40
,
m1
(
m1
)
41
,
aux
(
aux
)
42
,
channel
(
channel
)
43
,
address
(
address
)
44
{
45
}
46
#endif
47
};
48
52
Config
&
getConfigReference
()
53
{
54
return
config
;
55
}
56
57
protected
:
58
Config
config
;
59
62
E220Base
(
const
Config
&
config
)
63
:
config
(
config
)
64
{
65
}
66
68
void
begin
()
69
{
70
pinMode(
config
.m0, OUTPUT);
71
pinMode(
config
.m1, OUTPUT);
72
pinMode(
config
.aux, INPUT);
73
74
// E220 はデフォルトボーレートが9600なのでそちらに合わせる
75
config
.serial.begin(9600);
76
77
// 設定モードに移行
78
digitalWrite(
config
.m0, HIGH);
79
digitalWrite(
config
.m1, HIGH);
80
81
delay(100);
82
83
// レジスタを書き換え
84
const
uint8_t registerMap[]{
85
/* [0x00] */
static_cast<
uint8_t
>
(
config
.address >> 8),
// アドレス上位バイト
86
/* [0x01] */
static_cast<
uint8_t
>
(
config
.address >> 0),
// アドレス下位バイト
87
/* [0x02] */
0b11100001,
// [7-5]UART通信レート / [4-0]伝送レート
88
/* [0x03] */
0b00000001,
// [7-6]サブパケット長 / [5]RSSI有効 / [4-2]未使用(予約) / [1-0]送信出力電力
89
/* [0x04] */
config
.channel,
// 周波数チャンネル (920.8 MHz + CH×200kHz)
90
/* [0x05] */
0b11000011,
// [7]RSSI バイト / [6]送信方法 / [5-3]未使用(予約) / [2-0]WOR サイクル
91
};
92
config
.serial.write(
static_cast<
uint8_t
>
(0xc0));
93
config
.serial.write(
static_cast<
uint8_t
>
(0x00));
94
config
.serial.write(
static_cast<
uint8_t
>
(
sizeof
registerMap));
95
config
.serial.write(registerMap,
sizeof
registerMap);
96
97
delay(100);
98
99
// レスポンスを破棄
100
while
(
config
.serial.available())
101
(void)
config
.serial.read();
102
103
// 通常モードに移行
104
digitalWrite(
config
.m0, LOW);
105
digitalWrite(
config
.m1, LOW);
106
107
delay(100);
108
109
config
.serial.end();
110
config
.serial.begin(115200);
111
}
112
};
113
114
}
// namespace Impl
115
116
}
// namespace Udon
Udon::Impl::E220Base::getConfigReference
Config & getConfigReference()
現在の設定を取得
Definition
E220Base.hpp:52
Udon::Impl::E220Base::config
Config config
Definition
E220Base.hpp:58
Udon::Impl::E220Base::E220Base
E220Base(const Config &config)
コンストラクタ
Definition
E220Base.hpp:62
Udon::Impl::E220Base::begin
void begin()
通信開始
Definition
E220Base.hpp:68
Udon::Impl
Definition
CanUtility.hpp:11
Udon
Definition
Bit.hpp:12
Udon::Impl::E220Base::Config
設定
Definition
E220Base.hpp:16
Udon::Impl::E220Base::Config::m0
uint8_t m0
Definition
E220Base.hpp:19
Udon::Impl::E220Base::Config::serial
HardwareSerial & serial
Definition
E220Base.hpp:17
Udon::Impl::E220Base::Config::address
uint16_t address
アドレス
Definition
E220Base.hpp:31
Udon::Impl::E220Base::Config::m1
uint8_t m1
Definition
E220Base.hpp:20
Udon::Impl::E220Base::Config::aux
uint8_t aux
Definition
E220Base.hpp:21
Udon::Impl::E220Base::Config::Config
Config(HardwareSerial &serial, uint8_t m0, uint8_t m1, uint8_t aux, uint8_t channel=0, uint16_t address=0x0102)
コンストラクタ
Definition
E220Base.hpp:37
Udon::Impl::E220Base::Config::channel
uint8_t channel
チャンネル
Definition
E220Base.hpp:26