【雕爷学编程】Arduino 手册之USB Mouse(键盘) 您所在的位置:网站首页 k1100与k2100独显对比 【雕爷学编程】Arduino 手册之USB Mouse(键盘)

【雕爷学编程】Arduino 手册之USB Mouse(键盘)

2024-01-25 16:14| 来源: 网络整理| 查看: 265

在这里插入图片描述 在这里插入图片描述 什么是Arduino? Arduino 是一款开源的电子原型平台,它可以让你用简单的硬件和软件来创建各种创意的项目。无论你是初学者还是专家,Arduino 都能为你提供无限的可能性。你可以用 Arduino 来控制传感器、灯光、马达、机器人、物联网设备等等,只要你能想到的,Arduino 都能帮你实现。

如果你想了解更多关于 Arduino 的信息,你可以访问 Arduino 的官方网站,那里有丰富的资源和教程供你参考。你也可以加入 Arduino 的社区,和来自世界各地的爱好者、学生、设计师和工程师交流心得和经验。此外,你还可以使用 Arduino 的在线编程工具,在云端编写代码并上传到你的开发板上。

Arduino 是一个不断发展和创新的平台,它有着广泛的应用领域和潜力。这里希望本手册能激发你对 Arduino 的兴趣和热情,让你享受 Arduino 带来的创造力和乐趣。

维基百科的定义 Arduino 是一个开源嵌入式硬件平台,用来供用户制作可交互式的嵌入式项目。此外 Arduino 作为一个开源硬件和开源软件的公司,同时兼有项目和用户社群。该公司负责设计和制造Arduino电路板及相关附件。这些产品按照GNU宽通用公共许可证(LGPL)或GNU通用公共许可证(GPL)许可的开源硬件和软件分发的,Arduino 允许任何人制造 Arduino 板和软件分发。 Arduino 板可以以预装的形式商业销售,也可以作为 DIY 套件购买。

Arduino 2005 年时面世,作为意大利伊夫雷亚地区伊夫雷亚互动设计研究所的学生设计,目的是为新手和专业人员提供一种低成本且简单的方法,以建立使用传感器与环境相互作用的装置。初学者和爱好者可用Arduino制造传感器、简单机器人、恒温器和运动检测器等装置。

Arduino 这个名字来自意大利伊夫雷亚的一家酒吧,该项目的一些创始人过去常常会去这家酒吧。 酒吧以伊夫雷亚的 Arduin(Arduin of Ivrea)命名,他是伊夫雷亚边疆伯爵,也是 1002 年至 1014 年期间的意大利国王。

在这里插入图片描述

二十一、Arduino 之 USB Mouse(键盘) Arduino的USB Mouse(键盘)是一种利用Arduino的原生USB功能,将其模拟成一个USB鼠标或键盘的方法,可以实现对电脑的控制和输入。它的适用范围主要是在需要用Arduino实现一些特殊的人机交互的情况下,比如制作一个自定义的游戏控制器,一个无线遥控器,一个手势识别设备等。

主要应用场景: 1)自动化控制:通过模拟USB Mouse(或键盘),Arduino可以模拟人手操作鼠标或键盘的动作,从而实现自动化控制。例如,可以编写程序使Arduino模拟鼠标点击或键盘按键,用于自动化测试、远程控制或自动执行任务等场景。 2)交互装置:将Arduino配置为USB Mouse(或键盘),可以将其用作交互装置。例如,可以通过Arduino模拟鼠标移动和点击操作,实现与计算机或其他设备的交互。这在游戏控制器、触摸板或其他交互设备的制作中很常见。 3)数据记录和回放:通过Arduino模拟USB Mouse(或键盘),可以记录和回放鼠标或键盘的输入动作。这对于用户界面测试、教学演示或用户行为分析等方面很有用。Arduino可以记录用户的鼠标移动、点击或键盘输入,并将其保存为程序,然后可以回放这些动作,重现用户的操作过程。

Arduino的USB Mouse(键盘)的注意事项有以下几点: 1)Arduino的USB Mouse(键盘)只能用于带有原生USB功能的Arduino开发板,如Leonardo, Micro, Due, Zero等。 2)Arduino的USB Mouse(键盘)需要使用Mouse和Keyboard库,这两个库需要通过库管理器安装。 3)Arduino的USB Mouse(键盘)会接管电脑的鼠标和键盘,所以在使用时要注意不要失去对电脑的控制。 4)Arduino的USB Mouse(键盘)可以使用一些特殊的按键代码,如KEY_LEFT_CTRL, KEY_LEFT_ALT, KEY_RETURN等,来实现一些组合键或功能键的输入。

