调整代码"你好 哈哈 世界"随机出现在别的地方
好的,我明白你的需求。下面是更新后的代码,它会在每次循环时随机生成文本的位置并显示在屏幕上:
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>
#include <Wire.h>
#define SCREEN_WIDTH 128
#define SCREEN_HEIGHT 64
Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, -1);
void setup() {
display.begin(SSD1306_SWITCHCAPVCC, 0x3C);
display.clearDisplay();
}
void loop() {
display.clearDisplay();
int textPosX = random(0, SCREEN_WIDTH - 16);// 随机生成X坐标位置
int textPosY = random(0, SCREEN_HEIGHT - 8);// 随机生成Y坐标位置
display.setTextSize(1);
display.setTextColor(WHITE);
display.setCursor(textPosX, textPosY);
display.println("你好 哈哈 世界");
display.display();
delay(2000);
}
通过随机生成文本的X和Y坐标位置,每次循环时文本将会出现在屏幕的不同位置。你可以将这段代码上传到Arduino并观察屏幕上文本的随机位置变化。希望这次调整满足了你的需求!如果还有其他问题,请随时提问。
以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。 FishC 发表于 2024-1-10 18:47
好的,我明白你的需求。下面是更新后的代码,它会在每次循环时随机生成文本的位置并显示在屏幕上:
...
调整代码"你好 哈哈 世界"随机出现在别的地方
#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());
} yc0526vip 发表于 2024-01-10 18:47
调整代码"你好 哈哈 世界"随机出现在别的地方
#i ...
很抱歉,我刚刚给出的代码是基于Adafruit库的。如果你使用的是U8g2库和SH1106控制器的OLED显示屏,请使用下面的代码进行调整:#include <U8g2lib.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.setFlipMode(1);// 设置显示方向为0度}void loop() {unsigned long currentMillis = millis(); if (currentMillis - previousMillis1 >= 1000) { previousMillis1 = currentMillis; displayOn1 = !displayOn1;// 切换"你好"的显示开关状态} if (currentMillis - previousMillis2 >= 500) { previousMillis2 = currentMillis; displayOn2 = !displayOn2;// 切换"世界"的显示开关状态}if (currentMillis - previousMillis3 >= 100) { previousMillis3 = currentMillis; displayOn3 = !displayOn3;// 切换"哈哈"的显示开关状态} u8g2.clearBuffer();// 清空缓冲区 u8g2.setFont(u8g2_font_wqy12_t_gb2312);// 设置字体 u8g2.setCursor(18, 20);if (displayOn1) { u8g2.print("你好");} u8g2.setCursor(24, 45);if (displayOn2) { u8g2.print("世界!");}u8g2.setCursor(32, 32);if (displayOn3) { u8g2.print("哈哈!");} u8g2.sendBuffer();// 发送缓冲区内容delay(200);// 延迟200毫秒}这段代码会在设定的时间间隔内,通过切换显示开关状态来在屏幕上显示或隐藏文本。你可以根据需要调整时间间隔和文字位置。希望这次的调整符合你的要求!如果还有其他问题,请随时提问。
以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。 FishC 发表于 2024-1-10 18:48
很抱歉,我刚刚给出的代码是基于Adafruit库的。如果你使用的是U8g2库和SH1106控制器的OLED显示屏,请使 ...
排版错误,重新输出 yc0526vip 发表于 2024-01-10 18:51
排版错误,重新输出
非常抱歉,排版错误给你带来困扰,请见谅。下面是重新排版的代码:
#include <U8g2lib.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.setFlipMode(1);// 设置显示方向为0度
}
void loop() {
unsigned long currentMillis = millis();
if (currentMillis - previousMillis1 >= 1000) {
previousMillis1 = currentMillis;
displayOn1 = !displayOn1;// 切换"你好"的显示开关状态
}
if (currentMillis - previousMillis2 >= 500) {
previousMillis2 = currentMillis;
displayOn2 = !displayOn2;// 切换"世界"的显示开关状态
}
if (currentMillis - previousMillis3 >= 100) {
previousMillis3 = currentMillis;
displayOn3 = !displayOn3;// 切换"哈哈"的显示开关状态
}
u8g2.clearBuffer();// 清空缓冲区
u8g2.setFont(u8g2_font_wqy12_t_gb2312);// 设置字体
u8g2.setCursor(18, 20);
if (displayOn1) {
u8g2.print("你好");
}
u8g2.setCursor(24, 45);
if (displayOn2) {
u8g2.print("世界!");
}
u8g2.setCursor(32, 32);
if (displayOn3) {
u8g2.print("哈哈!");
}
u8g2.sendBuffer();// 发送缓冲区内容
delay(200);// 延迟200毫秒
}
请将此代码复制并粘贴到你的Arduino IDE中进行测试。希望这次的排版没有问题,如有其他问题,请随时提问。祝你成功!
以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
页:
1
[2]