見出し画像

M5StickCで赤外線受信

1.カラー液晶付きマイコン
https://www.amazon.co.jp/…/ref=cm_sw_em_r_mt_dp_36KGFbA90GX…
2.uxcell 赤外線受信機 HS0038 3ピン 赤外線リモコン受信モジュール
https://www.amazon.co.jp/…/ref=cm_sw_em_r_mt_dp_daLGFb13J7A…

結線
M5StickC⇔HS0038
G26⇔1番ピン
GND⇔2番ピン
3V3⇔3番ピン
※HS0038のVCCは3.3Vの方に繋いで下さい
5Vの方に繋ぐと動かないです

画像1

画像2

画像3

Arduinoコード
赤外線リモコンの送信データに合わせて受信データ部分を書き換えて下さい

//各ライブラリ
#include <M5StickC.h>
#include <Arduino.h>
#include <IRrecv.h>
#include <IRremoteESP8266.h>
#include <IRac.h>
#include <IRtext.h>
#include <IRutils.h>

const uint16_t kRecvPin = 26; //赤外線受信ピン
const uint32_t kBaudRate = 115200; //シリアルモニタ用ボーレート
const uint16_t kCaptureBufferSize = 1024; //受信データ格納バッファ数(赤外線ON/OFFの時間を格納)

//kTimeout = 赤外線データの終了を判断するmsの値(kTimeoutミリ秒間受信がなければ終了と判断する)
const uint8_t kTimeout = 15; //15ms

const uint16_t kMinUnknownSize = 12; //不明な赤外線受信をカットするための変数
#define LEGACY_TIMING_INFO false

String maker_code = ""; //メーカーコード挿入変数
String recv_code = ""; //受信コード挿入変数
uint16_t recv_bits; //受信コード総ビット数挿入変数
uint16_t recv_onoff_bits; //ONOFF回数挿入変数
uint64_t recv_data; //受信データ挿入変数

IRrecv irrecv(kRecvPin, kCaptureBufferSize, kTimeout, true); //IRrecv(赤外線受信ピン、受信データ格納バッファサイズ、データ終了判断時間、値保存機能(true推奨))
decode_results results; //受信結果を保存するクラスのインスタンスを生成

/* 初期設定 */
void setup() {

Serial.begin(kBaudRate, SERIAL_8N1);

while (!Serial) // Wait for the serial connection to be establised.
delay(50);
Serial.printf("\n" D_STR_IRRECVDUMP_STARTUP "\n", kRecvPin);

#if DECODE_HASH
irrecv.setUnknownThreshold(kMinUnknownSize); //不明な赤外線受信データは除外する
#endif
irrecv.enableIRIn(); //赤外線受信開始

Serial.println("IR Start");

// Initialize the M5StickC object
M5.begin();

// LCD display
M5.Lcd.println("IR Start 0920 16:00");
}

void loop() {
//Serial.println("IR "); //メーカーコード出力
if (irrecv.decode(&results)) { //赤外線受信があれば

recv_code = resultToHexidecimal(&results); //赤外線受信データを16進数で取得
Serial.println("Code : " + recv_code); //赤外線受信データを16進数で表示

if (recv_code == "0xFFA25D") {
Serial.println("ON/OFF");
M5.Lcd.setCursor(0, 25);
M5.Lcd.printf("ON/OFF ");
}
if (recv_code == "0xFFE21D") {
Serial.println("Setting");
M5.Lcd.setCursor(0, 25);
M5.Lcd.printf("Setting ");
}
if (recv_code == "0xFF02FD") {
Serial.println("COL");
M5.Lcd.setCursor(0, 25);
M5.Lcd.printf("COL ");
}
if (recv_code == "0xFF9867") {
Serial.println("H01");
M5.Lcd.setCursor(0, 25);
M5.Lcd.printf("H01 ");
}
if (recv_code == "0xFF38C7") {
Serial.println("H02");
M5.Lcd.setCursor(0, 25);
M5.Lcd.printf("H02 ");
}

Serial.println("");

Serial.println();

}

}

この記事が気に入ったらサポートをしてみませんか?