以下是三个Arduino的USB Mouse(键盘)的实际运用程序案例:

案例一:使用Arduino和陀螺仪模块制作一个3D鼠标,可以通过手势控制光标的移动和点击。 #include #include #include MPU6050 mpu; // 创建MPU6050对象 int16_t ax, ay, az; // 存储加速度计数据 int16_t gx, gy, gz; // 存储陀螺仪数据 int buttonPin = 2; // 设置按键引脚 void setup() { Serial.begin(9600); Wire.begin(); mpu.initialize(); // 初始化MPU6050 pinMode(buttonPin, INPUT_PULLUP); // 设置按键为输入模式,并启用内部上拉电阻 Mouse.begin(); // 初始化鼠标库 } void loop() { mpu.getMotion6(&ax, &ay, &az, &gx, &gy, &gz); // 获取MPU6050数据 int x = map(gx, -32768, 32767, -10, 10); // 将陀螺仪X轴数据映射到-10到10之间 int y = map(gy, -32768, 32767, -10, 10); // 将陀螺仪Y轴数据映射到-10到10之间 Mouse.move(x, y); // 根据陀螺仪数据移动鼠标光标 int buttonState = digitalRead(buttonPin); // 读取按键状态 if (buttonState == LOW) { // 如果按键被按下 Mouse.press(); // 按下鼠标左键 } else { // 如果按键被松开 Mouse.release(); // 松开鼠标左键 } }

案例二:使用Arduino和红外接收模块接收红外遥控器的信号,并根据不同的按键发送不同的键盘指令。4

#include #include IRrecv irrecv(2); // 设置红外接收引脚 decode_results results; // 存储红外信号 void setup() { Serial.begin(9600); irrecv.enableIRIn(); // 启动红外接收模块 Keyboard.begin(); // 初始化键盘库 } void loop() { if (irrecv.decode(&results)) { // 如果接收到红外信号 Serial.println(results.value, HEX); // 打印信号值,以十六进制显示 switch (results.value) { // 根据不同的信号值执行不同的操作 case 0xFFA25D: // 如果按下“电源”键 Keyboard.press(KEY_LEFT_CTRL); // 按下Ctrl键 Keyboard.press('w'); // 按下w键 Keyboard.releaseAll(); // 松开所有键,相当于执行Ctrl+w,关闭当前窗口 break; case 0xFFE21D: // 如果按下“功能”键 Keyboard.press(KEY_LEFT_ALT); // 按下Alt键 Keyboard.press(KEY_TAB); // 按下Tab键 Keyboard.releaseAll(); // 松开所有键,相当于执行Alt+Tab,切换窗口 break; case 0xFF629D: // 如果按下“静音”键 Keyboard.press(KEY_LEFT_CTRL); // 按下Ctrl键 Keyboard.press('m'); // 按下m键 Keyboard.releaseAll(); // 松开所有键,相当于执行Ctrl+m,静音当前程序 break; case 0xFF22DD: // 如果按下“播放/暂停”键 Keyboard.press(KEY_LEFT_CTRL); // 按下Ctrl键 Keyboard.press('p'); // 按下p键 Keyboard.releaseAll(); // 松开所有键,相当于执行Ctrl+p,播放或暂停当前媒体 break; case 0xFF02FD: // 如果按下“模式”键 Keyboard.press(KEY_LEFT_ALT); // 按下Alt键 Keyboard.press(KEY_F4); // 按下F4键 Keyboard.releaseAll(); // 松开所有键,相当于执行Alt+F4,关闭当前程序 break; default: // 如果按下其他键 break; } irrecv.resume(); // 继续接收下一个信号 } }

案例三:使用Arduino和触摸传感器制作一个触摸屏幕锁,可以通过输入正确的密码解锁电脑。

