硬件

Arduino Leonardo
红外接收模块
红外遥控



接线

Leonardo 红外接收模块
5V VCC
GND GND
信号引脚 7

程序

#include <Keyboard.h>//键盘库
#include <IRremote.h>//红外接收库文件
int PIN_RECV = 7;//红外接收引脚为7  OUTPUT1 7
IRrecv irrecv(PIN_RECV);//定义IR接收对象
decode_results results;//定义IR接收到的编码结果
#define _F5_ 16 //按下红外遥控的值……从头开始
#define up 11  //向上切换PPT
#define down 12 //向下切换PPT
#define _esc_ 17 //退出全屏
#define ok 15 //从当前开始
bool flag;//红外标识
int label;
void setup() {// put your setup code here, to run once:Serial.begin(9600);//初始化波特率irrecv.enableIRIn();    //开启IR接收
}void loop() {// put your main code here, to run repeatedly:if(hongwai(_esc_)){Keyboard.press(KEY_ESC);//escKeyboard.releaseAll();}if(hongwai(down)){Keyboard.press(KEY_RIGHT_ARROW);//-->Keyboard.releaseAll();}if(hongwai(up)){Keyboard.press(KEY_LEFT_ARROW);//<--Keyboard.releaseAll();}if(hongwai(_F5_)){Keyboard.press(KEY_F5);//f5Keyboard.releaseAll();}if(hongwai(ok)){Keyboard.press(KEY_RIGHT_SHIFT);//ShiftKeyboard.press(KEY_F5);//f5 Keyboard.releaseAll();}
}bool hongwai(int r){//红外遥控键值判断flag=false;if (irrecv.decode(&results)) {Serial.println(results.value,HEX);switch(results.value){//1case 0xFFA25D:label=1;break;//2case 0xFF629D:label=2;break;//3case 0xFFE21D:label=3;break;//4case 0xFF22DD:label=4;break;//5case 0xFF02FD:Serial.println("5");label=5;break;//6case 0xFFC23D:label=6;break;//7case 0xFFE01F:label=7;break;//8case 0xFFA857:label=8;break;//9case 0xFF906F:label=9;break;//0case 0xFF9867:label=0;break;//upcase 0xFF18E7:label=11;break;//downcase 0xFF4AB5:label=12;break;//leftcase 0xFF10EF:label=13;break;//rightcase 0xFF5AA5:label=14;break;//okcase 0xFF38C7:label=15;break;  //*case 0xFF6897:label=16;break;//#case 0xFFB04F:label=17;break;//elsedefault:break;}irrecv.resume(); // 接收下一个值}if(label==r) {flag=true;//确定返回label=99;//复位}return flag;
}

效果视频

https://v.youku.com/v_show/id_XNDA3NzU3NjI0OA==.html?spm=a2h3j.8428770.3416059.1

程序下载

https://download.csdn.net/download/m0_37738838/10974430

附录( keyboard库介绍)

见文知义keyboard库,功能就是将arduino 模拟成一个usb键盘。 Api如下
Keyboard.begin()
Keyboard.end()
Keyboard.press()
Keyboard.print()
Keyboard.println()
Keyboard.release()
Keyboard.releaseAll()
Keyboard.write()

Keyboard. press (键值); 输入:键值
如Keyboard. press(‘A’);
如Keyboard. press(KEY_LEFT_GUI);//左win 实际输出:
模拟usb键盘上键值所对应按键被按下

输入键值与按键的对应关系见键值表

Keyboard.release(键值) 输入:键值
如Keyboard.release(‘A’);
如Keyboard.release(KEY_LEFT_GUI);//左win 实际输出: 模拟usb键盘上键值所对应按键被松开

输入键值与按键的对应关系见键值表

PS:Keyboard. press()和Keyboard.release()请成对使用,防止出现按键被按下没有松开的情况

Keyboard.print(character);//模拟键盘敲出一个字符 Keyboard.print(characters);//模拟键盘敲出一串字符的过程 输入:字符或字符串
如Keyboard.print(“A”);
Keyboard.print(“ABCDE”); 实际输出
模拟在usb键盘上敲出单个字符或字符串的过程

Keyboard.println(character)// 模拟键盘敲出一个字符并添加换行的过程 Keyboard.println(characters)// 模拟键盘敲出一串字符并添加换行的过程 输入:字符或字符串
如Keyboard.print(“A”);
Keyboard.print(“ABCDE”); 实际输出
模拟在usb键盘上敲出单个字符或字符串并添加换行的过程

Keyboard.releaseAll() 输入:无

实际输出:释放所有按键;

键值表:
【from keyboard.h/keyboard.cpp】

