arduino 红外遥控器控制LED灯
/*
日期: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 = ;
int recvPin = ;//定义红外接收器的引脚为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 = -; //长按下的那个键 void setup() {
pinMode(ledPin, OUTPUT);
irrecv.enableIRIn(); // 初始化红外接收器
Serial.begin();
} 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, , );
longPressKey = KEY_CODE_THREE;
}
//长按 3 键的事件
if ( results.value == KEY_CODE_LONG_PRESS && longPressKey == KEY_CODE_THREE) {
flash(ledPin, , );
}
//按下 4 键的事件
if (results.value == KEY_CODE_FOUR ) {
fadeOn(, );
fadeOff(, );
longPressKey = KEY_CODE_FOUR;
}
//长按 4 键的事件
if ( results.value == KEY_CODE_LONG_PRESS && longPressKey == KEY_CODE_FOUR) {
fadeOn(, );
fadeOff(, );
}
} // 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 = ; value < ; value += increament) {
Serial.println(value);
analogWrite(ledPin, value);
delay(time / ( / ));
}
}
//呼吸灯Off
void fadeOff(unsigned int time, int decreament) {
for (byte value = ; value > ; value -= decreament) {
Serial.println(value);
analogWrite(ledPin, value);
delay(time / ( / ));
}
}
arduino 红外遥控器控制LED灯的更多相关文章
- arduino入门学习实现语音控制LED灯
需要的准备的硬件arduino+PC+麦克风实现语音命令控制LED灯的亮灭. 首先需要将写好的arduino程序烧录到arduino uno主板中,下面是代码如下: int val;//定义变量val ...
- C#与Arduino通过串口通信来控制LED灯的状态
一.引言 最近摆弄了一段时间的Arduino,发现Arduino做一些电子类项目.监控.机器人.电子玩具比较容易,并且Arduino与.NET程序集成也不难.接下来介绍一个简单的小程序,C#做的一个W ...
- Arduino控制LED灯(开关控制)
问题:当使用"digitalRead(BUT) == 1"控制LED灯时会出现"digitalWrite(LED, ledState);"的值出现跳动. 原因: ...
- enc28J60 网页控制LED灯
软件IDE:Arduino 1.6.3 1.库的安装: 从https://github.com/jcw/ethercard 下载源码包,解压,复制ethercard-master文件夹到Arduino ...
- 嵌入式Linux学习入门:控制LED灯
记录自己linux学习过程,让自己能够一直坚持下去 1.原理图分析: nLED_1, nLED_2, nLED_4, 给低电平则对应LED灯亮,高电平则对应LED灯灭, S3C2440芯片GPF4-G ...
- BLE 安卓APP控制LED灯的实现(转)
源:BLE 安卓APP控制LED灯的实现 //注:参考AmoMcu源代码修改. 打开APP,检查蓝牙是否打开 BluetoothAdapter mBluetoothAdapter; final Blu ...
- 云中树莓派(4):利用声音传感器控制Led灯
云中树莓派(1):环境准备 云中树莓派(2):将传感器数据上传到AWS IoT 并利用Kibana进行展示 云中树莓派(3):通过 AWS IoT 控制树莓派上的Led 云中树莓派(4):利用声音传感 ...
- 树莓派开机运行Python脚本 控制LED灯闪烁
一.新建一个开机运行文件 在 /home/pi/.config 下创建一个文件夹,名称为 autostart,并在该文件夹下创建一个led.desktop文件(文件名以.desktop结尾) 编辑le ...
- 点亮Arduino内置的LED灯
更新记录 2022年4月16日:本文迁移自Panda666原博客,原发布时间:2021年9月3日. 15块软妹币的板子镇楼. 上一篇配置好了开发环境,然后就开始搞第一个小灯的实验了. 原理相当的简单, ...
随机推荐
- 9G10内核时钟tick实现
9G10中PIT(Periodic Interval Timer)提供OS调度中断,它提供了最高精度和最有效的管理(即使系统长时间响应).一. 硬件PIT目标是提供OS的周期中断.PIT提供一个可编程 ...
- python format
python自2.6后,新增了一种格式化字符串函数str.format(),威力十足,可以替换掉原来的% 注:以下操作版本是python2.7 映射示例 语法 通过{} 和 : 替换 % 通过位置 ...
- 将hadoop源代码导入eclipse
1. 安装JDK,eclipse,下载hadoop源代码并解压到某一个目录. 2. 安装maven,将bin目录添加到PATH环境变量中. 3. 安装protobuf2.5.0,将protoc-2.5 ...
- 改变对update的做法
以前都是 先根据id或者其他条件查出来 再根据查出来的结果 进行修改 再update提交 这里可以改所有的字段 现在是做法 是直接new 一个 Do或者Vo 把要改变的值 先填充进去 然后再去 ...
- linux:指令与档案的搜索
linux下的五种搜索方法(参考自鸟哥linux私房菜基础篇): 一.find :功能很强大,直接搜寻整个硬碟的(速度不是很快,如果系统硬碟较旧的话)----特色:find后面可以接多个目录搜索,它本 ...
- Unity3D 基于预设(Prefab)的泛型对象池实现
背景 在研究Inventory Pro插件的时候,发现老外实现的一个泛型对象池,觉得设计的小巧实用,不敢私藏,特此共享出来. 以前也看过很多博友关于对象池的总结分享,但是世界这么大,这么复杂到底什么样 ...
- 3n+1问题
猜想: 对于任意大于1的自然数n,若n为奇数,则将n变为3n+1,否则变为n的一半. 经过若干次这样的变换,一定会使n变为1.例如3->10->5->16->8->2-& ...
- 纪念我sgu第一个10题!
哎,等下次再做20题纪念一下!尼玛,根本做不出来,还要到处翻别人的555555555555
- Hdu-3487 Splay树,删除,添加,Lazy延迟标记操作
HDU_3487 题意:给出n和q,n代表1-n的序列,接下来q有两种操作,Cut a b c:表示把区间[a,b]截掉然后放在第c个数的后面,Flip a b 表示把区间[a,b]反转,经过一系列的 ...
- [原创]java WEB学习笔记75:Struts2 学习之路-- 总结 和 目录
本博客的目的:①总结自己的学习过程,相当于学习笔记 ②将自己的经验分享给大家,相互学习,互相交流,不可商用 内容难免出现问题,欢迎指正,交流,探讨,可以留言,也可以通过以下方式联系. 本人互联网技术爱 ...