111 lines
2.2 KiB
C++
111 lines
2.2 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 temp;
|
|
Ticker task;
|
|
// 128 * 64 display
|
|
SSD1306Wire display(0x3c, 4, 5);
|
|
OLEDDisplayUi ui(&display);
|
|
|
|
void initSystem();
|
|
void initWiFi();
|
|
void configModeCallback(WiFiManager *config);
|
|
void initOLED();
|
|
void blink();
|
|
|
|
void setup() {
|
|
initSystem();
|
|
initWiFi();
|
|
initNtp();
|
|
initOLED();
|
|
initData();
|
|
|
|
temp.detach();
|
|
|
|
digitalWrite(LED_BUILTIN, LOW);
|
|
}
|
|
|
|
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 initSystem() {
|
|
Serial.begin(115200);
|
|
pinMode(LED_BUILTIN, OUTPUT);
|
|
temp.attach(1, blink);
|
|
}
|
|
|
|
void blink() {
|
|
int state = digitalRead(LED_BUILTIN);
|
|
digitalWrite(LED_BUILTIN, !state);
|
|
}
|
|
|
|
void initWiFi() {
|
|
WiFiManager manager;
|
|
|
|
manager.setDebugOutput(true);
|
|
manager.setRemoveDuplicateAPs(true);
|
|
manager.setMinimumSignalQuality(40);
|
|
|
|
manager.setAPCallback(configModeCallback);
|
|
manager.setAPStaticIPConfig(
|
|
IPAddress(10, 1, 1, 1),
|
|
IPAddress(10, 0, 1, 1),
|
|
IPAddress(255, 255, 255, 0)
|
|
);
|
|
manager.setSTAStaticIPConfig(
|
|
IPAddress(192, 168, 43, 141),
|
|
IPAddress(192,168,0,1),
|
|
IPAddress(255, 255, 255, 0)
|
|
);
|
|
|
|
if( !manager.autoConnect("Info Board", "cj160217") ) {
|
|
ESP.reset();
|
|
delay(1000);
|
|
}
|
|
|
|
localIP = WiFi.localIP().toString();
|
|
}
|
|
|
|
void configModeCallback(WiFiManager *config) {
|
|
temp.attach(0.1, blink);
|
|
}
|
|
|
|
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();
|
|
}
|