資料介紹
描述
除了價(jià)格低廉、I/O 選項(xiàng)和 PIO 范圍廣泛之外,Pico 的一大優(yōu)點(diǎn)是 C/C++ SDK。Raspberry Pi 的人們?cè)趧?chuàng)建一個(gè)易于使用的編程環(huán)境方面做得很好,但如果你想要的話,仍然可以讓你接近硬件。更不用說全面的文檔了。
使用 C/C++ SDK 的一個(gè)缺點(diǎn)是缺少庫(kù)。Raspberry PI 論壇上的用戶@martinkooij編制了一份可用庫(kù)列表,雖然數(shù)量在增加,但與使用 Arduino IDE 時(shí)可用的大量庫(kù)相比還差得遠(yuǎn)。僅Arduino 參考文檔就列出了 4000 多個(gè)庫(kù)。
如果您的傳感器、顯示器或其他外圍設(shè)備不存在 Pico C/C++ SDK 庫(kù),那么很可能存在 Arduino 庫(kù)。
在本教程中,我將引導(dǎo)您完成使用 pico-arduino-compat 將 Arduino 庫(kù)添加到您的 Pico C/C++ SDK 項(xiàng)目的過程。
什么是 pico-arduino-compat?
pico-arduino-compat 是一個(gè)兼容層,它允許(某些)Arduino 庫(kù)不加修改地用于使用 Pico C/C++ SDK 編寫的項(xiàng)目中。
對(duì)于 Arduino 官方文檔中列出的每個(gè) Arduino 庫(kù)(超過 4000 個(gè)),都有一個(gè)相應(yīng)的 cmake 接口庫(kù),可以直接在 Pico C/C++ SDK 項(xiàng)目中使用。
pico-arduino-compat 兼容層利用earlephilhower 出色的RP2040 Arduino 內(nèi)核來完成大部分繁重的工作。
兼容性
顯然,并非所有 Arduino 庫(kù)都可以與 Pico/RP2040 一起使用。那些依賴 AVR 或 ESP 硬件的特定功能的就是一個(gè)很好的例子。在 Arduino 官方參考文檔中列出的 4190 個(gè)庫(kù)中,其中 1730 個(gè)針對(duì) Pico C/C++ SDK成功編譯(41%)。
我懷疑其中很大一部分由于依賴于其他庫(kù)而無法編譯。這可以通過調(diào)整CMakeLists.txt文件輕松解決,但這是一個(gè)手動(dòng)過程,僅針對(duì)少數(shù)庫(kù)完成。這是一個(gè)進(jìn)展中的工作。
安裝 pico-arduino-compat
1.克隆存儲(chǔ)庫(kù)
?
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
?
找到庫(kù) ID 和 cmake 目標(biāo)名稱
您需要您計(jì)劃使用的 Arduino 庫(kù)的確切庫(kù)名稱。如果您不知道,可以在官方Arduino 文檔中找到庫(kù)的名稱。
現(xiàn)在轉(zhuǎn)到pico-arduino-compat 庫(kù)表并按 Arduino 庫(kù)名稱搜索庫(kù)。
找到它后,請(qǐng)查看 Compile 列(右起第二個(gè))。如果該列的值為 OK,則該庫(kù)已通過基本編譯測(cè)試,如果幸運(yùn)的話,它無需任何修改即可與 Pico C/C++ SDK 一起使用。
記下 ID 和 CMake 目標(biāo)名稱。
初始化庫(kù)
每個(gè) Arduino 庫(kù)存儲(chǔ)庫(kù)都作為一個(gè)子模塊存儲(chǔ)在 pico-arduino-compat 存儲(chǔ)庫(kù)中。默認(rèn)情況下,git 會(huì)將子模塊目錄留空,直到它被初始化。要初始化它(以及它所依賴的 Arduino 庫(kù)的子模塊),請(qǐng)執(zhí)行以下操作:
1. 將目錄更改為 libs/,其中 是您在上面記下的 ID。從現(xiàn)在開始,我們將此目錄稱為庫(kù)目錄。
例如。對(duì)于 Arduino LiquidCrystal 庫(kù),ID 是液晶
?
cd libs/liquidcrystal
?
2. 初始化子模塊。
在 linux 上只需運(yùn)行以下腳本:
?
./init.sh
?
在其他操作系統(tǒng)上,只需在init.sh腳本中找到 git 命令并從命令行運(yùn)行它。
將 Arduino 庫(kù)添加到您的項(xiàng)目中
在項(xiàng)目的CMakeLists.txt文件中,將庫(kù)目錄添加為子目錄
例如。
?
add_subdirectory(/home/fhdm-dev/pico/pico-arduino-compat/libs/liquidcrystal build-pac-liquidcrystal)
?
注意:傳遞給 add_subdirectory 的第二個(gè)參數(shù)的值并不重要。它只需要在您的項(xiàng)目中是獨(dú)一無二的。我傾向于使用 build_ 其中 是庫(kù)的 cmake 目標(biāo)名稱。
現(xiàn)在將 CMake 目標(biāo)添加到CMakeLists.txt文件中的 target_link_libraries
例如。
?
target_link_libraries(somename pac-liquidcrystal )
?
注意:cmake 目標(biāo)名稱都以pac-開頭,以幫助確保唯一性。
完畢。您現(xiàn)在應(yīng)該能夠在您的 Pico C/C++ SDK 項(xiàng)目中使用該庫(kù)。
示例:Adafruit SSD1306
假設(shè)我們想在我們的項(xiàng)目中使用 Adafruit SSD1306 庫(kù)。首先,我們?cè)趐ico-arduino-compat 庫(kù)表中查找條目,發(fā)現(xiàn)它的 ID 為adafruit-ssd1306 ,cmake 目標(biāo)名稱為pac-adafruit-ssd1306 。
您還會(huì)注意到 Test 列顯示的值為Passed 。這意味著該庫(kù)已經(jīng)在真實(shí)設(shè)備上進(jìn)行了測(cè)試,并且至少有一些功能可以工作。
將目錄更改為庫(kù)目錄并列出其內(nèi)容
?
cd libs/adafruit-ssd1306 ls
?
您看到的 Adafruit_SSD1306 目錄作為 git 子模塊包含在 pico-arduino-compat 存儲(chǔ)庫(kù)中,最初為空。
現(xiàn)在我們通過運(yùn)行init.sh腳本來初始化子模塊,如下所示:
?
./init.sh
?
您可能會(huì)注意到,這也會(huì)初始化它所依賴的 adafruit-gfx-library 的子模塊,進(jìn)而初始化 adafruit-busio 庫(kù)。
注意:在非 Linux 操作系統(tǒng)上,您可能需要通過手動(dòng)運(yùn)行 git 命令來初始化子模塊。有關(guān)詳細(xì)信息,請(qǐng)參閱init.sh的內(nèi)容。
現(xiàn)在需要修改我們項(xiàng)目的主CMakeLists.txt文件,添加 add_subdirectory 行并將庫(kù)添加到 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)
?
完畢。
有關(guān)工作示例,請(qǐng)參閱adafruid-ssd1306/pico-sdk-examples 。如果您編譯示例并將 graphics.uf2 文件復(fù)制到您的 Pico,它應(yīng)該如下所示:

