UdonLibrary 1.0.0
機械システム研究部 C++ ライブラリ
読み取り中…
検索中…
一致する文字列を見つけられません
E220Base.hpp
[詳解]
1#pragma once
2
3namespace Udon
4{
5
6 namespace Impl
7 {
8
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)
44 {
45 }
46#endif
47 };
48
53 {
54 return config;
55 }
56
57 protected:
59
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
E220 ベースクラス
Definition E220Base.hpp:12
Config & getConfigReference()
現在の設定を取得
Definition E220Base.hpp:52
Config config
Definition E220Base.hpp:58
E220Base(const Config &config)
コンストラクタ
Definition E220Base.hpp:62
void begin()
通信開始
Definition E220Base.hpp:68
Definition Bit.hpp:12
設定
Definition E220Base.hpp:16
uint8_t m0
Definition E220Base.hpp:19
HardwareSerial & serial
Definition E220Base.hpp:17
uint16_t address
アドレス
Definition E220Base.hpp:31
uint8_t m1
Definition E220Base.hpp:20
uint8_t aux
Definition E220Base.hpp:21
Config(HardwareSerial &serial, uint8_t m0, uint8_t m1, uint8_t aux, uint8_t channel=0, uint16_t address=0x0102)
コンストラクタ
Definition E220Base.hpp:37
uint8_t channel
チャンネル
Definition E220Base.hpp:26