|
本帖最后由 topdog 于 2021-11-1 00:30 编辑
Arduino已经发布了他们的Arduino Nano RP2040 Connect开发板,这是最近发布的Raspberry Pi Pico的一个端口。该端口也可用于其他基于RP2040的微控制器板,这是Raspberry Pi Foundation为Raspberry Pi Pico制造的专有芯片。与此同时,他们已经移植Arduino核心,将Arduino IDE,库等引入Raspberry Pi Pico!
一·、Arduino IDE安装
打开Arduino IDE-->工具-->开发板管理器-->arduino mbed os rp2040 boards,点击安装。
中间会提示安装驱动,勾选信任,点击安装。
安装好以后就能在开发板管理器arduino mbed os rp2040 boards以下选择aspberry Pi Pico了。
需要注意的重要一件事是您第一次上传Arduino IDE时需要遵循以下步骤:
在将Pico插入计算机时,您需要按住BOOTSEL按钮。然后,您可以点击Arduino IDE中的上载按钮,将blink传输到Pi Pico。之后,电脑会加载串口驱动,您将不得不选择一次在Arduino IDE--->工具-->端口-->串行端口菜单中显示的适当的串行端口。这使自动重置工具可以识别要重置的正确设备。
二、气象站实验
笔者以AM2301、OLED1306和Raspberry Pi Pico来制作一个本地气象站。
管脚特殊定义见 C:\Users\用户名\AppData\Local\Arduino15\packages\arduino\hardware\mbed_rp2040\2.5.2\variants\RASPBERRY_PI_PICO\pins_arduino.h
Raspberry Pi Pico管脚如下图:
(1)三者接线情况如下:
AM2301 OLED1306 Raspberry Pi Pico
vcc vcc 3.3(out)
gnd gnd gnd
data GP6
sda GP4
scl GP5
(2)程序
[pre]#include <Arduino.h>
#include <U8g2lib.h>
#include "DHT.h"
#ifdef U8X8_HAVE_HW_SPI
#include <SPI.h>
#endif
#ifdef U8X8_HAVE_HW_I2C
#include <Wire.h>
#endif
#define DHTPIN 6
#define DHTTYPE DHT21
DHT dht(DHTPIN, DHTTYPE);
U8G2_SSD1306_128X64_NONAME_F_SW_I2C u8g2(U8G2_R0, /* clock=*/ 5, /* data=*/ 4, /* reset=*/ U8X8_PIN_NONE);
void setup(void) {
Serial.begin(9600);
u8g2.begin();
dht.begin();
}
void loop(void) {
delay(2000);
float h = dht.readHumidity();
float t = dht.readTemperature();
float f = dht.readTemperature(true);
if (isnan(h) || isnan(t) || isnan(f)) {
Serial.println(F("Failed to read from DHT sensor!"));
return;
}
u8g2.clearBuffer(); // clear the internal memory
u8g2.setFont(u8g2_font_ncenB08_tr); // choose a suitable font
u8g2.drawStr( 0, 20, "Temperature"); // write something to the internal memory
u8g2.setCursor(72,20);
u8g2.print(t);
u8g2.print(" ");
u8g2.print("c");
u8g2.drawStr( 0, 42, "Humidity");
u8g2.setCursor(70, 42);
u8g2.print(h);
u8g2.print(" ");
u8g2.print("%");
u8g2.sendBuffer(); // transfer internal memory to the display
delay(1000);
}[/pre]
这个实验证明你可以象使用UNO、NANO一样操作pico,其i2c,Arduino的库兼容性没有任何问题,两者可以完美融合。
|
|