鱼C论坛

 找回密码
 立即注册
查看: 691|回复: 24

Arduino oled显示

[复制链接]
发表于 2024-1-10 17:27:38 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
@fishc
Arduino oled显示"你好"
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2024-1-10 17:27:54 | 显示全部楼层
要在Arduino上使用oled显示屏显示文本,你首先需要连接oled显示屏到Arduino。

oled显示屏通常通过I2C通信协议进行连接。在Arduino上,有两个引脚(A4和A5)专门用于I2C通信。你需要将oled屏幕的SDA引脚连接到A4引脚,SCL引脚连接到A5引脚。

接下来,你需要安装支持oled显示屏的库。在Arduino IDE中,点击“工具”->“管理库”,然后在搜索栏中输入“SSD1306”,找到适合你的oled型号的库并安装。

一旦库安装完成,你可以尝试下面的代码:

  1. #include <Wire.h>  //引入I2C通信库
  2. #include <Adafruit_GFX.h> //引入oled显示库
  3. #include <Adafruit_SSD1306.h>

  4. #define OLED_RESET 4  // OLED重置引脚,默认为4
  5. Adafruit_SSD1306 display(OLED_RESET);  // 创建SSD1306对象

  6. void setup() {
  7.   // 初始化I2C通信
  8.   Wire.begin();
  9.   // 启动oled显示屏
  10.   display.begin(SSD1306_SWITCHCAPVCC, 0x3C);  // 0x3C是oled显示屏的地址(可以根据你的显示屏型号进行修改)
  11.   // 清空显示屏
  12.   display.clearDisplay();
  13. }

  14. void loop() {
  15.   // 设置字体大小
  16.   display.setTextSize(1);
  17.   // 设置文本颜色(白色)
  18.   display.setTextColor(WHITE);
  19.   // 显示文本
  20.   display.setCursor(0, 0);
  21.   display.println("你好");
  22.   // 更新显示
  23.   display.display();
  24.   delay(1000);  // 延迟1秒,然后再次显示"你好"
  25. }
复制代码


当你上传这段代码到Arduino后,你的oled显示屏上将会显示"你好"。每隔1秒钟,"你好"都会重新显示一次。

希望这能帮到你!如果有任何问题,请随时提问。

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2024-1-10 17:43:42 | 显示全部楼层
FishC 发表于 2024-1-10 17:27
要在Arduino上使用oled显示屏显示文本,你首先需要连接oled显示屏到Arduino。

oled显示屏通常通过I2C通 ...

中文乱码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2024-1-10 17:43:56 | 显示全部楼层


如果在OLED显示屏上显示中文出现乱码,可能是因为默认的字体库不支持中文字符。为了解决这个问题,你可以下载一个支持中文字符的字体库并替换原来的字体库。以下是一些步骤:

1. 找到一个支持中文的字体库文件(.ttf或者.bdf格式)。你可以在互联网上搜索“Arduino OLED中文字库”来找到一些可用的字体库文件。

2. 将字体库文件转换成C语言数组。你可以使用一些在线工具或者字体库生成器来完成这个步骤。将生成的C语言数组复制到你的Arduino代码中。

3. 调用新的字体库。在你的代码中,找到设置字体大小和颜色的部分,并添加一行代码来调用新的字体库。例如,使用`display.setFont(字体名)`来设置新的字体。

下面是一个示例代码,演示了如何使用新的支持中文字符的字体库:

  1. #include <Wire.h>
  2. #include <Adafruit_GFX.h>
  3. #include <Adafruit_SSD1306.h>

  4. #define OLED_RESET 4
  5. Adafruit_SSD1306 display(OLED_RESET);

  6. // 替换为你的中文字库数组
  7. const uint8_t ChineseFont[] PROGMEM = {
  8.   // 中文字符的C语言数组
  9. };

  10. void setup() {
  11.   Wire.begin();
  12.   display.begin(SSD1306_SWITCHCAPVCC, 0x3C);
  13.   display.clearDisplay();
  14.   
  15.   // 设置新的字体库
  16.   display.setFont(ChineseFont);

  17.   display.setTextSize(1);
  18.   display.setTextColor(WHITE);
  19.   
  20.   display.setCursor(0, 0);
  21.   display.println("你好");
  22.   
  23.   display.display();
  24. }

  25. void loop() {
  26.   
  27. }
