Arduino UNO R3のUSBシリアル変換のbaud rate(ボーレート)は115200が上限かと思っていたが,
Serial.begin(115200*32);
32倍まで可能でした.
少し気持ちが悪いが,実際には34倍くらいまで可?
Arduino UNO R3のUSBシリアル変換のbaud rate(ボーレート)は115200が上限かと思っていたが,
Serial.begin(115200*32);
32倍まで可能でした.
少し気持ちが悪いが,実際には34倍くらいまで可?
赤外線リモコンの受信ができた物を仮想シリアルポート経由でPCに送り,アプリケーションで仮想的にキーを押したようなイベントを出させるようなプログラムを検討中.
その前に,シリアル通信のプログラムを作っていると...
Arduino UNO R3のUSBシリアル変換のbaud rate(ボーレート)は115200が上限かと思っていたが,
Serial.begin(115200*2);
でも
Serial.begin(115200*4);
でも可能であることに気づいた.
実際にどこまで可能であるか???
Arduino UNOと赤外線リモコン受信モジュールを購入してつないだので,
つぎはスケッチの作成.
とりあえず以下のようなコードにしてみた.
#define NUM_LIMIT 80
const int pin = 8; // 赤外線リモコン受信モジュール
const int led = 13; // 表示器
unsigned long dura[NUM_LIMIT];
void setup () {
pinMode(pin, INPUT);
pinMode(led, OUTPUT);
Serial.begin(115200);
digitalWrite(led, LOW);
}
void loop () {
int mode;
char str[64];
unsigned long duration;
// 格納場所を0で埋めておく
for (int i = 0; i < NUM_LIMIT; i++)
dura[i] = 0;
mode = HIGH; // 使用モジュールに合わせて設定(負論理: HIGH)
int i = 0;
// pinが最初にLOWになるで待機する.
while(digitalRead(pin) == mode);
do {
// 次にHIGHになるまで測る(?s)
duration = pulseIn(pin, mode, 18500);
// duration = 0: タイムアウト
if (duration == 0) {
// とりあえず何か値を入れる
dura[i] = 20000;
} else {
// 測った時間を格納する
dura[i] = duration;
}
// カウントアップ
i++;
} while (duration != 0 && i < NUM_LIMIT);
// どこまで値を埋めたのかを確認する.
int count = 0;
for (count = 0; i < NUM_LIMIT && dura[count] != 0; count++);
// データ送信開始の合図の内容作成
sprintf(str, "START: %03d", count);
// データ送信開始の合図送信
Serial.println(str);
// データ送信
for (int i = 0; i < count; i++) {
sprintf(str, "%05d", dura[i]);
Serial.println(str);
}
// データ送信終了の合図送信
Serial.println("END");
}
参考: 赤外線リモコンコード解析
リモコン受信器を作製していて気づいたことがある.
蛍光灯の光は点灯時は反応しないが,
点滅時,点灯開始時にはリモコン受信モジュールが反応することがある.
また,
暗い部屋ではリモコン受信モジュールの受光部にリモコンを向けなくても十分に反応する.
リモコンの反応する範囲について...あーこうなっているのか...と感じた
Arduino UNOを購入した.
とりあえず赤外線リモコンの受信側を作ってみようと思って準備を始めてしまった.
まずは,秋葉原で...と思っていってみると,
赤外線リモコン受信モジュールなる物が売られておりそれを使えばリモコンのLEDのON/OFFを読み取ることは可能であることまでわかった.
今のところハードは,「Arduinoで学習リモコン」と同じ.
(Arduino UNOであることが異なる.ブレッドボードも買った.)