将树莓派Pico变成带有触摸屏界面的USB-HID设备

news/2025/3/15 15:10:39/文章来源:https://www.cnblogs.com/linkstu/p/18773693

将您的树莓派Pico变成带有触摸屏界面的USB-HID设备!在这个项目中,我们将在Arduino IDE中设置编程环境,为3.5”Pico Touch LCD屏蔽配置库,测试基本功能,创建简单的按钮(用于复制和粘贴),显示自定义图标,甚至使用Windows环境变量来启动程序。

设置编程环境

安装Arduino IDE

•从Arduino官方网站下载Arduino IDE并将其安装到您的计算机上。

•安装完成后,打开Arduino IDE。

•转到File > Preferences。

查找其他董事会管理器URL并添加以下URL:

单击OK保存更改。

安装Raspberry Pi Pico单板包

•进入Tools > Board > Boards Manager....

•在搜索栏中,输入Pico。

•安装Raspberry Pi Pico/RP2040 (Earle F. Philhower, III) -版本3.9.1(或最新版本)。

•安装完成后,选择“Tools > Board > Raspberry Pi RP2040 Boards > Raspberry Pi Pico”。

安装所需的库

•通过Tools > Manage Libraries打开库管理器。

•搜索TFT_eSPI并安装它。

•重复TFT_eWidget和Adafruit_TinyUSB。

配置TFT_eSPI

•导航到Arduino库文件夹。通常,它位于:Documents/Arduino/libraries/TFT_eSPI

•您将找到一个User_Setup_Select.h和一个名为user_setup的文件夹。

•将downloadduser_setup_select .h复制到TFT_eSPI主文件夹中(覆盖现有文件夹)。

•将下载的setup60_rp2040_ili9341 .h复制到user_setup子文件夹中。

Arduino“Tools”菜单设置

确保您选择了:

第一个测试:硬件和库验证

配置完软件环境后,是时候测试Raspberry Pi Pico和显示屏蔽了。

下面是一个示例草图(initialTest.ino),它检查了显示器的基本功能,包括一些图形测试和触摸校准。您可以将下面的代码粘贴到新的Arduino草图中,或者打开initialTest。你下载的文件附带的Ino。

这段代码是做什么的?

•初始化屏幕,校准触摸屏(并将校准数据保存到flash文件系统),然后执行快速图形测试(线、矩形、圆和文本)。

•不断切换反转显示,以便您可以看到效果。

创建简单的按钮:复制和粘贴

接下来,我们将添加触摸屏按钮,以便Pico可以通过USB向您的计算机发送类似键盘的命令。这是通过Adafruit_TinyUSB实现的,它允许您的Pico充当人机接口设备(HID)。

下面是一个简单的例子,创建了两个标签为“复制”和“粘贴”的按钮。为此,使用example_SimpleButtons.ino

编译警告说明

在编译时,您可能会看到关于将字符串常量转换为char*的警告。发生这种情况是因为ButtonWidget类使用char*作为label参数,但是“COPY”和“PASTE”是字符串字面值(它们是const char*)。尽管有警告,代码仍然可以工作。理想情况下,您应该修改ButtonWidget类以接受const char*来避免警告。

显示图标:将PNG图像转换为C数组

您可以在按钮上添加图标而不是文本标签。例如,您可能希望显示一个小的PNG图像。为此,您将PNG文件转换为C数组,然后在屏幕上绘制它。

转换工具:“ImageConverter 565 V1.2”

•从GitHub下载UTFT库(作为.zip)。

•解压缩它,然后导航到其中的Tools文件夹。

•运行ImageConverter 565 V1.2工具。

•点击打开图像,选择你的。png文件(例如,arduino.png)。

•单击Save以生成包含像素数据的.c文件。

在该.c文件中,您将发现一个16位值的大数组。将该数组复制到一个新的头文件中(例如,ardicon.h)。同时为宽度和高度定义两个变量(例如,ardicon_w = 128;和ardicon_h = 128;)。

你的ardicon.h可能看起来像这样在顶部:

在草图中使用图标

•将ardicon.h复制到草图文件夹中。

•#在你的代码中包含“ardicon.h”。

•确保你有tft.setSwapBytes(true);如果颜色出现错误,则在调用pushImage()之前。

使用example_Button_with_icon。添加一个新按钮并在其上绘制图标:

使用Windows环境变量分配操作

自定义按钮动作的一个强大方法是使用Windows环境变量。例如,您可以创建一个环境变量来存储Arduino IDE的路径,然后让一个按钮自动启动它。

创建一个新的环境变量(Windows)

•按Windows键,搜索“控制面板”。

•在“系统和安全”下,单击“系统”。

•.在左侧选择“高级系统设置”。

•在“系统属性”窗口中,单击“环境变量”。

•在User变量(仅限当前用户)或System变量(所有用户)下,单击New。

•输入一个变量名(例如,ARDU)并将其值设置为Arduino IDE可执行文件的路径。

•通过在所有对话框窗口上单击OK来保存这些更改。

•使用方法:按WIN + R,输入%ARDU%打开Arduino IDE。

示例:从按钮启动Arduino IDE