一,宏定义部分
【输入宏定义】
#define KEY_LEFT_CTRL 0x80
#define KEY_LEFT_SHIFT 0x81
#define KEY_LEFT_ALT 0x82
#define KEY_LEFT_GUI 0x83
#define KEY_RIGHT_CTRL 0x84
#define KEY_RIGHT_SHIFT 0x85
#define KEY_RIGHT_ALT 0x86
#define KEY_RIGHT_GUI 0x87
#define KEY_UP_ARROW 0xDA
#define KEY_DOWN_ARROW 0xD9
#define KEY_LEFT_ARROW 0xD8
#define KEY_RIGHT_ARROW 0xD7
#define KEY_BACKSPACE 0xB2
#define KEY_TAB 0xB3
#define KEY_RETURN 0xB0
#define KEY_ESC 0xB1
#define KEY_INSERT 0xD1
#define KEY_DELETE 0xD4
#define KEY_PAGE_UP 0xD3
#define KEY_PAGE_DOWN 0xD6
#define KEY_HOME 0xD2
#define KEY_END 0xD5
#define KEY_CAPS_LOCK 0xC1
#define KEY_F1 0xC2
#define KEY_F2 0xC3
#define KEY_F3 0xC4
#define KEY_F4 0xC5
#define KEY_F5 0xC6
#define KEY_F6 0xC7
#define KEY_F7 0xC8
#define KEY_F8 0xC9
#define KEY_F9 0xCA
#define KEY_F10 0xCB
#define KEY_F11 0xCC
#define KEY_F12 0xCD

二,ascii 码部分
【输入注释里的字符的ascii码】
0x2a, // BS Backspace
0x2b, // TAB Tab
0x28, // LF Enter
0x2c, // ’ ’
0x1e|SHIFT, // !
0x34|SHIFT, // "
0x20|SHIFT, // #
0x21|SHIFT, // $
0x22|SHIFT, // %
0x24|SHIFT, // &
0x34, // ’
0x26|SHIFT, // (
0x27|SHIFT, // )
0x25|SHIFT, // *
0x2e|SHIFT, // +
0x36, // ,
0x2d, // -
0x37, // .
0x38, // /
0x27, // 0
0x1e, // 1
0x1f, // 2
0x20, // 3
0x21, // 4
0x22, // 5
0x23, // 6
0x24, // 7
0x25, // 8
0x26, // 9
0x33|SHIFT, // :
0x33, // ;
0x36|SHIFT, // <
0x2e, // =
0x37|SHIFT, // >
0x38|SHIFT, // ?
0x1f|SHIFT, // @
0x04|SHIFT, // A
0x05|SHIFT, // B
0x06|SHIFT, // C
0x07|SHIFT, // D
0x08|SHIFT, // E
0x09|SHIFT, // F
0x0a|SHIFT, // G
0x0b|SHIFT, // H
0x0c|SHIFT, // I
0x0d|SHIFT, // J
0x0e|SHIFT, // K
0x0f|SHIFT, // L
0x10|SHIFT, // M
0x11|SHIFT, // N
0x12|SHIFT, // O
0x13|SHIFT, // P
0x14|SHIFT, // Q
0x15|SHIFT, // R
0x16|SHIFT, // S
0x17|SHIFT, // T
0x18|SHIFT, // U
0x19|SHIFT, // V
0x1a|SHIFT, // W
0x1b|SHIFT, // X
0x1c|SHIFT, // Y
0x1d|SHIFT, // Z
0x2f, // [
0x31, // bslash
0x30, // ]
0x23|SHIFT, // ^
0x2d|SHIFT, // _
0x35, // `
0x04, // a
0x05, // b
0x06, // c
0x07, // d
0x08, // e
0x09, // f
0x0a, // g
0x0b, // h
0x0c, // i
0x0d, // j
0x0e, // k
0x0f, // l
0x10, // m
0x11, // n
0x12, // o
0x13, // p
0x14, // q
0x15, // r
0x16, // s
0x17, // t
0x18, // u
0x19, // v
0x1a, // w
0x1b, // x
0x1c, // y
0x1d, // z
0x2f|SHIFT, // {
0x31|SHIFT, // |
0x30|SHIFT, // }
0x35|SHIFT, // ~

