Leonardo是Arduino开发板的一种型号,可以像其他Arduino板一样对Leonardo进行编程和使用。但是,有一些重要的区别:

The Leonardo differ from other Arduino boards in that they use a single microcontroller to both run your sketches and for USB communication with the computer. The Uno and other boards use separate microcontrollers for these two functions, meaning that the USB connection to the computer remains established regardless of the state of the main microcontroller. By combining these two functions onto a single processor, the Leonardo allows for more flexibility in its communication with the computer. It also helps to lower the cost of the board by removing the need for an additional processor.

Arduino Leonardo不同于之前全部的Arduino控制器,他直接使用了ATmega32u4的USB通信功能,取消了USB转UART芯片。这使得Leonardo不仅可以作为一个虚拟的COM端口,还可以作为鼠标或者键盘连接到计算机。

今天用Arduino Leonardo做的东西很花里胡哨,先来看看效果吧:

虚拟键盘演示(badusb)

以下是视频链接:
http://v.youku.com/v_show/id_XNDQ3ODExMDIwOA==.html?x&sharefrom=android&sharekey=4c06da3938ffd6ead4184f1d59feef9f6

先在Arduino IDE里新建一个文件,导入资源库:

#include <Keyboard.h>

这是键盘操作的库,只能在Arduino Leonardo系列的开发板上使用,如果在Arduino UNO 上编译的话,会报错

接下来我们需要学习一些虚拟键盘的语句:

开始键盘通讯:

Keyboard.begin();//开始键盘通讯

按键操作:

Keyboard.press();

与按键对应的是释放:

Keyboard.release();

当然还可以输入:

Keyboard.println("");

最后是结束键盘通讯:

Keyboard.end();//结束键盘通讯

有了这些基础,就可以大胆地发挥想象啦!

比如说,我想要的效果是:把开发板插入电脑后,打开命令行,给命令行变颜色

for(int i=0;i<10;i++){Keyboard.println("color 1");Keyboard.press(KEY_RETURN);Keyboard.release(KEY_RETURN);delay(100); Keyboard.println("color 2");Keyboard.press(KEY_RETURN);Keyboard.release(KEY_RETURN);delay(100); Keyboard.println("color 3");Keyboard.press(KEY_RETURN);Keyboard.release(KEY_RETURN);delay(100); Keyboard.println("color 4");Keyboard.press(KEY_RETURN);Keyboard.release(KEY_RETURN);delay(100); Keyboard.println("color 5");Keyboard.press(KEY_RETURN);Keyboard.release(KEY_RETURN);delay(100); Keyboard.println("color 6");Keyboard.press(KEY_RETURN);Keyboard.release(KEY_RETURN);delay(100); Keyboard.println("color 7");Keyboard.press(KEY_RETURN);Keyboard.release(KEY_RETURN);delay(100); Keyboard.println("color 8");Keyboard.press(KEY_RETURN);Keyboard.release(KEY_RETURN);delay(100); Keyboard.println("color 9");Keyboard.press(KEY_RETURN);Keyboard.release(KEY_RETURN);delay(100); }

原理也很简单:

再来个简单的:

Keyboard.println("telnet towel.blinkenlights.nl");

看看用字符串演的电影也不错



能看出这是什么电影嘛?哈哈哈…

除此之外,还有视频里的代码雨:

@echo off
color 0a
setlocal ENABLEDELAYEDEXPANSION
for /l %%i in (0) do (
set "line="
for /l %%j in (1,1,80) do (
set /a Down%%j-=2
set "x=!Down%%j!"
if !x! LSS 0 (
set /a Arrow%%j=!random!%%3
set /a Down%%j=!random!%%15+10 )
set "x=!Arrow%%j!"
if "!x!" == "2" (
set "line=!line!!random:~-1! "
) else (set "line=!line! ")
)
set /p=!line!<nul
)

代码雨的代码要提前写在电脑上,保存为 .bat 文件,运行时直接拖到命令行即可.

还有很多花里胡哨的玩法,大家可以自己琢磨一下,总结一下,加上打开命令行的代码:

#include <Keyboard.h>void setup() {//初始化Keyboard.begin();//开始键盘通讯delay(1000);//延时Keyboard.press(KEY_LEFT_GUI);//win键Keyboard.press('r');//r键Keyboard.release('r');delay(1000); Keyboard.release(KEY_LEFT_GUI); Keyboard.press(KEY_CAPS_LOCK);//利用开大写输小写绕过输入法Keyboard.release(KEY_CAPS_LOCK);delay(1000); Keyboard.println("CMD");delay(500); Keyboard.press(KEY_RETURN);Keyboard.release(KEY_RETURN);/*插入你想实现的功能*/Keyboard.end();//结束键盘通讯
}
void loop()//循环
{}

将代码编译上传后,把Arduino Leonardo开发板插到其他电脑上试试看吧!

