鱼C论坛

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

Arduino 代码问题

[复制链接]
发表于 2024-1-11 16:16:05 | 显示全部楼层 |阅读模式

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

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

x
@fishc

这段代码有问题吗?


#include <U8g2lib.h>
#include <Wire.h>
#include "FACE_Big_smile.h"
#include "FACE_Heart_large.h"

U8G2_SSD1306_128X64_NONAME_F_HW_I2C u8g2(U8G2_R0, U8X8_PIN_NONE);

void page1() {
}

void setup(){
  u8g2.setI2CAddress(0x3C*2);
  u8g2.begin();
}

void loop(){
  u8g2.firstPage();
  do
  {
    while (true) {
      u8g2.drawXBMP(20,0,89,64,FACE_Big_smile);
      delay(1000);
      u8g2.drawXBMP(20,0,89,64,FACE_Heart_large);
      delay(1000);
    }
  }while(u8g2.nextPage());

}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2024-1-11 16:16:25 | 显示全部楼层
这段代码有一些问题。让我们一步步来解决。

首先,你需要确保你的头文件 `#include <U8g2lib.h>` 和 `#include <Wire.h>` 被正确引入。这两个头文件用于操作 OLED 显示屏和 I2C 通信。

接下来,你需要确保你的全局变量 `u8g2` 能够正确初始化。在 `setup()` 函数中,你可以使用 `begin()` 方法来初始化你的 OLED 显示屏。但是在调用 `begin()` 方法之前,你需要设置 I2C 地址。根据你的代码,你可以使用 `setI2CAddress()` 方法来设置地址。确保传递的参数是正确的。在你的代码中,你设置的地址是 `0x3C*2`,这是因为 I2C 地址是 7 位的而不是 8 位的。大多数情况下,如果你的 OLED 显示屏没有其他设备与之冲突,你可以将地址设置为 `0x3C`。

然后,我们来看看 `loop()` 函数。在这个函数中,你使用了 `firstPage()` 和 `nextPage()` 方法来处理页面刷新。这是正确的做法。但是,在你的代码中,你使用 `while (true)` 来循环显示两个图像,这是不必要的,并且会导致程序陷入无限循环。你只需要删除这个多余的循环即可。

最后,记得要加上适当的延迟,这样可以控制图像显示的速度。例如,你可以使用 `delay(1000)` 来设置每个图像显示的时间间隔为 1 秒。

修复后的代码如下所示:
#include <U8g2lib.h>
#include <Wire.h>
#include "FACE_Big_smile.h"
#include "FACE_Heart_large.h"

U8G2_SSD1306_128X64_NONAME_F_HW_I2C u8g2(U8G2_R0, U8X8_PIN_NONE);

void page1() {
}

void setup(){
  u8g2.setI2CAddress(0x3C);
  u8g2.begin();
}

void loop(){
  u8g2.firstPage();
  do
  {
    u8g2.drawXBMP(20,0,89,64,FACE_Big_smile);
    delay(1000);
    u8g2.nextPage();

    u8g2.drawXBMP(20,0,89,64,FACE_Heart_large);
    delay(1000);
    u8g2.nextPage();
  } while(u8g2.nextPage());
}

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

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-12-22 23:09

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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