124 lines
2.7 KiB
C++
124 lines
2.7 KiB
C++
#include <Arduino.h>
|
|
|
|
#include <ESP8266WiFi.h>
|
|
#include <WiFiManager.h>
|
|
|
|
#include <font.h>
|
|
#include <image.h>
|
|
#include <SSD1306Wire.h>
|
|
#include <OLEDDisplayUi.h>
|
|
|
|
#include <utils.h>
|
|
|
|
#include <Ticker.h>
|
|
|
|
// Global arguments
|
|
Ticker task;
|
|
uint8_t minCount = 0;
|
|
SSD1306Wire display(0x3c, SDA, SCL); // 128 * 64 display
|
|
OLEDDisplayUi ui(&display);
|
|
|
|
void blink();
|
|
void initWiFi();
|
|
void configModeCallback(WiFiManager *config);
|
|
void initOLED();
|
|
void minCountCallBack();
|
|
|
|
void setup() {
|
|
Serial.begin(115200);
|
|
pinMode(LED_BUILTIN, OUTPUT);
|
|
task.attach(1, blink);
|
|
|
|
initOLED();
|
|
|
|
initWiFi();
|
|
initNtp();
|
|
|
|
task.detach();
|
|
digitalWrite(LED_BUILTIN, LOW);
|
|
minCountCallBack();
|
|
task.attach(60, minCountCallBack);
|
|
}
|
|
|
|
void loop() {
|
|
int remainingTimeBudget = ui.update();
|
|
|
|
if (remainingTimeBudget > 0) {
|
|
// You can do some work here
|
|
// Don't do stuff if you are below your
|
|
// time budget.
|
|
delay(remainingTimeBudget);
|
|
}
|
|
}
|
|
|
|
void blink() {
|
|
int state = digitalRead(LED_BUILTIN);
|
|
digitalWrite(LED_BUILTIN, !state);
|
|
}
|
|
|
|
void initWiFi() {
|
|
WiFiManager manager;
|
|
|
|
display.setTextAlignment(TEXT_ALIGN_CENTER);
|
|
display.drawString(64, 32, "WiFi Connecting");
|
|
display.display();
|
|
|
|
manager.setDebugOutput(true);
|
|
manager.setRemoveDuplicateAPs(true);
|
|
manager.setMinimumSignalQuality(40);
|
|
|
|
manager.setAPCallback(configModeCallback);
|
|
manager.setAPStaticIPConfig(APStatic.ip, APStatic.gw, APStatic.sn);
|
|
manager.setSTAStaticIPConfig(STAStatic.ip, STAStatic.gw, STAStatic.sn);
|
|
|
|
if( !manager.autoConnect(WiFiSSID, WiFipswd) ) {
|
|
ESP.reset();
|
|
delay(1000);
|
|
}
|
|
|
|
Board.ip = WiFi.localIP();
|
|
}
|
|
|
|
void configModeCallback(WiFiManager *config) {
|
|
task.attach(0.1, blink);
|
|
|
|
display.clear();
|
|
oledTitle(&display, "Info Board", 0, 0);
|
|
display.setTextAlignment(TEXT_ALIGN_LEFT);
|
|
display.drawString(0, 16, "SSID : " + (String)WiFiSSID);
|
|
display.drawString(0, 30, " IP : " + APStatic.ip.toString());
|
|
display.display();
|
|
}
|
|
|
|
void initOLED() {
|
|
display.init();
|
|
display.setContrast(255);
|
|
display.setFont(Roboto_Mono_10);
|
|
|
|
ui.setTargetFPS(1);
|
|
ui.setActiveSymbol(Active_Symbol_Icon);
|
|
ui.setInactiveSymbol(Inactive_Symbol_Icon);
|
|
ui.setIndicatorPosition(RIGHT);
|
|
ui.setIndicatorDirection(LEFT_RIGHT);
|
|
ui.setFrameAnimation(SLIDE_UP);
|
|
|
|
ui.setFrames(frames, frameCount);
|
|
ui.setOverlays(overlays, overlaysCount);
|
|
ui.init();
|
|
|
|
display.flipScreenVertically();
|
|
}
|
|
|
|
void minCountCallBack() {
|
|
if( minCount%60 == 0 ) {
|
|
minCount = 0;
|
|
|
|
display.clear();
|
|
display.setTextAlignment(TEXT_ALIGN_CENTER);
|
|
display.drawString(64, 32, "Updating Data");
|
|
display.display();
|
|
|
|
getData();
|
|
}
|
|
minCount += 1;
|
|
} |