下面是一个草图(example_startArduino.ino),它演示了如何打开Windows“运行”对话框,输入%ARDU%,然后按Enter:

当你点击图标时,Pico模拟按下Windows + R,然后输入%ARDU%,然后按Enter,启动Arduino IDE。

扩展:增加三个带有图标的按钮

通过遵循上述相同的原则,您可以用多个按钮填充屏幕,每个按钮都有不同的图标和操作。例如,你可以为锁定电脑、打开文件资源管理器或关闭电脑指定快捷方式。

想法是完全一样的:

•创建其他ButtonWidget实例。

•将新的PNG图标转换为。h文件。

•使用pushImage()在每个按钮的区域上绘制它们。

•将按钮的按下动作映射到您想要自动执行的击键/快捷键。

草图FullDisplay。Ino包含六个按钮(您将需要所有图标文件)。由于图标是这个项目独有的,如果您想扩展自己的图标,只需复制该结构即可。代码为每个图标引用额外的。h文件(例如,Ardicon.h, Exploricon.h, Lockicon.h, Pwdownicon.h),每个文件都必须从PNG图像中生成。

原理保持不变:每个按钮都有一个按下和释放功能,触发一系列的HID键盘报告。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/899216.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

20250315

1. 20号胶 3-5的细分

语音交友app源码,优化白屏降低用户负面情绪

语音交友app源码,优化白屏降低用户负面情绪目标: 缩小打包体积,优化白屏时间路由懒加载const Home = () => import(/* webpackChunkName: "home" */"@/views/home/index.vue"); const MetricGroup = () => import(/* webpackChunkName: "met…

Visio绘制时间轴安排图的方法

本文介绍基于Visio软件绘制时间轴、日程安排图、时间进度图等的方法~本文介绍基于Visio软件绘制时间轴、日程安排图、时间进度图等的方法。在很多学习、工作场合中,我们往往需要绘制如下所示的一些带有具体时间进度的日程安排、工作流程、项目进展等可视化图表。而基于Visio软…

华为---MUX VLAN简介及示例配置

https://blog.csdn.net/lehe99/article/details/1426209886.4 配置及解析 system-view [Huawei]sysname R [R]interface GigabitEthernet 0/0/0 [R-GigabitEthernet0/0/0]ip address 192.168.11.254 24 [R]interface LoopBack 11 [R-LoopBack11]ip address 11.11.11.11 32 syst…

SQL Server 列存储HTAP介绍

本篇文章是我线下活动分享的一个活动PPT,现在分享在我的个人博客中

基于QWidget打造的进度条控件(等待控件、加载控件)

效果图功能支持设置加载进度条颜色 支持设置中间显示文字、文字颜色、文字大小 基于QWidget开发, 开箱即用。全部代码 CircleWaitingWidget.h #pragma once #include <QWidget>/// /// 环状等待控件。 /// class CircleWaitingWidget : public QWidget {Q_OBJECTpubli…

完全开源的SQL2API低代码工具SQLREST

在现代 Web 应用中,API(应用程序编程接口)是连接前端与后端业务逻辑的重要桥梁。传统的 API 开发方式通常需要手动编写大量代码,尤其是当需要与数据库交互时,开发效率往往较低。 一、什么是 SQLREST SQLREST是一款完全开源的SQL2API低代码工具,帮助用户同步编写SQL或简单…

【晶体】范得华力,氢键

晶体的分类: 1、 金属晶体,比如铜,2、离子晶体,比如NaCl晶体,盐,3、分子晶体,比如:干冰 4、共价晶体,比如说SiO2 分子晶体,是由分子间范得华力吸引形成的。 什么是 范得华力? 分子的部分区域是正电,部分区域是负电。分子与分子之间,正负吸引的力,就是范得华…

JDK8-日历类--java进阶day07

JDK7和JDK8之间的时间API比较1.日历类1.LocalDateTime LocalDateTime最为齐全,只要掌握这个类,另外两个都是一样的now方法获取到此刻时间,of方法设置想要的时间如下图2.LocalDateTime与LocalDate和LocalTime之间的转换.3.get方法获取时间使用get,后面加上自己想要获取的时间…

ASE50N25-ASEMI光伏逆变器专用ASE50N25

ASE50N25-ASEMI光伏逆变器专用ASE50N25编辑:LL ASE50N25-ASEMI光伏逆变器专用ASE50N25 型号:ASE50N25 品牌:ASEMI 封装:TO-220F 最大漏源电流:50A 漏源击穿电压:250V 批号:最新 RDS(ON)Max:45mΩ 引脚数量:3 沟道类型:N沟道MOS管 封装尺寸:如图 特性:MOS管、N沟…

vcpkg 跨平台的c/c++库包管理工具,以libssh为例

‌vcpkg‌是一个由微软开发的开源C/C++库包管理器,支持Windows、Linux和macOS操作系统。 功能:可以自动识别依赖,并进行编译、安装。 例如,libssh库依赖openssl、zlib等。自己编译需要先下载依赖的源码、编译、安装,然后再编译libssh,很麻烦。vcpkg可以自动解决这些问题。…