(自用)Arduino使用IRremote库自定义引脚发射红外信号

不知道是不是我的搜索方式有误,我搜到的有关Arduino使用IRremote库发射红外信号时,对于引脚的使用都是默认为在库函数里面定义了为pin 3,且不可修改,但我在库文件中查看之后发现实际上是可以在代码中对引脚进行修改的:

这是IRSend.hpp中对于IRSend的部分代码:

IRsend::IRsend(uint_fast8_t aSendPin) { // @suppress("Class members should be properly initialized")
    sendPin = aSendPin;
#  if !defined(NO_LED_FEEDBACK_CODE)
    setLEDFeedback(0, DO_NOT_ENABLE_LED_FEEDBACK);
#  endif
}

 下面是实际运用:

#include <IRremote.h>

#define IRledPin 12  // 设置你想要使用的红外发射器连接的引脚

IRsend irsend(IRledPin);  // 将引脚传递给IRsend对象

void setup() {
}

void loop() {
  for (int i = 0; i < 3; i++) {
    irsend.sendSony(0xa90, 12);  //发射Sony红外遥控协议A90指令码
    delay(40);
  }
  /*
   * IRremote库支持NEC, Sony, Philips RC5, Philips RC6等协议指令。
   * 本示例程序中Arduino将通过调用函数sendSony(0xa90, 12) 来发射Sony协议指令。
   * 该函数的两个参数中, 0xa90为指令信息内容,12位指令信息位数。
   * 
   * 假如需要发射NEC协议指令则可以调用函数sendNEC(0xF740BF, 32)。
   * 其中0xF740BF为指令信息内容,32位指令信息位数。
   * 
   * 如果需要发射其它遥控协议指令请参考以下程序代码:
   * sendNEC(unsigned long data, int nbits);   //发射NEC协议指令
   * sendSony(unsigned long data, int nbits);  //发射Sony协议指令
   * void sendRC5(unsigned long data, int nbits);   //发射Philips RC5协议指令
   * void sendRC6(unsigned long data, int nbits);   //发射Philips RC6协议指令
   * void sendSharp(unsigned long data, int nbits); //发射Sharp协议指令
   * void sendPanasonic(unsigned int address, unsigned long data); //发射Panasonic协议指令
   * void sendJVC(unsigned long data, int nbits, int repeat);  //发射JVC协议指令
   * void sendRaw(unsigned int buf[], int len, int hz);        //发射原始指令
   */
  delay(5000);  //延迟5秒
}

这样就将发射引脚定位为了pin 12,实测最终能够成功发出红外信号。

  • 3
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值