Arduino 制作PPT红外控制器相关推荐

  1. 用米思齐(mixly)或者Arduino制作红外线遥控灯

    ----用米思齐(mixly)或者Arduino制作红外线遥控灯 一.先设置红外线遥控和LED灯的端口 二.在面包板上把LED灯的电路接好,注意要接电阻! 三.Arduino代码 #include & ...

  2. 教你高效地学习和制作PPT

    作为一名学术人士,在埋首文献.实验之余,向他人清晰阐述自己的研究内容也同等重要.学术成果汇报,参加国内外研究会议,甚至是求职,一场高质量的报告能更好的展示自己的工作成果. 做报告本身也是一个帮助你系统 ...

  3. 使用reveal.js制作PPT,并部署至GitHub

    折腾了一天把PPT做好,经历千辛万苦终于上传到Github上实现预览,记下啦,以免下次再用的时候忘掉 制作PPT 一.安装reveal.js 1.基本安装(我觉得写个PPT,基本安装就可以啦) clo ...

  4. ppt格式刷快捷键_高效地制作PPT

    制作PPT是老师必不可少的工作,高效率地制作PPT能够帮助老师节约时间,但是如何高效率地制作PPT呢?其实说到效率,粉笔君认为习惯很重要,一些好的操作习惯能够帮你事半功倍.(以下操作是在PowerPo ...

  5. 怎么制作升温曲线图_利用金字塔原理制作PPT,完整有逻辑

    你还在不假思索地套用PPT模板吗? 事实上,我在做给朋友们做PPT,前提工作是花费大部分时间的.因为在执行制作,美化PPT的时候,还要捋顺PPT的逻辑结构,怎么把一块块内容串联起来. 对于PPT的逻辑 ...

  6. 网线制作ppt_快速制作PPT技巧!

    为什么同样的PPT,你花费了一天,我却只用了一小时? 在我仔细观察了一些制作人员的操作后,总结了如下实用技巧! 01自定义访问工具栏 在PPT中我们有很多的常用操作,例如 「左对齐/右对齐」 「置于底 ...

  7. excel python插件_如何利用Excel与Python制作PPT

    对外汉语课堂中需要制作PPT.有些PPT的版式是相对固定的,如果数量巨大的话,可以利用python的pptx插件,与excel相结合,制作PPT.完整工作流有些复杂,所以分为4个部分来说明. PPT准 ...

  8. thinkphp5 图片压缩旋转_有非常多的图片,该怎么制作PPT?

    hello,大家好,我是利兄~ 上周有一位粉丝朋友问我:"多张图片的PPT到底该如何排版,有什么小妙招没?" 所以,今天,我们就来聊聊PPT中多图排版的问题? 通常情况下,遇到多张 ...

  9. 字体在ppt中可以整体替换吗_制作PPT必备的6个技巧,个个让人相见恨晚!你确定不来学一学?...

    制作一份简单的PPT,相信大家都会,但是想要快速制作出一份好看又精致的PPT,还是需要一些技巧来辅助. 那么今天小编就来给大家分享6个好用的PPT技巧,下面就一起来看看吧~ 一.批量技巧 1.批量排版 ...

最新文章

  1. JVM - 要上线了,JVM参数还没正儿八经的估算过咋办?
  2. 信息系统项目管理师优秀论文:项目风险管理--jiangyiwu
  3. Applese 的大奖
  4. java中super可以重新父类么_Java Super 覆盖方法
  5. 2017 Material design 第二章第六节《富有创造性的定制方案》
  6. 把一个dataset的表放在另一个dataset里面_现在开始:用你的Mac训练和部署一个图像分类模型...
  7. 路由器 刷 linux系统版本,在Linux下用tftp刷写路由器固件
  8. 托管式服务网格:多种类型计算服务统一管理的基础设施
  9. Repeater双重绑定(子菜单前台代码:)
  10. 81岁自学编程,苹果最高龄iOS开发者:阻碍你实现梦想的,从来就不是年龄
  11. 数学建模—一元回归分析
  12. 左程云算法课堂笔记(初级1)
  13. WDF驱动中访问 PCI 设备配置空间
  14. 交换机端口与MAC绑定
  15. python多态和鸭子类型
  16. 【ELM预测】探路者算法优化极限学习机预测(含前后对比)【含Matlab源码 2204期】
  17. Python PyQt5安装 找不到Qt 平台 无法初始化
  18. (10)stata的基本使用--短面板数据处理
  19. 小程序开发遇见的常见问题
  20. mysql食堂系统E R图_饭卡管理系统学生E-R图

热门文章

  1. java pdf 转word源码_Java 实现word模板转为pdf
  2. 开源项目推荐:CNC+CRC/SoftPLC/OpenCASCADE/CAD/CAM(三)
  3. Python 考试练习题 3
  4. Shellshock漏洞那些事:网络安全噩梦的开始
  5. 教育游戏的动机、成效及若干问题之探讨
  6. 香港中文大学(深圳)招收全奖博士生
  7. 安科瑞「解决方案」消防产品解决方案及上图方案
  8. 安卓源码分析(一)目录说明
  9. Error Code 1318 Incorrect number of arguments for PROCEDUR
  10. Halcon一维测量中边缘提取相关算子(Measure_pos和Measure_pairs)