老人家吧 关注:63贴子:847
  • 0回复贴,共1

Arduino 用红外遥控控制外部中断让LED灯(继电器)开关

只看楼主收藏回复

本源码内带软件消抖,可以实时控制LED灯(或继电器)开关.这个程序可以用来遥控任何电器开关,(只要把LED换成继电器),本源码适合Arduino UNO和Arduino NANO(其它开发版我没试).
本源码为了让大家更好理解,所有语句都带有解释,若还不懂,可以留言我(老人家).
话不多说了,所有接线图都在源码里写着.
源码如下:
int pbIn = 0; // 定义中断引脚为0,也就是监听D2引脚的变化.
int ledOut = A0; // LED正极插在A0引脚,负极接GND
volatile int state = LOW; // 定义LED默认输入状态
int time1=0,time2;//存储遥控操作间隔时间,(消抖)
void stateChange(){
time2 = millis();//获取Arduino运行时间毫秒
if(time2-time1>=90){//定义间隔时间90毫秒,简单消抖
state=!state;//改变LED开关状态
time1=time2;//存储最后一次时间,用来准备下次对比下次操作时间.
}
else {
time1=time2;//同上,存储最后一次操作时间.
}
digitalWrite(ledOut, state);//开关LED
}
void setup(){ // 置ledOut引脚为输出状态
pinMode(ledOut, OUTPUT); // 监视中断输入引脚的变化
attachInterrupt(pbIn, stateChange, CHANGE); //中断函数
}
void loop() { //这里随便写代码,或函数.
}
//以下函数说明:D2引脚有信号输入就执行本函数,
//信号输入间隔时间必须超过90毫秒,否则不做任何操作.
//符合间隔时间就循环改变state状态(改变LED开关状态),


IP属地:福建来自Android客户端1楼2016-12-13 23:14回复