連接紅外接收頭到 Arduino:
VCC -> Arduino 5V
GND -> Arduino GND
OUT 或 DATA -> Arduino 數字引腳( D11)
連接繼電器模塊到 Arduino:
VCC -> Arduino 5V
GND -> Arduino GND
IN 或 SIG -> Arduino 數字引腳( D10)
使用帶紅外遙控的手機,先用串口讀出某鍵的值,作為后面代碼中控制燈泡的值。
本例還加上普通紅外遙控的一個鍵值。- #include <IRremote.hpp> // 使用IRremote庫
- const int RECV_PIN = 11; // 紅外接收頭連接的數字引腳
- const int RELAY_PIN = 10; // 繼電器連接的數字引腳
- bool lightState = false; // 記錄燈的當前狀態:false表示關,true表示開
- void setup() {
- Serial.begin(9600);
- IrReceiver.begin(RECV_PIN, ENABLE_LED_FEEDBACK); // 啟動紅外接收
- pinMode(RELAY_PIN, OUTPUT);
- digitalWrite(RELAY_PIN, LOW); // 確保繼電器初始為斷開狀態,燈為關閉
- }
- void loop() {
- if (IrReceiver.decode()) { // 如果接收到紅外信號
- uint32_t receivedCode = IrReceiver.decodedIRData.decodedRawData;
- Serial.print("接收到紅外碼: 0x");
- Serial.println(receivedCode, HEX); // 在串口監視器打印按鍵碼
-
- // 檢查接收到的碼值是否是有效的鍵碼
- if (receivedCode == 0xBF40FF00 || receivedCode == 0xFE01FE01) {
- // 切換燈的狀態
- lightState = !lightState;
-
- if (lightState) {
- digitalWrite(RELAY_PIN, HIGH); // 吸合繼電器,燈亮
- Serial.println("燈已打開");
- } else {
- digitalWrite(RELAY_PIN, LOW); // 斷開繼電器,燈熄
- Serial.println("燈已關閉");
- }
- } else {
- Serial.println("無效的紅外碼");
- }
-
- IrReceiver.resume(); // 等待接收下一個信號
- }
- }
復制代碼 |