b2科目四模拟试题多少题驾考考爆了怎么补救
b2科目四模拟试题多少题 驾考考爆了怎么补救

32蓝牙键盘库:用Arduino玩转掌控板32/8266

电脑杂谈  发布时间:2021-02-27 13:06:42  来源:网络整理

ipad蓝牙键盘控制翻页

ipad蓝牙键盘控制翻页

这一系列历史文章目录:

本期给您带来的案例是:蓝牙翻页笔。

ipad蓝牙键盘控制翻页

ipad蓝牙键盘控制翻页

让我们先看一下演示视频:

蓝牙翻页笔| PPT播放器控制器|蓝牙键盘|使用Arduino玩控制板ESP32 / ESP8266 |图形化编程| Tiexiong_Beep Beep Miles(゜-゜)つロ干杯〜-bilibili生产的

图标

前言

关于翻页笔,我已经与您分享了使用徽章板和micro:bit实现翻页笔的情况。您可以检查以下链接:

可爱的宠物体感翻页笔的DIY教程

这次设计的翻页笔的功能与上一个类似,但是区别在于:

开始在下面输入主题。

ESP32蓝牙键盘库

在编写蓝牙翻页笔程序之前,让我们首先了解Arduino库ESP32-BLE-Keyboard。我们主要在此库的帮助下编写页面转笔程序。该库的功能主要是模拟ESP32作为蓝牙键盘,然后将按键命令发送到计算机,例如,我们将使用翻页笔:F5按钮(控制PPT开始播放),ESC按钮(控制PPT退出播放),有用于向上和向下翻页(或箭头←和→)的Pg Up和Pg Down按钮。

在使用此库之前,我们必须首先将该库导入Arduino软件。具体的导入方法将不在此处扩展。只需搜索即可。

我们可以打开此库的头文件BleKeyboard.h以获得对该库的一般了解。该库中主要包含以下功能模块:

BleKeyboard对象

BleKeyboard用于声明蓝牙键盘对象。在程序开始时使用它来初始化蓝牙键盘的名称deviceName,键盘制造商deviceManufacturer和键盘的BatteryLevel。当然,您不需要进行设置。此时,程序将使用默认值设置键盘。

BleKeyboard(std::string deviceName = "ESP32 BLE Keyboard", std::string deviceManufacturer = "Espressif", uint8_t batteryLevel = 100);

begin()和end()函数

这两个函数的定义如下:

void begin(void);
void end(void);

主要用于启动和结束键盘。

press()函数

在头文件定义中,有两个press()函数:

size_t press(uint8_t k);
size_t press(const MediaKeyReport k);

这两个press()函数可用于控制键盘上所有键的按下,例如0-9,A-Z和某些特殊功能键。

请注意,我在这里写的是按键盘上的一个键,这表示它尚未释放。这样做的好处是您可以控制键盘发送一些键组合。

区别在于,第一个用于控制普通键,而第二个用于控制MediaKey。什么是媒体密钥?例如,控制上一首歌曲,下一首歌曲,暂停,控制音量的增加和减少等,这些都是媒体键。

实际上,我们在使用时不需要区分。程序将根据我们输入的键自动调用相应的功能。

例如,如果我们想按键盘上的A键,只需致电press(‘a’);如果要按键盘上的Ctrl键,只需调用press(KEY_LEFT_CTRL)。普通键,例如A-Z或0-9,我们只需要正常输入即可,但是程序中Ctrl等特殊键的对应名称是什么?它在该库的头文件BleKeyboard.h中定义,读者可以自己检查它。由于篇幅原因,在此不再赘述。

release()函数

release()与press()函数相反。它用于控制键盘上的键的释放。定义中也有两个:

size_t release(uint8_t k);
size_t release(const MediaKeyReport k);

这两个功能之间的区别将不再重复。 press()函数和release()通常结合使用,并且可以在需要组合键的情况下使用。例如,当您需要使用Ctrl + C键时,可以先按两个按钮,然后释放这两个按钮。

releaseAll()函数

从名称中可以看到,它是release()函数的增强版本,它使您可以一次释放所有键。例如,如果我们同时按下Ctrl + Alt + Delete键,则可以通过releaseAll()函数一次释放3个键。

write()函数

write()函数可以简单地理解为press()函数和release()函数的加法,即先按下按钮,然后释放按钮。此过程会自动完成,适合发送单个按钮。

size_t write(uint8_t c);
size_t write(const MediaKeyReport c);
size_t write(const uint8_t *buffer, size_t size);

isConnected()函数

此功能用于确定ESP32仿真的蓝牙键盘是否已与计算机配对。

print()函数

除了上述函数外,还有一个print()函数,该函数继承自Arduino库的Print类。

