我正在连接一个NodeMCU和一个SSD1306 OLED显示器。我想更新所连接设备的显示状态。我正在使用计时器中断来更新显示。
这些是标准参数
MODE: AUTO/manual
TIME: Current_time
TimeZone:Timezone1/Timezone2/Timezone3/Timezone4
Relay_status:on/off
使用以下代码,我可以显示MODE,TIME,TimeZOne,Relaysttaus,但是值的任何更改都不会更新。
如果我使用清晰显示,我发现该参数正在更新2次,并且显示为空白。
#include <SPI.h>
#include <Wire.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>
#define OLED_RESET LED_BUILTIN //4
Adafruit_SSD1306 display(OLED_RESET);
void setup()
{
Serial.begin(115200);
display.begin(SSD1306_SWITCHCAPVCC, 0x3C);
display.clearDisplay();
display.display();
display.setTextSize(1);
display.setTextColor(WHITE);
display.setCursor(0, 0);
// timer.setInterval(1000, Display);
}
void Display()
{
display.print("MODE:");
if (manual == 0)
{
//display.setTextColor(WHITE);
display.println("AUTO");
display.display();
} else
{
// display.setTextColor(WHITE);
display.println("MANUAL");
display.display();
}
// display.setTextColor(WHITE);
display.print("TIME:");
display.println(currentTime);
display.display();
//display.setTextColor(WHITE);
display.print("TIME_ZONE:");
display.println(TimeZone_Status);
display.display();
display.print("RELAY STATUS:");
if (Relay_Status == 1)
{
display.println("ON");
display.display();
} else
{
display.println("OFF");
display.display();
}
//display.clearDisplay();
}
void loop()
{
Display();
}
我能够显示价值。我想为固定字符和显示参数选择定义的颜色
如果我在下面的行中使用它,则将变黑并且不会更改颜色。如果只有白色,则可以正确显示。
我想更改时间,时区,中继状态的颜色。
#define BLUE 0x001F
#define RED 0xF800
#define GREEN 0x07E0
#define CYAN 0x07FF
#define YELLOW 0xFFE0
void Display()
{
Chk_manual_Auto_Status();
display.setCursor(0, 0);
//display.clearDisplay();
display.print("MODE:");
if (manual == 0)
{
//display.setTextColor(WHITE);
display.clearDisplay();
display.println("AUTO");
display.display();
//display.setTextColor(BLUE);
} else
{
//display.setTextColor(WHITE);
display.clearDisplay();
display.println("MANUAL");
display.display();
// display.setTextColor(BLUE);
}
display.print("TIME:");
//display.clearDisplay();
display.println(currentTime);
display.display();
//display.setTextColor(WHITE);
display.print("TIME_ZONE:");
display.println(TimeZone_Status);
display.display();
display.print("RELAY STATUS:");
if (Relay_Status == 1)
{
display.println("ON");
display.display();
} else
{
display.println("OFF");
display.display();
}
delay(2000);
}