リモコンの作り方
使用部品
- Arduino UNO
- ブレッドボード
- ジャンパーワイヤー
- 赤外線受信機(HW-490)
リモコンの値を取得する
リモコンなどは赤外線を使って通信していますが自然界にも
赤外線は存在するのでそれと区別するために38kHzなどのキャリア波を使っています。
このキャリア波に01のデータを乗せて通信しています。
なので、リモコンの値を取得するためには赤外線受信機を使って
赤外線を検出してそこからデータを取得する必要があります。
では実際にArduinoUNOでデータを取得してみました。配線は単純で上記で記した赤外線受信機(HW-490)の-をGND、+を5V、Sを8番ピンに接続するだけです。
以下にデータ取得時のプログラムを示します。
void setup() {
// put your setup code here, to run once:
pinMode(8, INPUT);
Serial.begin(9600);
}
#define number 500
uint16_t data[number];
int count = 0;
unsigned long startTime = 0; // 開始時刻を保存する変数
unsigned long duration; // 経過時間を保存する変数
unsigned long lasttime;
bool value = 1;
bool onece = 1;
void loop() {
duration = micros() - startTime;
if ((digitalRead(8) != value) && (onece == 0)) {
lasttime = duration;
//Serial.println("OUT");
if (count <= number-1) {
//Serial.println("IN");
data[count] = duration;
count++;
}
value = digitalRead(8);
}
if ((digitalRead(8) != value) && (onece == 1)) {
startTime = micros(); // ★ここが「スタートボタン」を押した瞬間
duration = micros() - startTime;
lasttime=duration;
value = digitalRead(8);
onece = 0;
}
if ((duration - lasttime >= 100000) && (onece == 0)) {
Serial.print(0);
Serial.print(":");
Serial.println(data[0]);
for (int i = 0; i < count-1; i++) {
Serial.print(i+1);
Serial.print(":");
Serial.println(data[i + 1] - data[i]);
}
onece = 1;
count = 0;
value = 1;
delay(2000);
}
}
上記のプログラムを実行してリモコンのボタンを押すとシリアルモニタに データが表示されます。 以下がリモコンの値になります。(一部抜粋)
0:3376
1:1672
2:428
3:380
4:456
5:1256
6:420
7:388
8:448
9:1256
10:416
11:396
12:440
13:1252
14:424
15:388
16:448
17:1252
18:416
19:396
20:456
21:1240
22:424
23:400
24:436
25:1252
26:428
27:1256
28:420
29:392
30:448
31:1228
32:440
33:396
34:440
35:1256
36:420
37:1228
38:456
39:1248
40:416
41:1252
42:420
43:404
44:440
45:396
46:444
47:396
48:440
49:1252
50:424
51:388
52:448
53:1228
54:444
55:392
56:444
57:400
58:436
59:1256
60:428
61:396
62:440
63:396
64:440
65:392
66:448
67:388
68:448
69:1228
70:440
71:1236
72:440
73:392
74:444
75:1228
76:456
77:384
78:452
79:384
80:452
81:392
82:448
83:1228
84:448
85:388
86:440
87:396
88:444
89:396
90:440
91:1228
92:448
93:388
94:456
95:1220
96:456
97:1228
98:432
99:5028
シリアルモニターではこのようなデータが5回繰り返されていました。 これから考えると0~99までの100個のデータが電源の信号になっているようです。