OLED显示更新

时间:2018-08-06 11:14:08

标签: arduino arduino-esp8266 adafruit

我正在连接一个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();
    }

我能够显示价值。我想为固定字符和显示参数选择定义的颜色

如果我在下面的行中使用它,则将变黑并且不会更改颜色。如果只有白色,则可以正确显示。

Display_OLED character

我想更改时间,时区,中继状态的颜色。

#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);

}

0 个答案:

没有答案