此功能的用途是什么?想象一下,如果我们想一次发送多个按钮,例如当我们输入句子“ Hello World!”时。在计算机上,我们是否必须多次调用write()函数才能将此语句发送到完成状态?实际上不是,只需传递句子print(“ Hello World!”)。

好的,有了这些解释,很容易模拟键盘来控制计算机。让我们看一下如何编写蓝牙翻页笔的程序。

翻页笔程序的完整程序

首先将完整程序放在这里:

ipad蓝牙键盘控制翻页

ipad蓝牙键盘控制翻页

介绍头文件

我们现在在程序的开头引入几个头文件,控制OLED显示的U8g2lib和Wire库以及模拟键盘的BleKeyboard库:

#include 
#include 
#include 

然后定义一个键盘对象bleKeyboard。键盘的名称设置为mPython,键盘制造商为Espressif,键盘功率为95%。实际上,只要易于记忆,这些设置都是任意的,主要是键盘名称。

BleKeyboard bleKeyboard("mPython", "Espressif", 95);

接下来,定义OLED屏幕对象u8g2。 OLED屏幕的功能主要是提醒我们在控制PPT时按下了哪个按钮。这需要根据您使用的OLED屏幕的类型和连接方法进行定义。我不会先对其进行扩展,稍后我将讨论屏幕显示。控制版本随附的OLED屏幕通过I2C连接,只要它由以下语句定义即可。

ipad蓝牙键盘控制翻页_ipad蓝牙键盘 游戏_ipad蓝牙键盘翻页

U8G2_SH1106_128X64_NONAME_F_HW_I2C u8g2(U8G2_R0, U8X8_PIN_NONE);

setup()初始化

然后在setup()的初始化中,初始化串行端口Serial,以便以后可以打印调试信息。初始化OLED屏幕并进行相应的设置;初始化蓝牙键盘。

void setup() {
  Serial.begin(115200);
  // OLED 初始化
  u8g2.begin();
  u8g2.enableUTF8Print();
  u8g2.setFont(u8g2_font_wqy16_t_gb2312b);  // 设置字体:宋体16号字
  u8g2.setFontPosTop();  // 设置字体的定位点为左上角
  u8g2.clearDisplay();
  // 蓝牙键盘初始化
  Serial.println("Starting BLE Keyboard!");
  bleKeyboard.begin();
}

loop()主程序

在loop()循环中,使用bleKeyboard.isConnected()确定我们的键盘是否已连接到计算机。如果未连接,则仅在计算机上不会执行写入其中的程序。与该蓝牙键盘配对并连接后,将执行其中的程序。

void loop() {
  if (bleKeyboard.isConnected()) {
      // codes here ...
  }
}

以下程序用于读取控制面板上的按钮A和B以及触摸按钮P,Y,T,H,O和N的值。通过读取它们的值,您可以确定按键是否被按下来触发。

// button A and B
int buttonA = !digitalRead(0);
int buttonB = !digitalRead(2);
// touchpad P Y T H O N
int touchpadP = touchRead(27);
int touchpadY = touchRead(14);
int touchpadT = touchRead(12);
int touchpadH = touchRead(13);
int touchpadO = touchRead(15);
int touchpadN = touchRead(4);

控制面板上的按钮A和B是数字信号,默认情况下它们是高电平信号。按下按钮,digitalRead()函数将读取低电平信号。因此,在前面加一个非(!)以便以后进行判断。

控制面板或ESP32带有多个触摸按钮,因此系统还带有一个函数touchRead()来检测触摸按钮。触摸按钮读取的值是模拟值。

关于这些按钮的针脚编号,为什么?即,digitalRead()和touchRead()函数中的数字。为什么会这样?让我们看一下控制板的引脚定义图。

ipad蓝牙键盘控制翻页

ipad蓝牙键盘控制翻页

查看上图中“ Pin Definition Front”的图片。我们可以看到饮料的触针P的编号为P23。我们再来看一下芯片引脚的定义,对应于P23的芯片引脚为IO27。在Arduino程序中,我们实际上是在编写芯片引脚,因此当读取触摸引脚P的值时,touchRead()函数中的数字为27。芯片引脚IO端口与其他几个触摸引脚相对应,读者可以对其进行检查。

读者还可以查询控制板的官方文档以获得控制板的引脚定义:mpython.readthedocs.io/zh/master/board/hardware.html

如果使用其他ESP32开发板,还可以查询对应的官方产品信息以获得对应的管脚编号。

然后通过判断按钮A和B的值来控制PPT开始播放和停止播放。要控制PPT播放,我们只需要按F5键,因此调用的程序是bleKeyboard.write(KEY_F 5);要结束PPT播放,只需按ESC键,所以调用程序为bleKeyboard.write(KEY_ESC)。注意,由于它是控制键盘的程序,所以添加了delay(50 0)程序以防止不会太快地按下键。

