资料介绍
描述
除了价格低廉、I/O 选项和 PIO 范围广泛之外,Pico 的一大优点是 C/C++ SDK。Raspberry Pi 的人们在创建一个易于使用的编程环境方面做得很好,但如果你想要的话,仍然可以让你接近硬件。更不用说全面的文档了。
使用 C/C++ SDK 的一个缺点是缺少库。Raspberry PI 论坛上的用户@martinkooij编制了一份可用库列表,虽然数量在增加,但与使用 Arduino IDE 时可用的大量库相比还差得远。仅Arduino 参考文档就列出了 4000 多个库。
如果您的传感器、显示器或其他外围设备不存在 Pico C/C++ SDK 库,那么很可能存在 Arduino 库。
在本教程中,我将引导您完成使用 pico-arduino-compat 将 Arduino 库添加到您的 Pico C/C++ SDK 项目的过程。
什么是 pico-arduino-compat?
pico-arduino-compat 是一个兼容层,它允许(某些)Arduino 库不加修改地用于使用 Pico C/C++ SDK 编写的项目中。
对于 Arduino 官方文档中列出的每个 Arduino 库(超过 4000 个),都有一个相应的 cmake 接口库,可以直接在 Pico C/C++ SDK 项目中使用。
pico-arduino-compat 兼容层利用earlephilhower 出色的RP2040 Arduino 内核来完成大部分繁重的工作。
兼容性
显然,并非所有 Arduino 库都可以与 Pico/RP2040 一起使用。那些依赖 AVR 或 ESP 硬件的特定功能的就是一个很好的例子。在 Arduino 官方参考文档中列出的 4190 个库中,其中 1730 个针对 Pico C/C++ SDK成功编译(41%)。
我怀疑其中很大一部分由于依赖于其他库而无法编译。这可以通过调整CMakeLists.txt文件轻松解决,但这是一个手动过程,仅针对少数库完成。这是一个进展中的工作。
安装 pico-arduino-compat
1.克隆存储库
git clone https://github.com/fhdm-dev/pico-arduino-compat.git
2.初始化arduino-pico子模块
cd pico-arduino-compat git submodule update --init arduino-compat/arduino-pico
找到库 ID 和 cmake 目标名称
您需要您计划使用的 Arduino 库的确切库名称。如果您不知道,可以在官方Arduino 文档中找到库的名称。
现在转到pico-arduino-compat 库表并按 Arduino 库名称搜索库。
找到它后,请查看 Compile 列(右起第二个)。如果该列的值为 OK,则该库已通过基本编译测试,如果幸运的话,它无需任何修改即可与 Pico C/C++ SDK 一起使用。
记下 ID 和 CMake 目标名称。
初始化库
每个 Arduino 库存储库都作为一个子模块存储在 pico-arduino-compat 存储库中。默认情况下,git 会将子模块目录留空,直到它被初始化。要初始化它(以及它所依赖的 Arduino 库的子模块),请执行以下操作:
1. 将目录更改为 libs/,其中 是您在上面记下的 ID。从现在开始,我们将此目录称为库目录。
例如。对于 Arduino LiquidCrystal 库,ID 是液晶
cd libs/liquidcrystal
2. 初始化子模块。
在 linux 上只需运行以下脚本:
./init.sh
在其他操作系统上,只需在init.sh脚本中找到 git 命令并从命令行运行它。
将 Arduino 库添加到您的项目中
在项目的CMakeLists.txt文件中,将库目录添加为子目录
例如。
add_subdirectory(/home/fhdm-dev/pico/pico-arduino-compat/libs/liquidcrystal build-pac-liquidcrystal)
注意:传递给 add_subdirectory 的第二个参数的值并不重要。它只需要在您的项目中是独一无二的。我倾向于使用 build_ 其中 是库的 cmake 目标名称。
现在将 CMake 目标添加到CMakeLists.txt文件中的 target_link_libraries
例如。
target_link_libraries(somename pac-liquidcrystal )
注意:cmake 目标名称都以pac-开头,以帮助确保唯一性。
完毕。您现在应该能够在您的 Pico C/C++ SDK 项目中使用该库。
示例:Adafruit SSD1306
假设我们想在我们的项目中使用 Adafruit SSD1306 库。首先,我们在pico-arduino-compat 库表中查找条目,发现它的 ID 为adafruit-ssd1306 ,cmake 目标名称为pac-adafruit-ssd1306 。
您还会注意到 Test 列显示的值为Passed 。这意味着该库已经在真实设备上进行了测试,并且至少有一些功能可以工作。
将目录更改为库目录并列出其内容
cd libs/adafruit-ssd1306 ls
您看到的 Adafruit_SSD1306 目录作为 git 子模块包含在 pico-arduino-compat 存储库中,最初为空。
现在我们通过运行init.sh脚本来初始化子模块,如下所示:
./init.sh
您可能会注意到,这也会初始化它所依赖的 adafruit-gfx-library 的子模块,进而初始化 adafruit-busio 库。
注意:在非 Linux 操作系统上,您可能需要通过手动运行 git 命令来初始化子模块。有关详细信息,请参阅init.sh的内容。
现在需要修改我们项目的主CMakeLists.txt文件,添加 add_subdirectory 行并将库添加到 target_link_libraries。
例如:
cmake_minimum_required(VERSION 3.12) include(pico_sdk_import.cmake) project(adafruit-ssd1306-examples) pico_sdk_init() add_subdirectory(/home/fhdm-dev/pico/pico-arduino-compat/libs/adafruit-ssd1306 build_pac-adafruit-ssd1306) add_executable(text main.cpp ) target_link_libraries(text pac-adafruit-ssd1306 ) # create map/bin/hex file etc. pico_add_extra_outputs(text)
完毕。
有关工作示例,请参阅adafruid-ssd1306/pico-sdk-examples 。如果您编译示例并将 graphics.uf2 文件复制到您的 Pico,它应该如下所示:
示例:LiquidCrystal
官方 Arduino LiquidCrystal 库。有关示例代码,请参阅液晶/pico-sdk-examples 。
示例:字母和数字七段显示库
有关示例代码,请参阅letters-and-numbers-seven-segment-display-library/pico-sdk-examples 。
从 C 代码中使用 Arduino 库
以下是一些围绕 Arduino 库的示例包装器,允许从 C 代码中使用它们。
pico-adafruit-ssd1306
皮克官方液晶
结论
虽然最好使用专门为 Pico C/C++ SDK 编写的库,但与 Arduino 生态系统可用的库相比,库的选择是有限的。
对于那些只想让某些东西快速运行的时候,Arduino 库可能就足够了。
- 用电机和Raspberry Pi Pico组装人体骷髅
- 远程编程Raspberry Pi Pico
- Raspberry Pi Pico上的ADC采样和FFT
- Raspberry Pi Pico多功能入门套件
- Arduino Raspberry Pi Pico/RP2040以太网:W5100S EVB Pico
- 将Arduino和Raspberry Pi硬件设备与Minecraft游戏连接
- Raspberry Pi Pico作为HID鼠标
- 基于Raspberry pi pico的音量控制宏键盘 3次下载
- 使用Raspberry Pi Pico的LED序列
- Raspberry Pi Pico:使用PIO驱动伺服
- 印有PINOUT的Raspberry Pi pico分线板
- 适用于Raspberry Pi 4的Raspberry Pi Pico开发板
- 基于BME680和Raspberry Pi Pico的气象站
- raspberry pi Pico使用MicroPython变砖后的解决方法
- c++标准库手册 43次下载
- OpenHarmony标准系统C++公共基础类库案例:HelloWorld 226次阅读
- OpenVINO2024 C++推理使用技巧 406次阅读
- 5分钟内将Raspberry Pi Pico变成简单的示波器+波形发生器 1522次阅读
- C++简史:C++是如何开始的 415次阅读
- C语言和C++中那些不同的地方 748次阅读
- 如何使用Python和PinPong库控制Arduino 718次阅读
- 使用Raspberry Pi Pico W和MicroPython开发物联网应用 1673次阅读
- 使用C++编写通用库并在 Rust 中使用它 (WASI) 893次阅读
- 基于Raspberry Pi Pico的云端温湿度监测站设计 1773次阅读
- 树莓派之路:Arduino和Raspberry-Pi 1815次阅读
- 基于树莓派产品 Raspberry Pi微控制器板的优缺点 2710次阅读
- 如何从Raspberry Pi Pico的模数转换器捕获数据计算? 2580次阅读
- 基于Raspberry Pi Pico开发先进的家庭自动化系统 2850次阅读
- 什么是I2C通信协议? 7572次阅读
- arduino用什么语言编程 6.9w次阅读
下载排行
本周
- 1山景DSP芯片AP8248A2数据手册
- 1.06 MB | 532次下载 | 免费
- 2RK3399完整板原理图(支持平板,盒子VR)
- 3.28 MB | 339次下载 | 免费
- 3TC358743XBG评估板参考手册
- 1.36 MB | 330次下载 | 免费
- 4DFM软件使用教程
- 0.84 MB | 295次下载 | 免费
- 5元宇宙深度解析—未来的未来-风口还是泡沫
- 6.40 MB | 227次下载 | 免费
- 6迪文DGUS开发指南
- 31.67 MB | 194次下载 | 免费
- 7元宇宙底层硬件系列报告
- 13.42 MB | 182次下载 | 免费
- 8FP5207XR-G1中文应用手册
- 1.09 MB | 178次下载 | 免费
本月
- 1OrCAD10.5下载OrCAD10.5中文版软件
- 0.00 MB | 234315次下载 | 免费
- 2555集成电路应用800例(新编版)
- 0.00 MB | 33566次下载 | 免费
- 3接口电路图大全
- 未知 | 30323次下载 | 免费
- 4开关电源设计实例指南
- 未知 | 21549次下载 | 免费
- 5电气工程师手册免费下载(新编第二版pdf电子书)
- 0.00 MB | 15349次下载 | 免费
- 6数字电路基础pdf(下载)
- 未知 | 13750次下载 | 免费
- 7电子制作实例集锦 下载
- 未知 | 8113次下载 | 免费
- 8《LED驱动电路设计》 温德尔著
- 0.00 MB | 6656次下载 | 免费
总榜
- 1matlab软件下载入口
- 未知 | 935054次下载 | 免费
- 2protel99se软件下载(可英文版转中文版)
- 78.1 MB | 537798次下载 | 免费
- 3MATLAB 7.1 下载 (含软件介绍)
- 未知 | 420027次下载 | 免费
- 4OrCAD10.5下载OrCAD10.5中文版软件
- 0.00 MB | 234315次下载 | 免费
- 5Altium DXP2002下载入口
- 未知 | 233046次下载 | 免费
- 6电路仿真软件multisim 10.0免费下载
- 340992 | 191187次下载 | 免费
- 7十天学会AVR单片机与C语言视频教程 下载
- 158M | 183279次下载 | 免费
- 8proe5.0野火版下载(中文版免费下载)
- 未知 | 138040次下载 | 免费
评论
查看更多