回到首页 返回首页
回到顶部 回到顶部
返回上一页 返回上一页

Beetle 树莓派RP2350------初学者视角的试用第一步:点亮oled 简单

头像 蠍蠍蠍蠍蠍 2025.06.05 29 2

激动的心,颤抖的手,第一次参加试用,也是兴奋的不行啊!!!!!!

 

作为一个相对于专业较为小白的选手,拿到Bettle RP2350板子的第一选择就是先查阅产品的说明,整理基础内容,规划第一步的点亮方案!

 

 

 

 产品详情:https://wiki.dfrobot.com.cn/SKU_DFR1188_Beetle_RP2350

image.png

我在这里需要提取基础的信息:支持软件/SDK安装方式;引脚说明。

 支持软件/SDK安装方式

image.png

这里我选择试用较为熟悉的Ardunio IDE作为驱动的软件,接下来尝试安装SDK

 

步骤为:1.打开Arduino ide;

2. 点击首选项;

3. 添加json;

image.png

4. 在开发板内搜索rp2350进行安装

image.png

至此,我们已经完成了编辑器的基础操作内容,下面需要开始了解Beetle RP2350的引脚分布,方便下面连接元件,开始我们的点灯之旅!

 

• Beetle RP2350的引脚分布

 

image.png
image.png

了解完之后发现,Bettle RP2350 提供了丰富的接口,下面我们结合OLED屏幕先做第一次的点亮!

image.png

oled屏幕采用了I2C连接方式,引脚对应连接:

gnd 屏幕电源负极 连接gnd

vcc 屏幕电源正极 连接 3v3

scl 屏幕i2c连接时钟线 连接D5

sda屏幕i2c连接数据线 l连接d4

image.png

连接完成 下面安装oled的驱动库 这里建议试用u8g2库 相对有较好的兼容

在库管理中搜索:U8G2,在搜索结果中安装即可

image.png

下面就是程序部分的写入了:

·库引入

o#include :引入 U8g2lib 库,该库用于与各种图形显示设备(如 SSD1306 OLED 显示屏)进行交互,提供了一系列函数来初始化、控制和在显示屏上绘制图形、文本等内容。

·变量声明与对象初始化

oU8G2_SSD1306_128X64_NONAME_F_HW_I2C u8g2(U8G2_R0, /* reset=*/ U8X8_PIN_NONE, 0x3C);:

 声明并初始化一个 U8G2 对象 u8g2,用于控制 SSD1306 128x64 OLED 显示屏。

 U8G2_SSD1306_128X64_NONAME_F_HW_I2C 表示使用硬件 I2C 接口与该型号的 OLED 进行通信。

 U8G2_R0 是显示旋转设置,这里表示正常方向。

 U8X8_PIN_NONE 表示不使用复位引脚。

 0x3C 是 OLED 的 I2C 地址,通过这个地址,RP2040 可以在 I2C 总线上识别并与 OLED 进行通信。

oconst int button = 9;:定义一个常量 button,表示连接按钮的 RP2040 的 GPIO 引脚号为 9。

 setup 函数

oSerial.begin(9600);:初始化串口通信,波特率设置为 9600,以便在调试过程中通过串口输出信息。

oif (!u8g2.begin()) {:尝试初始化 OLED 显示屏。如果初始化失败,通过串口打印 “U8g2 initialization failed”,并进入无限循环 while (1);,防止程序继续执行可能因未初始化成功而导致的错误操作。

opinMode(button, INPUT);:将连接按钮的引脚 9 设置为输入模式,以便读取按钮的状态。

 loop 函数

ou8g2.firstPage();:开始在 OLED 上进行页面绘制,准备在第一页显示内容。

odo { - while (u8g2.nextPage()); 循环:

 int mode = digitalRead(button);:读取按钮的当前状态(高电平或低电平),并存储在变量 mode 中。

 u8g2.setFont(u8g2_font_ncenB08_tr);:设置要使用的字体为 u8g2_font_ncenB08_tr,以便在显示屏上显示特定风格的文本。

 u8g2.setCursor(0, 12);:设置文本绘制的起始光标位置,这里是 (0, 12),表示从显示屏的左上角水平偏移 0 像素,垂直偏移 12 像素处开始绘制。

 u8g2.print("DF ROBOT");:在当前光标位置打印字符串 “DF ROBOT”。

 类似地,后续设置不同的光标位置并打印 “Beetle RP2040”、按钮状态 mode 和日期 “DATE:2025/5/1”。

 u8g2.nextPage();:移动到下一页继续绘制,直到所有页面绘制完成。OLED 显示屏可能有多页,这个循环确保在所有页面上绘制内容。

odelay(30);:延迟 30 毫秒,防止程序运行过快,同时也可以让 OLED 有足够时间显示内容。

代码
#include <U8g2lib.h>
// 初始化U8g2库(I2C接口),指定地址为0x3C
U8G2_SSD1306_128X64_NONAME_F_HW_I2C u8g2(U8G2_R0, /* reset=*/ U8X8_PIN_NONE, 0x3C);

void setup() {
    Serial.begin(9600); 
    if (!u8g2.begin()) {
        Serial.println("lose");
        while (1);
    }
}

void loop() {
    u8g2.firstPage();
    do {
      int mode = digitalRead(button);
        // 显示第一行(四字一行)
        u8g2.setFont(u8g2_font_ncenB08_tr); // 更换字体
        u8g2.setCursor(0, 12);
        u8g2.print("DF ROBOT");
        u8g2.setCursor(0, 24);
        u8g2.print("Beetle RP2350");
        u8g2.setCursor(0, 36);
        u8g2.print(mode);
        u8g2.setCursor(0, 48);
        u8g2.print("DATE:2025/6/1");
    } while (u8g2.nextPage());
    delay(30);
}

image.png

成功点亮oled!!!!!第一步试用结束后发现总体官方的配置特别好,对于初学者的上手很友好!!!下篇我们来利用oled配合按钮在oled制作一个小游戏哈!!!!

评论

user-avatar
  • 小高……

    小高……2025.06.05

    还得是大佬😎

    0
    • ROCK-PENG

      ROCK-PENG2025.06.05

      通俗易懂

      0