复制代码


记得在`ChineseFont`数组中替换为你自己的中文字库数组。上传这段代码到Arduino后,你的OLED显示屏应该能正确显示中文字符了。

希望这对你有所帮助!如果还有其他问题,请随时提问。

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2024-1-10 17:45:41 | 显示全部楼层
FishC 发表于 2024-1-10 17:43
如果在OLED显示屏上显示中文出现乱码,可能是因为默认的字体库不支持中文字符。为了解决这个问题,你可 ...

使用u8g2 实现显示中文
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2024-1-10 17:46:43 | 显示全部楼层
yc0526vip 发表于 2024-01-10 17:45
使用u8g2 实现显示中文


使用U8g2库可以实现在Arduino上显示中文。首先,你需要确保已经安装了U8g2库。在Arduino IDE中,点击“工具”->“管理库”,然后搜索“U8g2”,找到适合你的OLED型号的库并安装。

下面是一个示例代码,演示了如何使用U8g2库显示中文:

  1. #include <U8g2lib.h>
  2. #include <Wire.h>

  3. U8G2_SSD1306_128X64_NONAME_1_HW_I2C u8g2(U8G2_R0, /* reset=*/ U8X8_PIN_NONE);

  4. void setup() {
  5.   // 初始化I2C通信
  6.   Wire.begin();
  7.   // 启动OLED显示屏
  8.   u8g2.begin();
  9. }

  10. void loop() {
  11.   u8g2.clearBuffer();  // 清空显示缓冲区

  12.   // 设置字体大小和样式
  13.   u8g2.setFont(u8g2_font_wqy12_t_gb2312);  // 使用内置的中文字体

  14.   // 显示中文
  15.   u8g2.setCursor(0, 30);
  16.   u8g2.print("你好,世界!");

  17.   u8g2.sendBuffer();  // 将缓冲区的内容发送到OLED显示屏上

  18.   delay(1000);  // 延迟1秒钟
  19. }
复制代码


在这个示例代码中,我们使用了U8g2库的SSD1306_128X64_NONAME_1_HW_I2C驱动,并使用了内置的中文字体u8g2_font_wqy12_t_gb2312。你可以根据自己的OLED型号来选择合适的驱动和字体。

上传这段代码到Arduino后,你的OLED显示屏将会显示中文字符"你好,世界!"。

希望这对你有所帮助!如果还有其他问题,请随时提问。

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2024-1-10 18:00:19 | 显示全部楼层
FishC 发表于 2024-1-10 17:46
使用U8g2库可以实现在Arduino上显示中文。首先,你需要确保已经安装了U8g2库。在Arduino IDE中,点击“ ...

调整代码,将代码改成"你好"世界",循环显示

//  by lingshunlab.com

#include <Arduino.h>
#include <U8g2lib.h>
#include <Wire.h>

// 定义u8g2实例
// 选择正确的屏幕芯片SH1106,分辨率128X64,接线方式I2C
U8G2_SH1106_128X64_NONAME_1_HW_I2C u8g2(U8G2_R0, /* reset=*/ U8X8_PIN_NONE);

void setup() {
  u8g2.begin(); // 初始化u8g2
  u8g2.enableUTF8Print();  // 启动UTF8,需要显示中文,必须要开启
}

void loop() {
  // 定义字体,该u8g2_font_unifont_t_chinese2字库只支持一些常见的中文
  u8g2.setFont(u8g2_font_unifont_t_chinese2);
  u8g2.setFontDirection(0);
  u8g2.firstPage();
  do { // 显示的内容
    u8g2.setCursor(18, 20);
    u8g2.print("Hello World!!");
    u8g2.setCursor(28, 45);
    u8g2.print("你好,世界!");    // Chinese "Hello World"
  } while ( u8g2.nextPage() );
  delay(1000);
}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2024-1-10 18:00:34 | 显示全部楼层
yc0526vip 发表于 2024-01-10 18:00
调整代码,将代码改成"你好"世界",循环显示

