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. ios 两个 TableView 之间的联动, TableView 与 CollectionView 之间的联动
  2. java cmd 等待输入_JAVA:调用cmd指令(支持多次手工输入)
  3. linux 虚拟机添加网卡
  4. Buffer(缓冲/字节容器)详解
  5. Asia Yokohama Regional Contest 2018 K题 - Sixth Sense(思维加贪心加二分)
  6. python的魔法方法
  7. 如何在JSP里添加删除cookie
  8. 如何设置几个循环出来的span其中一个宽度_css几个概念
  9. 企业管理理论综述与实践 — 战略
  10. 有道智云OCR图片识别文字+返回数据处理技巧(实现语言-按键精灵脚本请求识别+java服务端处理数据)...
  11. iOS开发企业版ipa分发
  12. C# 温故而知新:Stream篇(五)
  13. 用Changedetection监控网页的变化
  14. java大量实例化对象如何调优_成都Java性能调优技巧
  15. 【Kafka】kafka架构
  16. Package com.google.common.collect
  17. Shiro认证--盐加密(SSM)
  18. STM32的SWD调试方式
  19. ctf的web题目php,32C3 CTF 两个Web题目的Writeup
  20. 年度征文 | 我的成长之路,我与csdn | 回顾2022展望2023

热门文章

  1. 桥接模式下的bridged进行网络连接
  2. 增广贤文--中华蒙学经典
  3. 一篇文章搞定Prometheus普罗米修斯监控系统的部署
  4. Linux--查找大文件的几种方法
  5. 为什么很多人赚不到钱?赚了钱又存不了钱呢
  6. 看完直接怼项目经理!成功入职网易月薪35K,原理+实战讲解
  7. 32、哈夫曼编码之数据压缩
  8. Python学习13-15.1-15.12 保持时间、计划任务和启动程序
  9. 思科 交换机路由器命令总结
  10. 给大家分享我的宝藏:nlp算法面试经验