#include #include CapacitiveSensor cs1 = CapacitiveSensor(4, 5); // 创建第一个触摸传感器对象,连接到引脚4和5 CapacitiveSensor cs2 = CapacitiveSensor(4, 6); // 创建第二个触摸传感器对象,连接到引脚4和6 CapacitiveSensor cs3 = CapacitiveSensor(4, 7); // 创建第三个触摸传感器对象,连接到引脚4和7 int threshold = 1000; // 设置触摸阈值,超过这个值表示触摸有效 int password[4] = {1, 2, 3, 1}; // 设置密码,为1, 2, 3, 1 int input[4]; // 存储输入的密码 int index = 0; // 存储输入的索引 void setup() { Serial.begin(9600); Keyboard.begin(); // 初始化键盘库 } void loop() { long value1 = cs1.capacitiveSensor(30); // 获取第一个触摸传感器的值 long value2 = cs2.capacitiveSensor(30); // 获取第二个触摸传感器的值 long value3 = cs3.capacitiveSensor(30); // 获取第三个触摸传感器的值 if (value1 > threshold) { // 如果第一个触摸传感器被触摸 input[index] = 1; // 将输入的密码设为1 index++; // 索引加一 delay(500); // 延时500毫秒,避免重复触发 } if (value2 > threshold) { // 如果第二个触摸传感器被触摸 input[index] = 2; // 将输入的密码设为2 index++; // 索引加一 delay(500); // 延时500毫秒,避免重复触发 } if (value3 > threshold) { // 如果第三个触摸传感器被触摸 input[index] = 3; // 将输入的密码设为3 index++; // 索引加一 delay(500); // 延时500毫秒,避免重复触发 } if (index == 4) { // 如果输入了四位密码 bool correct = true; // 设置一个标志位,表示密码是否正确 for (int i = 0; i // 如果有任何一位不匹配 correct = false; // 标志位设为false,表示密码错误 break; // 跳出循环 } } if (correct) { // 如果密码正确 Keyboard.press(KEY_LEFT_CTRL); // 按下Ctrl键 Keyboard.press(KEY_LEFT_ALT); // 按下Alt键 Keyboard.press(KEY_DELETE); // 按下Delete键 Keyboard.releaseAll(); // 松开所有键,相当于执行Ctrl+Alt+Delete,解锁电脑 Serial.println("Password correct"); // 打印提示信息 } else { // 如果密码错误 Serial.println("Password wrong"); // 打印提示信息 } index = 0; // 索引归零,重新输入密码 } }

案例四:模拟鼠标点击

#include void setup() { // 初始化USB Mouse Mouse.begin(); } void loop() { // 模拟鼠标点击 Mouse.click(MOUSE_LEFT); delay(1000); }

这个案例中,Arduino模拟USB Mouse,通过调用Mouse.click()方法模拟鼠标左键的点击操作。在循环中,每隔一秒钟进行一次点击操作。

案例五:模拟键盘输入

#include void setup() { // 初始化USB键盘 Keyboard.begin(); } void loop() { // 模拟键盘输入 Keyboard.press(KEY_A); delay(500); Keyboard.releaseAll(); delay(500); }

这个案例中,Arduino模拟USB键盘,通过调用Keyboard.press()和Keyboard.releaseAll()方法模拟键盘按键的按下和释放操作。在循环中,每隔一秒钟模拟按下和释放键盘上的A键。

案例六:记录和回放鼠标移动和点击

#include void setup() { // 初始化USB Mouse Mouse.begin(); } void loop() { // 记录鼠标移动和点击 int mouseX = 0; int mouseY = 0; // 记录鼠标移动 mouseX = 100; mouseY = 200; Mouse.move(mouseX, mouseY); // 记录鼠标点击 Mouse.click(MOUSE_LEFT); delay(1000); // 回放鼠标移动和点击 Mouse.move(-mouseX, -mouseY); Mouse.click(MOUSE_LEFT); delay(1000); }

这个案例中,Arduino模拟USB Mouse,通过记录和回放鼠标的移动和点击动作。在循环中,首先记录鼠标移动到坐标(100, 200),然后记录鼠标左键的点击动作。随后,通过负向移动鼠标坐标和再次点击鼠标左键,实现对鼠标动作的回放。

案例七:通过两个旋钮控制鼠标移动

#include void setup() { Mouse.begin(); } void loop() { int x = analogRead(A0); // 读取旋钮值 int y = analogRead(A1); Mouse.move(x, y); // 控制移动 }

案例八:通过按钮自动点击左键

#include const int buttonPin = 2; void setup() { Mouse.begin(); pinMode(buttonPin, INPUT); } void loop() { if(digitalRead(buttonPin) == HIGH) { Mouse.click(); } }

案例九:通过光敏电阻改变滚轮滚动速度

#include void loop() { int value = analogRead(A0); int speed = map(value, 0, 1023, 1, 10); Mouse.move(0,0,speed); // 控制滚轮速度 }

这些案例展示了Arduino模拟USB Mouse(或键盘)的不同应用场景。通过模拟鼠标点击、键盘输入或记录回放鼠标动作,可以实现自动化控制、交互装置或用户行为分析等功能。在实际应用中,需要了解USB HID协议、设置和解析数据格式,并考虑兼容性和驱动等注意事项,以确保与目标设备的正常交互。

在这里插入图片描述



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

      专题文章
        CopyRight 2018-2019 实验室设备网 版权所有