arduino 红外遥控器控制LED灯
2016-09-01 11:47
465 查看
/* 日期:2016.9.1 功能:红外遥控器控制LED灯 开,关,闪烁,呼吸 元件: 跳线公公头 * 5 led 220欧电阻 红外接收管,红外遥控 接线: 红外灯面向自己从左到右分别接 IO3 ,GND ,5V LED 负极接GND 正极串联电阻接 IO5 红外遥控器键盘1-9编码: FF30CF 1 FF18E7 2 FF7A85 3 FF10EF 4 FF38C7 5 FF5AA5 6 FF42BD 7 FF4AB5 8 FF52AD 9 参考:http://www.arduino.cn/thread-3259-1-1.html */ #include <IRremote.h> int ledPin = 5; int recvPin = 3;//定义红外接收器的引脚为3 IRrecv irrecv(recvPin); decode_results results; long KEY_CODE_ONE = 0xFF30CF; long KEY_CODE_TWO = 0xFF18E7; long KEY_CODE_THREE = 0xFF7A85; long KEY_CODE_FOUR = 0xFF10EF; long KEY_CODE_LONG_PRESS = 0xFFFFFFFF; long longPressKey = -1; //长按下的那个键 void setup() { pinMode(ledPin, OUTPUT); irrecv.enableIRIn(); // 初始化红外接收器 Serial.begin(9600); } void loop() { if (irrecv.decode(&results)) { Serial.println(results.value, HEX);//以16进制换行输出接收代码 Serial.println();//为了便于观看输出结果增加一个空行 irrecv.resume(); // 接收下一个值 } //按下1键的事件 if (results.value == KEY_CODE_ONE ) { ledOn(ledPin); longPressKey = KEY_CODE_ONE; } //长按1键的事件 if ( results.value == KEY_CODE_LONG_PRESS && longPressKey == KEY_CODE_ONE) { ledOn(ledPin); } //按下2键的事件 if (results.value == KEY_CODE_TWO ) { ledOff(ledPin); longPressKey = KEY_CODE_TWO; } //长按 2键的事件 if ( results.value == KEY_CODE_LONG_PRESS && longPressKey == KEY_CODE_TWO) { ledOff(ledPin); } //按下 3 键的事件 if (results.value == KEY_CODE_THREE ) { flash(ledPin, 100, 100); longPressKey = KEY_CODE_THREE; } //长按 3 键的事件 if ( results.value == KEY_CODE_LONG_PRESS && longPressKey == KEY_CODE_THREE) { flash(ledPin, 100, 100); } //按下 4 键的事件 if (results.value == KEY_CODE_FOUR ) { fadeOn(1000, 5); fadeOff(1000, 5); longPressKey = KEY_CODE_FOUR; } //长按 4 键的事件 if ( results.value == KEY_CODE_LONG_PRESS && longPressKey == KEY_CODE_FOUR) { fadeOn(1000, 5); fadeOff(1000, 5); } } // led亮灯 void ledOn(int ledPin) { digitalWrite(ledPin, HIGH); } // led熄灯 void ledOff(int ledPin) { digitalWrite(ledPin, LOW); } //led闪烁 void flash(int ledPin, long highDuration, long lowDuration) { digitalWrite(ledPin, HIGH); delay(highDuration); digitalWrite(ledPin, LOW); delay(lowDuration); } //呼吸灯On void fadeOn(unsigned int time, int increament) { for (byte value = 0 ; value < 255; value += increament) { Serial.println(value); analogWrite(ledPin, value); delay(time / (255 / 5)); } } //呼吸灯Off void fadeOff(unsigned int time, int decreament) { for (byte value = 255; value > 0; value -= decreament) { Serial.println(value); analogWrite(ledPin, value); delay(time / (255 / 5)); } }
相关文章推荐
- Arduino 实验2 - 控制LED闪烁
- arduino按钮控制LED
- 基于Arduino+LabVIEW的串口控制LED亮灭
- Arduino应用笔记(三)这一篇和(二)方法不同:Matlab利用串口通信控制Arduino点亮LED
- 【Arduino官方教程第一辑】示例程序 4-6 串口控制LED
- Arduino学习笔记——按钮控制LED
- Arduino多LED控制软硬件设计
- LeapMotion+Processing+Arduino 控制LED灯的亮与灭
- Arduino 通过串口字符串控制LED开关
- arduino学习之led相关--跑马灯+电位器控制led亮灭
- Arduino 各种模块篇 蓝牙模块 手机蓝牙控制Arduino LED灯
- 用网页控制Arduino LED
- arduino中使用光敏电阻控制LED灯
- arduino 蓝牙控制RGB LED灯
- Arduino应用笔记(二)Matlab控制Arduino点亮一个LED灯
- arduino入门学习实现语音控制LED灯
- Arduino 用两个按键分别控制两个LED灯点亮
- arduino学习系列——按键控制LED灯
- 树莓派通过I2C总线控制Arduino点亮LED灯
- arduino 控制led灯亮度强弱变化的经典代码