//  b ...


以下是已经调整过的代码:

  1. ++
  2. #include <Wire.h>
  3. #include <U8g2lib.h>

  4. // 定义u8g2实例
  5. // 选择正确的屏幕芯片SH1106,分辨率128X64,接线方式I2C
  6. U8G2_SH1106_128X64_NONAME_1_HW_I2C u8g2(U8G2_R0, /* reset=*/ U8X8_PIN_NONE);

  7. void setup() {
  8.   u8g2.begin(); // 初始化u8g2
  9.   u8g2.enableUTF8Print(); // 启动UTF8,需要显示中文,必须要开启
  10. }

  11. void loop() {
  12.   // 定义字体,该u8g2_font_wqy12_t_gb2312字库只支持一些常见的中文
  13.   u8g2.setFont(u8g2_font_wqy12_t_gb2312);
  14.   u8g2.setFontDirection(0);
  15.   
  16.   u8g2.firstPage();
  17.   do {
  18.     // 显示的内容
  19.     u8g2.setCursor(18, 20);
  20.     u8g2.print("你好");
  21.     u8g2.setCursor(24, 45);
  22.     u8g2.print("世界!");
  23.   } while ( u8g2.nextPage() );
  24.   
  25.   delay(1000);
  26. }
复制代码


此代码将在OLED显示屏上循环显示"你好世界!"。确保正确连接并选择了适合你的屏幕驱动和字库。上传代码后,OLED显示屏将显示"你好世界!"并每秒刷新一次。希望可以帮助到你!如有其他问题,请随时提问。

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2024-1-10 18:07:20 | 显示全部楼层
FishC 发表于 2024-1-10 18:00
以下是已经调整过的代码:

让你好 世界 闪烁
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2024-1-10 18:07:34 | 显示全部楼层
yc0526vip 发表于 2024-01-10 18:07
让你好 世界 闪烁


要让"你好 世界"闪烁,你可以在代码中添加一个变量来控制显示的开关状态。下面是已经修改的代码:
  1. #include <U8g2lib.h>
  2. #include <Wire.h>

  3. U8G2_SH1106_128X64_NONAME_1_HW_I2C u8g2(U8G2_R0, /* reset=*/ U8X8_PIN_NONE);

  4. bool displayOn = true;

  5. void setup() {
  6.   u8g2.begin(); // 初始化u8g2
  7.   u8g2.enableUTF8Print(); // 启用UTF8打印
  8. }

  9. void loop() {
  10.   u8g2.setFont(u8g2_font_wqy12_t_gb2312); // 设置字体,该字库只支持一些常见的中文字符
  11.   u8g2.setFontDirection(0);

  12.   u8g2.firstPage();
  13.   do {
  14.     u8g2.setCursor(18, 20);
  15.     if (displayOn) {
  16.       u8g2.print("你好");
  17.     } else {
  18.       u8g2.print("    "); // 空格来覆盖之前的文字
  19.     }
  20.     u8g2.setCursor(24, 45);
  21.     if (displayOn) {
  22.       u8g2.print("世界!");
  23.     } else {
  24.       u8g2.print("      "); // 空格来覆盖之前的文字
  25.     }
  26.   } while (u8g2.nextPage());

  27.   delay(500); // 延迟500毫秒

  28.   displayOn = !displayOn; // 切换显示开关状态
  29. }
复制代码

这段代码会使 "你好" 和 "世界!" 在显示屏上闪烁。每500毫秒,显示的文本会切换一次。希望这对你有所帮助!如果还有其他问题,请随时提问。

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2024-1-10 18:11:33 | 显示全部楼层
FishC 发表于 2024-1-10 18:07
要让"你好 世界"闪烁,你可以在代码中添加一个变量来控制显示的开关状态。下面是已经修改的代码:

...

调整代码,你好 世界 不同频率闪烁
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2024-1-10 18:11:49 | 显示全部楼层
yc0526vip 发表于 2024-01-10 18:11
调整代码,你好 世界 不同频率闪烁


要使"你好"和"世界"以不同的频率闪烁,你可以为每个文本使用不同的闪烁频率。下面是已经调整的代码:#include #include U8G2_SH1106_128X64_NONAME_1_HW_I2C u8g2(U8G2_R0, /* reset=*/ U8X8_PIN_NONE);bool displayOn1 = true;  // 控制"你好"的显示开关状态bool displayOn2 = true;  // 控制"世界"的显示开关状态unsigned long previousMillis1 = 0;  // 用于计算时间间隔unsigned long previousMillis2 = 0;void setup() {  u8g2.begin(); // 初始化u8g2  u8g2.enableUTF8Print(); // 启用UTF8打印}void loop() {  unsigned long currentMillis = millis();  if (currentMillis - previousMillis1 >= 1000) {    previousMillis1 = currentMillis;    displayOn1 = !displayOn1; // 切换"你好"的显示开关状态  }  if (currentMillis - previousMillis2 >= 500) {    previousMillis2 = currentMillis;    displayOn2 = !displayOn2; // 切换"世界"的显示开关状态  }  u8g2.setFont(u8g2_font_wqy12_t_gb2312);  u8g2.setFontDirection(0);  u8g2.firstPage();  do {    u8g2.setCursor(18, 20);    if (displayOn1) {      u8g2.print("你好");    } else {      u8g2.print("    "); // 空格来覆盖之前的文字    }    u8g2.setCursor(24, 45);    if (displayOn2) {      u8g2.print("世界!");    } else {      u8g2.print("      "); // 空格来覆盖之前的文字    }  } while (u8g2.nextPage());}在这个修改后的代码中,"你好"每隔1秒闪烁一次,"世界"每隔0.5秒闪烁一次。希望这样满足了你的需求!如果还有其他问题,请随时提问。

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2024-1-10 18:16:44 | 显示全部楼层
FishC 发表于 2024-1-10 18:11
要使"你好"和"世界"以不同的频率闪烁,你可以为每个文本使用不同的闪烁频率。下面是已经调整的代码:#i ...

排版错误,重新输出
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2024-1-10 18:16:57 | 显示全部楼层
yc0526vip 发表于 2024-01-10 18:16
排版错误,重新输出


非常抱歉排版错误,下面是重新调整过的代码:
  1. #include <U8g2lib.h>
  2. #include <Wire.h>

  3. U8G2_SH1106_128X64_NONAME_1_HW_I2C u8g2(U8G2_R0, /* reset=*/ U8X8_PIN_NONE);

  4. bool displayOn1 = true;  // 控制"你好"的显示开关状态
  5. bool displayOn2 = true;  // 控制"世界"的显示开关状态
  6. unsigned long previousMillis1 = 0;  // 用于计算时间间隔
  7. unsigned long previousMillis2 = 0;

  8. void setup() {
  9.   u8g2.begin(); // 初始化u8g2
  10.   u8g2.enableUTF8Print(); // 启用UTF8打印
  11. }

  12. void loop() {
  13.   unsigned long currentMillis = millis();
  14.   
  15.   if (currentMillis - previousMillis1 >= 1000) {
  16.     previousMillis1 = currentMillis;
  17.     displayOn1 = !displayOn1; // 切换"你好"的显示开关状态
  18.   }
  19.   
  20.   if (currentMillis - previousMillis2 >= 500) {
  21.     previousMillis2 = currentMillis;
  22.     displayOn2 = !displayOn2; // 切换"世界"的显示开关状态
  23.   }
  24.   
  25.   u8g2.setFont(u8g2_font_wqy12_t_gb2312);
  26.   u8g2.setFontDirection(0);
  27.   
  28.   u8g2.firstPage();
  29.   do {
  30.     u8g2.setCursor(18, 20);
  31.     if (displayOn1) {
  32.       u8g2.print("你好");
  33.     } else {
  34.       u8g2.print("    "); // 空格来覆盖之前的文字
  35.     }
  36.    
  37.     u8g2.setCursor(24, 45);
  38.     if (displayOn2) {
  39.       u8g2.print("世界!");
  40.     } else {
  41.       u8g2.print("      "); // 空格来覆盖之前的文字
  42.     }
  43.   } while (u8g2.nextPage());
  44. }
