/*
日期: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灯的更多相关文章

  1. arduino入门学习实现语音控制LED灯

    需要的准备的硬件arduino+PC+麦克风实现语音命令控制LED灯的亮灭. 首先需要将写好的arduino程序烧录到arduino uno主板中,下面是代码如下: int val;//定义变量val ...

  2. C#与Arduino通过串口通信来控制LED灯的状态

    一.引言 最近摆弄了一段时间的Arduino,发现Arduino做一些电子类项目.监控.机器人.电子玩具比较容易,并且Arduino与.NET程序集成也不难.接下来介绍一个简单的小程序,C#做的一个W ...

  3. Arduino控制LED灯(开关控制)

    问题:当使用"digitalRead(BUT) == 1"控制LED灯时会出现"digitalWrite(LED, ledState);"的值出现跳动. 原因: ...

  4. enc28J60 网页控制LED灯

    软件IDE:Arduino 1.6.3 1.库的安装: 从https://github.com/jcw/ethercard 下载源码包,解压,复制ethercard-master文件夹到Arduino ...

  5. 嵌入式Linux学习入门:控制LED灯

    记录自己linux学习过程,让自己能够一直坚持下去 1.原理图分析: nLED_1, nLED_2, nLED_4, 给低电平则对应LED灯亮,高电平则对应LED灯灭, S3C2440芯片GPF4-G ...

  6. BLE 安卓APP控制LED灯的实现(转)

    源:BLE 安卓APP控制LED灯的实现 //注:参考AmoMcu源代码修改. 打开APP,检查蓝牙是否打开 BluetoothAdapter mBluetoothAdapter; final Blu ...

  7. 云中树莓派(4):利用声音传感器控制Led灯

    云中树莓派(1):环境准备 云中树莓派(2):将传感器数据上传到AWS IoT 并利用Kibana进行展示 云中树莓派(3):通过 AWS IoT 控制树莓派上的Led 云中树莓派(4):利用声音传感 ...

  8. 树莓派开机运行Python脚本 控制LED灯闪烁

    一.新建一个开机运行文件 在 /home/pi/.config 下创建一个文件夹,名称为 autostart,并在该文件夹下创建一个led.desktop文件(文件名以.desktop结尾) 编辑le ...

  9. 点亮Arduino内置的LED灯

    更新记录 2022年4月16日:本文迁移自Panda666原博客,原发布时间:2021年9月3日. 15块软妹币的板子镇楼. 上一篇配置好了开发环境,然后就开始搞第一个小灯的实验了. 原理相当的简单, ...

随机推荐

  1. 图像分割之(二)Graph Cut(图割)

    zouxy09@qq.com http://blog.csdn.net/zouxy09 上一文对主要的分割方法做了一个概述.那下面我们对其中几个比较感兴趣的算法做个学习.下面主要是Graph Cut, ...

  2. git 查看、创建、删除 本地,远程 分支

    1. 查看远程分支 git branch -rorigin/master 2. 查看本地分支 git branch *master 注:以*开头指明现在所在的本地分支 3. 查看本地分支和远程分支 g ...

  3. javascript设计模式学习之十二——享元模式

    一.享元模式的定义及使用场景 享元模式是为了解决性能问题而诞生的设计模式,这和大部分设计模式为了提高程序复用性的原因不太一样,如果系统中因为创建了大量类似对象而导致内存占用过高,享元模式就非常有用了. ...

  4. WCF笔记

    http://msdn.microsoft.com/en-us/library/system.servicemodel.dispatcher.iparameterinspector.aftercall ...

  5. HBase -- 基于HDFS的开源分布式NoSQL数据库

    HBase(Hadoop Database)是一个高可靠性.高性能.面向列.可伸缩的分布式存储系统,我们可以利用HBase技术在廉价的PC上搭建起大规模结构化存储集群.同Google的Bigtable ...

  6. 使用jquery的小记

    随便写点 1.给span这种标签赋值  不能用$("#id").val("abc"); 因为这种标签没有value属性 而应该用$("#id" ...

  7. css 正方体

    <!DOCTYPE html><html lang="zh-cmn-Hans"><head><meta charset="utf ...

  8. Fusioncharts使用说明

    背景 最近由于工作需要,再次接触到了Fusioncharts,但也有不足之处,现在官网上似乎是不支持flash的版本了,只能看到html5相关的javascript版本,无奈再次从网上搜索到了一些别人 ...

  9. Lintcode: Segment Tree Build

    The structure of Segment Tree is a binary tree which each node has two attributes start and end deno ...

  10. AIR 中的 File 对象 所访问的文件夹位置

    AIR 中的 File 对象 所访问的文件夹位置 Link 关于File.cacheDirectory的一点说明 According to the Apple guidelines, data tha ...