用Arduino Leonardo制作虚拟键盘(简易badusb)相关推荐

  1. Arduino Leonardo教程:如何回车,特殊按键定义,DIY超便宜的键盘主控

    前言:关于Arduino和Leonardo 想要做一把键盘,如果是实现一些简单的按键功能,要做一个宏按键,然后还有做一个知名的badusb,你可以使用Arduino Leonardo以及一些衍生的板子 ...

  2. 淘宝arduino虚拟键盘开发环境及对应键盘按键代码

    淘宝arduino虚拟键盘 一.arduino虚拟键盘介绍 二.开发环境搭建 三.硬件虚拟键盘测试 一.arduino虚拟键盘介绍 淘宝上多种硬件虚拟键盘使用的IC为atmega32u4 大部分硬件设 ...

  3. 使用Arduino Leonardo开发板制作操纵杆游戏控制器

    在之前的文章中,我们将操纵杆模块与Arduino UNO开发板进行连接,以了解它是如何工作的,并通过左.右.上.下运动控制四个LED指示灯.在本篇文章中,我们将使用操纵杆模块作为游戏手柄或游戏控制器来 ...

  4. 详解如何基于Arduino兼容板Teensy LC实现虚拟键盘与鼠标

    目录 前言 硬件环境 环境配置 1. 下载Teensy烧录程序 2 下载TeensyDuino 使用方法 1 模拟键盘 1.1 Keyboard库函数介绍: 1.2 Keyboard键码表: 1.3 ...

  5. Linux QT下实现简易虚拟键盘

    软件需要在仪器上面跑,故需要设计一个虚拟键盘来实现用户的输入. 实现思路比较简单,键盘上各个字母数字由一个个Btn组成,通过QT的信号槽机制来达到用户点击各个按钮来触发信号,从而实现模拟键盘点击.键盘 ...

  6. 如何为WPF应用程序制作一个虚拟键盘?这里有答案(Part 2)

    Telerik UI for WPF拥有超过100个控件来创建美观.高性能的桌面应用程序,同时还能快速构建企业级办公WPF应用程序.UI for WPF支持MVVM.触摸等,创建的应用程序可靠且结构良 ...

  7. Arduino Leonardo教程:如何改成Type-C,DIY客制化键盘必备

    前言 目前市售的Arduino Leonardo大部分都是Micro USB接口的,而使用Type-C好处多多,这里就提供一下改Type-C的方法 直接上结果 要改Type-C,直接买一个这个[TYP ...

  8. 简易BadUSB,攻击效果不简单

    不久前,有小伙伴在实验室捡到一个U盘,想看看是谁的就插在了自己的电脑上,结果出现了安全软件的报毒通知-- 也是因为这件事有了制作一个BadUSB的想法,可以在不被杀毒软件发现的情况下进行一些操作. 一 ...

  9. 安装选择Arduino Leonardo新手入门体验

    文章结束给大家来个程序员笑话:[M] 刚刚拿到Arduino Leonardo板子,在XP下测试了哈OK,还比较好用,测试过程当中遇到了些问题,写出来分享.实物图如下: 1.安装驱动 Arduino ...

最新文章

  1. 如何将深度学习研究论文实现为代码的几个要点
  2. 第6章 自定义控件和用户控件
  3. windows下的工具链 树莓派_7. windows下 influxDB 操作工具 InfluxDBStudio
  4. 面试中如何回答“你是否愿意加班”
  5. tensorflow 报错(完善中)
  6. java 为文件及文件夹添加权限
  7. idea maven创建java项目_新版本IntelliJ IDEA 构建maven,并用Maven创建一个web项目(图文教程)...
  8. 2021年中国高精地图产业研究分析
  9. 【机器学习】无监督学习--(聚类)Mini Batch K-Means
  10. FFMPEG基于内存的转码实例
  11. BootstrapTable单元格宽度调整:colResizable()方法
  12. 【数学基础】机器学习与深度学习中的数学知识
  13. System.IO.Path 操作
  14. [配置] minGW32 安装与环境配置
  15. 天正电气插入图块非常小与比例不符合
  16. Photoshop CS6 破解
  17. vos对接移动、电信、联通各种线路
  18. 查看计算机内存条型号,怎么查内存条型号 这几步你要了解
  19. 知识图谱基础代码构建(医疗向)
  20. String与Date的类型转换

热门文章

  1. 酸汤肥牛一一酸辣开胃 ,在家也能做出饭店味道
  2. 网易游戏2015雷火事业部实习招聘会笔记
  3. LoadFromStr的使用中出现错误“未结束的字符串常量”
  4. 基于华为云的人脸识别实验
  5. 通用技术和信息技术合格考知识点_2020年江西信息技术/通用技术高考知识点总复习资料汇总(含高考视频教学及考纲知识点分布)...
  6. 重写boost内存池
  7. 跨平台API对接(Python)的使用
  8. mayavi绘制进阶
  9. MySQL之CURD
  10. 如何用区块链解决滴滴美团打车大战的补贴困境!