// Start PPT
if (buttonA) {
  Serial.println("Button A pressed!");
  Serial.println("Sending key: F5 (start PPT");
  display("开始播放");
  bleKeyboard.write(KEY_F5);
  delay(500);
}
// Quit PPT
if (buttonB) {
  Serial.println("Button B pressed!");
  Serial.println("Sending key: ESC (quit PPT)");
  display("结束播放");
  bleKeyboard.write(KEY_ESC);
  delay(500);
}

其中的display()函数

将在后面讨论。用于控制控制面板的OLED显示屏以显示相应的提示,例如“开始播放”,“结束播放”等。

出于相同的原因,我们可以通过检测触摸按钮P和N的值来控制PPT播放上一页和下一页。这里我们使用bleKeyboard.write(KEY_LEFT_ARROW)和bleKeyboard.write( KEY_RIGHT_ARROW)来控制它们。

这时,还说明了主程序。逻辑很简单吗?仅通过判断控制面板上的哪个按钮被按下,模拟键盘就会触发相应的按钮行为。

display()函数

在程序中,我们还定义了另一个函数display(String tipsOnScreen)。它的功能是根据控制面板上的按钮控制OLED显示相应的内容。只需直接查看代码即可。

void display(String tipsOnScreen)
{
  u8g2.firstPage();
  do
  {
    u8g2.clearDisplay();
    u8g2.setCursor(32, 24);
    u8g2.print(tipsOnScreen);
  } while (u8g2.nextPage());
}

这时,程序将被解释并上传到控制面板。

连接蓝牙

我们通过在上面编写程序来将控制面板模拟为蓝牙键盘,然后将其与计算机配对,即可愉快地使用它。

ipad蓝牙键盘 游戏_ipad蓝牙键盘翻页_ipad蓝牙键盘控制翻页

这里以Windows 10系统为例,其他系统类似。首先打开计算机的设置,找到添加蓝牙设备页面,单击顶部的“ +”号,准备添加蓝牙设备。

ipad蓝牙键盘控制翻页

ipad蓝牙键盘控制翻页

选择“蓝牙”以开始搜索计算机附近的蓝牙设备。

ipad蓝牙键盘控制翻页

ipad蓝牙键盘控制翻页

这时,将出现一个名为“ mPython”的蓝牙设备。 “ mPython”是我们在程序中为控制板指定的名称。一侧上有一个键盘图标,表示计算机已将控制板识别为蓝牙键盘已准备就绪,只需选择它即可与计算机配对并连接。

ipad蓝牙键盘控制翻页

ipad蓝牙键盘控制翻页

连接成功后,我们可以看到刚刚在Bluetooth设置页面上添加的Bluetooth键盘“ mPython”,然后查看其电池电量95%,与程序中的设置完全相同!

ipad蓝牙键盘控制翻页

ipad蓝牙键盘控制翻页

这时,您可以在计算机中打开一个PPT,然后尝试查看翻页笔是否工作正常〜

复活节彩蛋

在这里见到朋友,谢谢,我特意留了一个复活节彩蛋。

我相信我的许多朋友在看到代码时都会头脑高明,因此我为所有人制作了用于蓝牙键盘的图形库。您只需要打开Mind +软件v 1. 6. 2及更高版本,然后将我添加到用户库中即可。蓝牙键盘库,您可以开始蓝牙键盘编程的旅程。

蓝牙键盘库的直接URL:/ ironpanda / ext-BLEKeyboard

这是蓝牙键盘库的教程和简单案例。

将上述URL添加到Mind +软件用户库中,如下所示:

ipad蓝牙键盘控制翻页

ipad蓝牙键盘控制翻页

导入完成后,您可以在“用户库”类别中看到蓝牙键盘库的相应编程模块。

ipad蓝牙键盘控制翻页

ipad蓝牙键盘控制翻页

与本文对应的蓝牙键盘Mind +的图形程序如下:

ipad蓝牙键盘控制翻页

ipad蓝牙键盘控制翻页

容易吗?你会做吗?

代码下载

关注该帐户并获取代码下载地址。


本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/bofangqi/article-361436-1.html

    相关阅读
      发表评论  请自觉遵守互联网相关的政策法规,严禁发布、暴力、反动的言论

      • 尹鹗
        尹鹗

        踏踏实实对你一百个放心

      • 永井一郎
        永井一郎

        没有发财的

      • 孟匡明
        孟匡明

        #杨洋2015金投赏##杨洋icon#杨洋

      热点图片
      拼命载入中...