复制代码

现在你可以上传这段代码到Arduino,屏幕上会显示"你好"和"世界",并且它们以不同的频率闪烁。每隔1秒钟,"你好"会闪烁一次,而"世界"则每隔0.5秒闪烁一次。希望这次的输出没有排版错误!如果还有其他问题,请随时提问。

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2024-1-10 18:19:46 | 显示全部楼层
FishC 发表于 2024-1-10 18:16
非常抱歉排版错误,下面是重新调整过的代码:

现在你可以上传这段代码到Arduino,屏幕上会显示"你好 ...

调整代码 随机位置,随机时间
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2024-1-10 18:19:56 | 显示全部楼层
yc0526vip 发表于 2024-01-10 18:19
调整代码 随机位置,随机时间


好的,你想要在随机位置和随机时间显示文本。下面是调整过的代码实现这个功能:

  1. #include <Adafruit_GFX.h>
  2. #include <Adafruit_SSD1306.h>
  3. #include <Wire.h>

  4. Adafruit_SSD1306 display(128, 64, &Wire, -1);

  5. int pos_x = 0;  // 文本的X坐标位置
  6. int pos_y = 0;  // 文本的Y坐标位置
  7. unsigned long previousMillis = 0;  // 上一次文本更新的时间
  8. unsigned long interval = 0;  // 更新文本的时间间隔

  9. void setup() {
  10.   display.begin(SSD1306_SWITCHCAPVCC, 0x3C);
  11.   display.clearDisplay();
  12. }

  13. void loop() {
  14.   unsigned long currentMillis = millis();

  15.   if (currentMillis - previousMillis >= interval) {
  16.     previousMillis = currentMillis;
  17.     interval = random(500, 2000);  // 随机生成更新时间间隔(500ms到2000ms之间)

  18.     pos_x = random(0, display.width() - 16);  // 随机生成X坐标位置
  19.     pos_y = random(0, display.height() - 8);  // 随机生成Y坐标位置

  20.     display.clearDisplay();  // 清空屏幕
  21.     display.setTextSize(1);
  22.     display.setTextColor(WHITE);
  23.     display.setCursor(pos_x, pos_y);
  24.     display.println("你好");

  25.     display.display();
  26.   }
  27. }
复制代码


在这段代码中,我们使用了`random()`函数来生成随机的位置和时间间隔。在每次更新文本之前,我们会重新生成随机的X坐标、Y坐标和时间间隔。然后,我们使用`display.setCursor()`函数将文本放置到随机位置,并使用`display.print()`函数打印文本。

你可以上传这段代码到Arduino,并观察屏幕上的效果。每隔一段随机的时间,屏幕上会出现一个随机位置的"你好"文本。希望这次的代码符合你的需求!如果还有其他问题,请随时提问。

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2024-1-10 18:38:52 | 显示全部楼层
FishC 发表于 2024-1-10 18:19
好的,你想要在随机位置和随机时间显示文本。下面是调整过的代码实现这个功能:

调整代码 "你好 哈哈 世界" 随机出现在别的地方
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2024-1-10 18:39:08 | 显示全部楼层
yc0526vip 发表于 2024-1-10 18:38
调整代码 "你好 哈哈 世界" 随机出现在别的地方

调整代码 "你好 哈哈 世界" 随机出现在别的地方

#include <U8g2lib.h>
#include <Wire.h>

U8G2_SH1106_128X64_NONAME_1_HW_I2C u8g2(U8G2_R0, /* reset=*/ U8X8_PIN_NONE);

