Arduino PowerPoint 指针
组件和用品
| × | 1 | ||||
| × | 1 | ||||
| × | 1 |
关于这个项目
上次我必须做 PowerPoint 演示时,一直手拿鼠标非常令人沮丧,这个功能的设计并不简单。
随着一个名为“Arduino 简介”的新演示即将到来,我想,展示 Arduino 板的一些功能的最佳方式是什么,然后用它构建一个快速的 Power Point 演示工具。
弹出的第一个想法是,“为什么不使用电视遥控器?”设计为比鼠标更符合人体工程学的位置(在这种情况下)。
<人物>
组件
对于这个项目,你需要:
1x 电视遥控器
1x Arduino Leonardo(也可以使用 UNO,但需要进行一些修改)
1x IR 传感器(我的是 VS1838B)
可选 - 我使用穿孔板构建了一个非常简单的屏蔽
<人物>连接组件
连接图很简单,简单的将传感器的GND连接到Arduino的GND引脚,传感器的5V连接到Arduino的5V引脚,将传感器的Data引脚连接到Arduino的Digital Pin 2。
<人物>
代码
代码部分分为两个步骤。在第一个中,您需要从电视遥控器读取要使用的键。为此,您将能够解码从遥控器发出的红外信号。
第二部分,我们将利用第一步的信息,将按键分配给新的功能,作为PowerPointer的指针。
首先下载 IRremote Arduino 库并将其安装在正确的文件夹中。您可以从那里下载。
不要忘记遵循github页面中推荐的安装过程。
第一步,将代码 1 上传到您的 Arduino。打开串口监视器窗口,如果一切正常,你应该每次按电视遥控器上的键开始不同的数字。
<人物>存储与您要使用的键对应的数字。就我而言,我使用了电视遥控器中的中央前进和后退键。
替换代码 2 中“If”结构中的我的数字并上传。
<人物>如果您使用的是 Arduino Leonardo,则在上传后,每次您按下选定的电视遥控器键时,它们都会充当键盘上的前进和后退箭头。
<人物>
在 PowerPoint 上
现在打开您的演示文稿,如果您处于“幻灯片模式”,则每次您从电视遥控器按之前选择的键时,幻灯片都会前后变化。
其他Arduino板
如果您使用其他 Arduino 板,我认为也可以构建此项目,但需要进行一些更改。
最大的不同是 Atmega8U2 或等效芯片,负责 ATmega328 和计算机之间的通信,需要刷机。我没有必要这样做,因为使用 Arduino Leonardo,零和 DUE 在定义并连接到您的计算机时显示为本地键盘或鼠标。
在forum.arduino.cc 中有一些关于这个主题的支持。
如果您进行此更改,请告诉我或在此项目页面中发布此信息,以便其他用户也能收到通知 :)
正常情况下,如果您发现任何错误,或者您有任何建议/改进或问题,请写信给我。
感谢阅读。
代码
- PPT_Pointer_Code_2.ino
- PPT_Pointer_Code_1.ino
PPT_Pointer_Code_2.inoArduino
#include#include "Keyboard.h"int RECV_PIN =2;IRrecvirrecv(RECV_PIN);decode_results results;int key_pressed;int last_key_pressed;void setup(){ Serial.begin(9600); ircv.enableIRIn(); // 启动接收器 Keyboard.begin();}void loop() {//Stuff 读取电视遥控器 if (irrecv.decode(&results)) { key_pressed =results.value; Serial.println(key_pressed);简历.resume(); // 接收下一个值 } if (key_pressed ==last_key_pressed) key_pressed =0; //我只想检查一次,按下了什么键 if (key_pressed ==18105) { //根据您要在远程键盘中使用的键更改此数字。press(KEY_RIGHT_ARROW);键盘.releaseAll(); } if (key_pressed ==-22951) {//根据您要在远程键盘中使用的键更改此数字。press(KEY_LEFT_ARROW);键盘.releaseAll(); } last_key_pressed =key_pressed;}
PPT_Pointer_Code_1.inoArduino
#includeint RECV_PIN =2;IRrecvirrecv(RECV_PIN);decode_results results;int key_pressed;void setup(){Serial.begin(9600); ircv.enableIRIn(); // 启动接收器}void loop() { if (irrecv.decode(&results)) { key_pressed =results.value; Serial.println(key_pressed);简历.resume(); // 接收下一个值 } delay(100);}
示意图
制造工艺