示例:LiquidCrystal
官方 Arduino LiquidCrystal 庫(kù)。有關(guān)示例代碼,請(qǐng)參閱液晶/pico-sdk-examples 。

示例:字母和數(shù)字七段顯示庫(kù)
有關(guān)示例代碼,請(qǐng)參閱letters-and-numbers-seven-segment-display-library/pico-sdk-examples 。
從 C 代碼中使用 Arduino 庫(kù)
以下是一些圍繞 Arduino 庫(kù)的示例包裝器,允許從 C 代碼中使用它們。
pico-adafruit-ssd1306
皮克官方液晶
結(jié)論
雖然最好使用專門為 Pico C/C++ SDK 編寫的庫(kù),但與 Arduino 生態(tài)系統(tǒng)可用的庫(kù)相比,庫(kù)的選擇是有限的。
對(duì)于那些只想讓某些東西快速運(yùn)行的時(shí)候,Arduino 庫(kù)可能就足夠了。
- 用電機(jī)和Raspberry Pi Pico組裝人體骷髏
- 遠(yuǎn)程編程Raspberry Pi Pico
- Raspberry Pi Pico上的ADC采樣和FFT
- Raspberry Pi Pico多功能入門套件
- RP2040 Raspberry Pi Pico遇見LoRa
- Arduino Raspberry Pi Pico/RP2040以太網(wǎng):W5100S EVB Pico
- 將Arduino和Raspberry Pi硬件設(shè)備與Minecraft游戲連接
- Raspberry Pi Pico作為HID鼠標(biāo)
- 基于Raspberry pi pico的音量控制宏鍵盤 3次下載
- 使用Raspberry Pi Pico的LED序列
- Raspberry Pi Pico:使用PIO驅(qū)動(dòng)伺服
- 印有PINOUT的Raspberry Pi pico分線板
- 適用于Raspberry Pi 4的Raspberry Pi Pico開發(fā)板
- 基于BME680和Raspberry Pi Pico的氣象站
- raspberry pi Pico使用MicroPython變磚后的解決方法
- 基于OpenHarmony標(biāo)準(zhǔn)系統(tǒng)的C++公共基礎(chǔ)類庫(kù)案例:ThreadPoll 722次閱讀
- OpenVINO2024 C++推理使用技巧 2k次閱讀
- 5分鐘內(nèi)將Raspberry Pi Pico變成簡(jiǎn)單的示波器+波形發(fā)生器 4.1k次閱讀
- C++簡(jiǎn)史:C++是如何開始的 1.5k次閱讀
- C語言和C++中那些不同的地方 2.1k次閱讀
- 如何使用Python和PinPong庫(kù)控制Arduino 2.1k次閱讀
- 使用Raspberry Pi Pico W和MicroPython開發(fā)物聯(lián)網(wǎng)應(yīng)用 3.4k次閱讀
- 使用C++編寫通用庫(kù)并在 Rust 中使用它 (WASI) 2k次閱讀
- 基于Raspberry Pi Pico的云端溫濕度監(jiān)測(cè)站設(shè)計(jì) 2.7k次閱讀
- 樹莓派之路:Arduino和Raspberry-Pi 2.7k次閱讀
- 基于樹莓派產(chǎn)品 Raspberry Pi微控制器板的優(yōu)缺點(diǎn) 3.6k次閱讀
- 如何從Raspberry Pi Pico的模數(shù)轉(zhuǎn)換器捕獲數(shù)據(jù)計(jì)算? 3.5k次閱讀
- 基于Raspberry Pi Pico開發(fā)先進(jìn)的家庭自動(dòng)化系統(tǒng) 3.6k次閱讀
- 什么是I2C通信協(xié)議? 8.8k次閱讀
- arduino用什么語言編程 7.1w次閱讀
下載排行
本周
- 1新一代網(wǎng)絡(luò)可視化(NPB 2.0)
- 3.40 MB | 1次下載 | 免費(fèi)
- 2冷柜-電氣控制系統(tǒng)講解
- 13.68 MB | 1次下載 | 10 積分
- 3MDD品牌三極管MMBT3906數(shù)據(jù)手冊(cè)
- 2.33 MB | 次下載 | 免費(fèi)
- 4MDD品牌三極管S9012數(shù)據(jù)手冊(cè)
- 2.62 MB | 次下載 | 免費(fèi)
- 5LAT1218 如何選擇和設(shè)置外部晶體適配 BlueNRG-X
- 0.60 MB | 次下載 | 3 積分
- 6LAT1216 Blue NRG-1/2 系列芯片 Flash 操作與 BLE 事件的互斥處理
- 0.89 MB | 次下載 | 3 積分
- 7收音環(huán)繞擴(kuò)音機(jī) AVR-1507手冊(cè)
- 2.50 MB | 次下載 | 免費(fèi)
- 8MS1000TA 超聲波測(cè)量模擬前端芯片技術(shù)手冊(cè)
- 0.60 MB | 次下載 | 免費(fèi)
本月
- 1愛華AIWA HS-J202維修手冊(cè)
- 3.34 MB | 37次下載 | 免費(fèi)
- 2PC5502負(fù)載均流控制電路數(shù)據(jù)手冊(cè)
- 1.63 MB | 23次下載 | 免費(fèi)
- 3NB-IoT芯片廠商的資料說明
- 0.31 MB | 22次下載 | 1 積分
- 4UWB653Pro USB口測(cè)距通信定位模塊規(guī)格書
- 838.47 KB | 5次下載 | 免費(fèi)
- 5蘇泊爾DCL6907(即CHK-S007)單芯片電磁爐原理圖資料
- 0.04 MB | 4次下載 | 1 積分
- 6蘇泊爾DCL6909(即CHK-S009)單芯片電磁爐原理圖資料
- 0.08 MB | 2次下載 | 1 積分
- 7100W準(zhǔn)諧振反激式恒流電源電路圖資料
- 0.09 MB | 2次下載 | 1 積分
- 8FS8025B USB的PD和OC快充協(xié)議電壓誘騙控制器IC技術(shù)手冊(cè)
- 1.81 MB | 1次下載 | 免費(fèi)
總榜
- 1matlab軟件下載入口
- 未知 | 935137次下載 | 10 積分
- 2開源硬件-PMP21529.1-4 開關(guān)降壓/升壓雙向直流/直流轉(zhuǎn)換器 PCB layout 設(shè)計(jì)
- 1.48MB | 420064次下載 | 10 積分
- 3Altium DXP2002下載入口
- 未知 | 233089次下載 | 10 積分
- 4電路仿真軟件multisim 10.0免費(fèi)下載
- 340992 | 191439次下載 | 10 積分
- 5十天學(xué)會(huì)AVR單片機(jī)與C語言視頻教程 下載
- 158M | 183353次下載 | 10 積分
- 6labview8.5下載
- 未知 | 81602次下載 | 10 積分
- 7Keil工具M(jìn)DK-Arm免費(fèi)下載
- 0.02 MB | 73822次下載 | 10 積分
- 8LabVIEW 8.6下載
- 未知 | 65991次下載 | 10 積分
電子發(fā)燒友App





創(chuàng)作
發(fā)文章
發(fā)帖
提問
發(fā)資料
發(fā)視頻
上傳資料賺積分
評(píng)論