bool displayOn1 = true;  // 控制"你好"的显示开关状态
bool displayOn2 = true;  // 控制"世界"的显示开关状态
bool displayOn3 = true;  // 控制"世界"的显示开关状态
unsigned long previousMillis1 = 0;  // 用于计算时间间隔
unsigned long previousMillis2 = 0;
unsigned long previousMillis3 = 0;  // 用于计算时间间隔

void setup() {
  u8g2.begin(); // 初始化u8g2
  u8g2.enableUTF8Print(); // 启用UTF8打印
}

void loop() {
  unsigned long currentMillis = millis();
  
  if (currentMillis - previousMillis1 >= 1000) {
    previousMillis1 = currentMillis;
    displayOn1 = !displayOn1; // 切换"你好"的显示开关状态
  }
  
  if (currentMillis - previousMillis2 >= 500) {
    previousMillis2 = currentMillis;
    displayOn2 = !displayOn2; // 切换"世界"的显示开关状态
  }

  if (currentMillis - previousMillis2 >= 100) {
    previousMillis2 = currentMillis;
    displayOn3 = !displayOn3; // 切换"哈哈"的显示开关状态
  }
  
  u8g2.setFont(u8g2_font_wqy12_t_gb2312);
  u8g2.setFontDirection(0);
  
  u8g2.firstPage();
  do {
    u8g2.setCursor(18, 20);
    if (displayOn1) {
      u8g2.print("你好");
    } else {
      u8g2.print("    "); // 空格来覆盖之前的文字
    }
   
    u8g2.setCursor(24, 45);
    if (displayOn2) {
      u8g2.print("世界!");
    } else {
      u8g2.print("      "); // 空格来覆盖之前的文字
    }

    u8g2.setCursor(32, 32);
    if (displayOn3) {
      u8g2.print("哈哈!");
    } else {
      u8g2.print("      "); // 空格来覆盖之前的文字
    }
  } while (u8g2.nextPage());
}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2024-1-10 18:40:08 | 显示全部楼层
yc0526vip 发表于 2024-01-10 18:38
调整代码 "你好 哈哈 世界" 随机出现在别的地方


好的,我来为你调整代码,使得文本"你好 哈哈 世界"能随机出现在屏幕的任意位置。下面是更新后的代码:

  1. #include <Adafruit_GFX.h>
  2. #include <Adafruit_SSD1306.h>

  3. #define SCREEN_WIDTH 128
  4. #define SCREEN_HEIGHT 64

  5. Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, -1);

  6. int textPosX = 0;
  7. int textPosY = 0;

  8. void setup() {
  9.   display.begin(SSD1306_SWITCHCAPVCC, 0x3C);
  10.   display.clearDisplay();
  11. }

  12. void loop() {
  13.   display.clearDisplay();

  14.   // 随机生成文本的位置
  15.   textPosX = random(0, SCREEN_WIDTH - 16);
  16.   textPosY = random(0, SCREEN_HEIGHT - 8);

  17.   // 设置文本样式
  18.   display.setTextSize(1);
  19.   display.setTextColor(WHITE);

  20.   // 在随机位置显示文本
  21.   display.setCursor(textPosX, textPosY);
  22.   display.print("你好 哈哈 世界");

  23.   display.display();
  24.   delay(2000);
  25. }
复制代码


通过随机生成文本的X和Y坐标位置,文本将会出现在屏幕的任意位置。你可以尝试将这段代码上传到Arduino并观察屏幕上文本的随机位置变化。每2秒钟,文本会重新随机出现在屏幕的另一个位置。

希望这次的调整能满足你的需求!如果还有其他问题,请随时提问。

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2024-1-10 18:46:50 | 显示全部楼层
FishC 发表于 2024-1-10 18:40
好的,我来为你调整代码,使得文本"你好 哈哈 世界"能随机出现在屏幕的任意位置。下面是更新后的代码: ...

调整代码"你好 哈哈 世界"  随机出现在别的地方
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-4-28 02:59

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表