鱼C论坛

 找回密码
 立即注册
查看: 298|回复: 1

arduino oled 显示问题

[复制链接]
发表于 2024-4-3 10:59:09 | 显示全部楼层 |阅读模式

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

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

x
@fishc

arduino通过oled显示中文,8个字符自动换行,滚动显示
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2024-4-3 10:59:35 | 显示全部楼层
要在Arduino上的OLED屏幕上显示中文,并且自动换行和滚动显示,您可以使用Adafruit_GFX库和Adafruit_SSD1306库。以下是一个示例代码,可以帮助您实现此功能:
#include <Wire.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>

#define SCREEN_WIDTH 128 // OLED屏幕宽度,根据您的型号进行调整
#define SCREEN_HEIGHT 64 // OLED屏幕高度,根据您的型号进行调整

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

void setup() {
  display.begin(SSD1306_SWITCHCAPVCC, 0x3C);  // 初始化OLED屏幕
  
  // 设置字体大小
  display.setTextSize(1);
  
  // 设置字体颜色,白色字体,黑色背景
  display.setTextColor(WHITE, BLACK);
  
  // 清除屏幕内容
  display.clearDisplay();
}

void loop() {
  // 显示中文字符串
  displayString("你好,世界!这是一个测试!");

  // 每次循环后等待一段时间再进行下一次显示
  delay(1000);
}

void displayString(char* str) {
  int strLength = strlen(str);
  
  int x = 0; // x轴起始位置
  int y = 0; // y轴起始位置
  
  for (int i = 0; i < strLength; i++) {
    display.setCursor(x, y);
    
    // 判断是否需要换行
    if ((x + 8) > (SCREEN_WIDTH - 1)) {
      x = 0; // 回到起始位置
      y += 8; // 下一行
    }
    
    // 滚动显示
    if ((y + 8) > (SCREEN_HEIGHT - 1)) {
      display.clearDisplay(); // 清除屏幕
      y = 0; // 回到起始位置
    }
    
    display.write(str[i]);
    
    x += 8; // 下一个字符的起始位置
  }
  
  display.display();
}

在这个示例代码中,我们首先引入了必要的库文件。然后,在`setup()`函数中,我们初始化了OLED屏幕并设置了字体大小和颜色。接下来,在`loop()`函数中,我们调用了`displayString()`函数来显示包含中文字符的字符串。`displayString()`函数会遍历输入的字符串,根据屏幕的宽度判断是否需要换行,根据屏幕的高度判断是否需要滚动显示。最后,我们在每次循环后等待一段时间,以便能够看到屏幕上的内容。

请注意,您需要根据您的OLED屏幕型号,调整`SCREEN_WIDTH`和`SCREEN_HEIGHT`的值。另外,确保已正确安装了Adafruit_GFX库和Adafruit_SSD1306库。

希望对您有帮助!如果您有任何问题,请随时提问。

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-7-27 14:21

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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