Update esp32c3-joystick.ino
This commit is contained in:
parent
13ffddeb56
commit
c2a36bd17f
@ -1,84 +1,304 @@
|
||||
//========================================================
|
||||
// Header Include
|
||||
//========================================================
|
||||
#include <WiFi.h>
|
||||
#include <WiFiManager.h>
|
||||
#include <FS.h>
|
||||
#include <SPIFFS.h>
|
||||
#include <ArduinoJson.h>
|
||||
#include <Wire.h>
|
||||
#include <Adafruit_GFX.h>
|
||||
#include <Adafruit_SSD1306.h>
|
||||
|
||||
// Header File
|
||||
#include <WiFi.h>
|
||||
#include "header.h"
|
||||
// Pin definitions (adjust as needed)
|
||||
#define BTN_RED1 0
|
||||
#define BTN_RED2 1
|
||||
#define BTN_BLUE1 2
|
||||
#define BTN_BLUE2 3
|
||||
#define BTN_CENTER 4 // Use a free GPIO for WiFi reset/config
|
||||
#define LED_PIN 5
|
||||
#define MOTOR_PIN 6
|
||||
|
||||
//========================================================
|
||||
// SETUP
|
||||
//========================================================
|
||||
#define CONFIG_FILE "/config.json"
|
||||
#define SCREEN_WIDTH 128
|
||||
#define SCREEN_HEIGHT 64
|
||||
#define OLED_RESET -1
|
||||
#define SCREEN_ADDRESS 0x3C
|
||||
|
||||
void setup() {
|
||||
|
||||
// Serial Port
|
||||
Serial.begin(115200);
|
||||
Serial.println();
|
||||
Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, OLED_RESET);
|
||||
|
||||
// Display
|
||||
displayInit(); // Starting The Display
|
||||
displayIdentity(); // Display Identity
|
||||
// --- Paste your full logo_bmp[] array here ---
|
||||
// TAKEONE LOGO (Your existing logo data)
|
||||
static const unsigned char PROGMEM logo_bmp[] = {
|
||||
// ... (logo data remains the same) ...
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3f, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xff, 0x07, 0x80, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0xff, 0x07, 0xc0, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0xff, 0xce, 0xe0, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0xff, 0xfd, 0xe0, 0x00, 0x00, 0x00, 0x00,
|
||||
0xff, 0xf0, 0x3f, 0x00, 0x7c, 0x3f, 0x8f, 0xfc, 0x1f, 0xff, 0xfb, 0x60, 0x7c, 0x07, 0xc3, 0xff,
|
||||
0xff, 0xf0, 0x3f, 0x80, 0x7c, 0x7f, 0x8f, 0xfc, 0x1f, 0xff, 0xfe, 0x60, 0x7e, 0x07, 0xc3, 0xff,
|
||||
0xff, 0xf0, 0x7f, 0x80, 0x7c, 0xff, 0x0f, 0xfc, 0x1f, 0xff, 0xfc, 0xc0, 0x7f, 0x07, 0xc3, 0xff,
|
||||
0xff, 0xf0, 0x7f, 0xc0, 0x7c, 0xfe, 0x0f, 0xfc, 0x0f, 0xff, 0xf9, 0x80, 0x7f, 0x07, 0xc3, 0xff,
|
||||
0xff, 0xf0, 0x7f, 0xc0, 0x7d, 0xfc, 0x0f, 0x80, 0x07, 0xff, 0xfb, 0x00, 0x7f, 0x87, 0xc3, 0xe0,
|
||||
0x1f, 0x80, 0xff, 0xc0, 0x7f, 0xf8, 0x0f, 0x80, 0x07, 0xff, 0xf2, 0x00, 0x7f, 0xc7, 0xc3, 0xe0,
|
||||
0x1f, 0x80, 0xff, 0xe0, 0x7f, 0xf0, 0x0f, 0xfc, 0x07, 0xff, 0xf4, 0x00, 0x7f, 0xe7, 0xc3, 0xff,
|
||||
0x1f, 0x80, 0xfb, 0xe0, 0x7f, 0xe0, 0x0f, 0xfc, 0x07, 0xff, 0xf4, 0x00, 0x7f, 0xe7, 0xc3, 0xff,
|
||||
0x1f, 0x81, 0xfb, 0xe0, 0x7f, 0xc0, 0x0f, 0xfc, 0x3f, 0xff, 0xf4, 0x00, 0x7d, 0xf7, 0xc3, 0xff,
|
||||
0x1f, 0x81, 0xf1, 0xf0, 0x7f, 0xe0, 0x0f, 0xfc, 0x3f, 0xff, 0xf6, 0x00, 0x7c, 0xff, 0xc3, 0xff,
|
||||
0x1f, 0x83, 0xf1, 0xf0, 0x7f, 0xf0, 0x0f, 0xfc, 0x3f, 0xff, 0xf2, 0x00, 0x7c, 0x7f, 0xc3, 0xe0,
|
||||
0x1f, 0x83, 0xe0, 0xf8, 0x7f, 0xf8, 0x0f, 0x80, 0x3f, 0xff, 0xb9, 0x00, 0x7c, 0x7f, 0xc3, 0xe0,
|
||||
0x1f, 0x83, 0xff, 0xf8, 0x7d, 0xfc, 0x0f, 0x80, 0x3f, 0xff, 0x1c, 0x80, 0x7c, 0x3f, 0xc3, 0xe0,
|
||||
0x1f, 0x87, 0xff, 0xf8, 0x7c, 0xfe, 0x0f, 0xfc, 0x3f, 0xfe, 0x7e, 0x40, 0x7c, 0x1f, 0xc3, 0xff,
|
||||
0x1f, 0x87, 0xff, 0xfc, 0x7c, 0x7f, 0x0f, 0xfc, 0x1f, 0xfe, 0xf7, 0xe0, 0x7c, 0x0f, 0xc3, 0xff,
|
||||
0x1f, 0x8f, 0xc0, 0xfe, 0x7c, 0x3f, 0x8f, 0xfc, 0x1f, 0xff, 0xe7, 0xf0, 0x7c, 0x0f, 0xc3, 0xff,
|
||||
0x1f, 0x8f, 0xc0, 0xfe, 0x7c, 0x3f, 0x8f, 0xfc, 0x0f, 0xff, 0xcf, 0xf8, 0x7c, 0x07, 0xc1, 0xff,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0xff, 0xfc, 0xf8, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0xff, 0xf9, 0xf8, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xff, 0xff, 0xf8, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xff, 0xff, 0xf8, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xf0, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
|
||||
};
|
||||
|
||||
// WiFi
|
||||
setupWiFiAndConfig("TAKEONE");
|
||||
// displayStatus("TCP Connect", server, port);
|
||||
char server_ip[40] = "192.168.1.100";
|
||||
char server_port[6] = "8080";
|
||||
char device_name[40] = "joypad-1";
|
||||
|
||||
// Buttons Start
|
||||
BlueBody.begin(); // Connect your button between pin 2 and GND
|
||||
BlueHead.begin(); // Connect your button between pin 3 and GND
|
||||
RedBody.begin(); // Connect your button between pin 4 and GND
|
||||
RedHead.begin(); // Connect your button between pin 4 and GND
|
||||
YellowButton.begin(); // Connect your button between pin 4 and GND
|
||||
WiFiManagerParameter custom_server("server", "Server IP", server_ip, 40);
|
||||
WiFiManagerParameter custom_port("port", "Port", server_port, 6);
|
||||
WiFiManagerParameter custom_name("devname", "Device Name", device_name, 40);
|
||||
|
||||
// Stop
|
||||
Serial.println();
|
||||
WiFiClient tcpClient;
|
||||
bool shouldSaveConfig = false;
|
||||
void saveConfigCallback() { shouldSaveConfig = true; }
|
||||
|
||||
void oled_clear() {
|
||||
display.clearDisplay();
|
||||
display.display();
|
||||
}
|
||||
|
||||
void oled_text(int size, int x, int y, String msg) {
|
||||
display.setTextSize(size);
|
||||
display.setTextColor(SSD1306_WHITE);
|
||||
display.setCursor(x, y);
|
||||
display.println(msg);
|
||||
display.display();
|
||||
}
|
||||
|
||||
void oled_logo() {
|
||||
oled_clear();
|
||||
display.drawBitmap(0, 0, logo_bmp, SCREEN_WIDTH, SCREEN_HEIGHT, 1);
|
||||
oled_text(1, 110, 14, ".bh");
|
||||
oled_text(1, 1, 44, "sports-tech");
|
||||
delay(3000);
|
||||
oled_clear();
|
||||
}
|
||||
|
||||
void loadConfig() {
|
||||
if (SPIFFS.exists(CONFIG_FILE)) {
|
||||
File f = SPIFFS.open(CONFIG_FILE, "r");
|
||||
if (f) {
|
||||
DynamicJsonDocument doc(256);
|
||||
DeserializationError err = deserializeJson(doc, f);
|
||||
if (!err) {
|
||||
strlcpy(server_ip, doc["server"] | server_ip, sizeof(server_ip));
|
||||
strlcpy(server_port, doc["port"] | server_port, sizeof(server_port));
|
||||
strlcpy(device_name, doc["devname"] | device_name, sizeof(device_name));
|
||||
}
|
||||
f.close();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void saveConfig() {
|
||||
DynamicJsonDocument doc(256);
|
||||
doc["server"] = server_ip;
|
||||
doc["port"] = server_port;
|
||||
doc["devname"] = device_name;
|
||||
File f = SPIFFS.open(CONFIG_FILE, "w");
|
||||
if (f) {
|
||||
serializeJson(doc, f);
|
||||
f.close();
|
||||
}
|
||||
}
|
||||
|
||||
void wifiReset() {
|
||||
oled_clear();
|
||||
oled_text(1, 0, 0, "WiFi Reset...");
|
||||
WiFiManager wm;
|
||||
wm.resetSettings();
|
||||
delay(500);
|
||||
ESP.restart();
|
||||
}
|
||||
|
||||
bool wasPressed(uint8_t pin) {
|
||||
static uint8_t prev[16] = {0};
|
||||
bool pressed = !digitalRead(pin);
|
||||
if (pressed && !prev[pin]) { prev[pin] = 1; return true; }
|
||||
if (!pressed) prev[pin] = 0;
|
||||
return false;
|
||||
}
|
||||
|
||||
void buzz() {
|
||||
digitalWrite(MOTOR_PIN, HIGH); delay(120);
|
||||
digitalWrite(MOTOR_PIN, LOW);
|
||||
}
|
||||
|
||||
void connect_server() {
|
||||
if (tcpClient.connected()) return;
|
||||
oled_clear();
|
||||
oled_text(1, 0, 0, "Connecting TCP...");
|
||||
while (!tcpClient.connect(server_ip, atoi(server_port))) {
|
||||
oled_text(1, 0, 16, "Retry...");
|
||||
digitalWrite(LED_PIN, !digitalRead(LED_PIN));
|
||||
delay(500);
|
||||
}
|
||||
digitalWrite(LED_PIN, LOW);
|
||||
oled_clear();
|
||||
oled_text(1, 0, 0, "TCP Connected!");
|
||||
delay(1000);
|
||||
oled_clear();
|
||||
}
|
||||
|
||||
void send_button(const char* btn) {
|
||||
DynamicJsonDocument doc(256);
|
||||
doc["device"] = device_name;
|
||||
doc["type"] = "score";
|
||||
doc["button"] = btn;
|
||||
String msg;
|
||||
serializeJson(doc, msg);
|
||||
tcpClient.println(msg);
|
||||
Serial.println(msg);
|
||||
oled_clear();
|
||||
oled_text(2, 0, 0, btn);
|
||||
oled_text(1, 0, 24, "Sent!");
|
||||
delay(700); // show feedback
|
||||
oled_clear();
|
||||
}
|
||||
|
||||
// WiFiManager AP mode callback
|
||||
void configModeCallback (WiFiManager *myWiFiManager) {
|
||||
oled_clear();
|
||||
oled_text(1, 0, 0, "WiFi Portal");
|
||||
oled_text(1, 0, 16, "SSID:");
|
||||
oled_text(1, 0, 32, myWiFiManager->getConfigPortalSSID());
|
||||
oled_text(1, 0, 48, "192.168.4.1");
|
||||
}
|
||||
|
||||
void setup() {
|
||||
Serial.begin(115200);
|
||||
pinMode(LED_PIN, OUTPUT); digitalWrite(LED_PIN, HIGH);
|
||||
pinMode(MOTOR_PIN, OUTPUT); digitalWrite(MOTOR_PIN, LOW);
|
||||
|
||||
pinMode(BTN_RED1, INPUT_PULLUP);
|
||||
pinMode(BTN_RED2, INPUT_PULLUP);
|
||||
pinMode(BTN_BLUE1, INPUT_PULLUP);
|
||||
pinMode(BTN_BLUE2, INPUT_PULLUP);
|
||||
pinMode(BTN_CENTER, INPUT_PULLUP);
|
||||
|
||||
display.begin(SSD1306_SWITCHCAPVCC, SCREEN_ADDRESS);
|
||||
oled_logo();
|
||||
|
||||
oled_clear();
|
||||
oled_text(1, 0, 0, "Mounting FS...");
|
||||
if (!SPIFFS.begin(true)) {
|
||||
oled_clear();
|
||||
oled_text(1, 0, 0, "SPIFFS Fail!");
|
||||
delay(2000);
|
||||
ESP.restart();
|
||||
}
|
||||
|
||||
//========================================================
|
||||
// LOOP
|
||||
//========================================================
|
||||
loadConfig();
|
||||
|
||||
void loop() {
|
||||
WiFiManager wm;
|
||||
wm.setSaveConfigCallback(saveConfigCallback);
|
||||
wm.setAPCallback(configModeCallback);
|
||||
wm.addParameter(&custom_server);
|
||||
wm.addParameter(&custom_port);
|
||||
wm.addParameter(&custom_name);
|
||||
|
||||
// Monitor
|
||||
// monitorConnection();
|
||||
|
||||
// Buttons
|
||||
read_buttons();
|
||||
// --- Generate unique SSID ---
|
||||
uint32_t chipId = (uint32_t)(ESP.getEfuseMac() & 0xFFFFFF);
|
||||
char ap_ssid[32];
|
||||
snprintf(ap_ssid, sizeof(ap_ssid), "JOYPAD %06X", chipId);
|
||||
|
||||
oled_clear();
|
||||
oled_text(1, 0, 0, "WiFi Connect...");
|
||||
if (!wm.autoConnect(ap_ssid)) {
|
||||
oled_clear();
|
||||
oled_text(1, 0, 0, "WiFi Failed!");
|
||||
delay(3000);
|
||||
ESP.restart();
|
||||
}
|
||||
|
||||
//========================================================
|
||||
// Read Button
|
||||
//========================================================
|
||||
strlcpy(server_ip, custom_server.getValue(), sizeof(server_ip));
|
||||
strlcpy(server_port, custom_port.getValue(), sizeof(server_port));
|
||||
strlcpy(device_name, custom_name.getValue(), sizeof(device_name));
|
||||
|
||||
void read_buttons() {
|
||||
|
||||
if(BlueBody.pressed()) {
|
||||
Serial.println("Blue Body");
|
||||
}
|
||||
if (shouldSaveConfig) saveConfig();
|
||||
|
||||
if(BlueHead.pressed()) {
|
||||
Serial.println("Blue Head");
|
||||
}
|
||||
oled_clear();
|
||||
oled_text(1, 0, 0, "WiFi OK!");
|
||||
oled_text(1, 0, 16, WiFi.localIP().toString());
|
||||
delay(1500);
|
||||
|
||||
if(RedBody.pressed()) {
|
||||
Serial.println("Red Body");
|
||||
}
|
||||
|
||||
if(RedHead.pressed()) {
|
||||
Serial.println("Red Head");
|
||||
}
|
||||
|
||||
if(YellowButton.pressed()) {
|
||||
Serial.println("Yellow");
|
||||
resetWiFiAndConfig();
|
||||
}
|
||||
connect_server();
|
||||
}
|
||||
|
||||
void loop() {
|
||||
// WiFi Reset button (hold center button at any time)
|
||||
if (wasPressed(BTN_CENTER)) {
|
||||
oled_clear();
|
||||
oled_text(1, 0, 0, "WiFi Reset...");
|
||||
wifiReset();
|
||||
}
|
||||
|
||||
//========================================================
|
||||
// OLED Display
|
||||
//========================================================
|
||||
// TCP connection maintenance
|
||||
if (!tcpClient.connected()) {
|
||||
connect_server();
|
||||
}
|
||||
|
||||
// Button actions
|
||||
if (wasPressed(BTN_RED1)) { send_button("RED1"); buzz(); }
|
||||
if (wasPressed(BTN_RED2)) { send_button("RED2"); buzz(); }
|
||||
if (wasPressed(BTN_BLUE1)) { send_button("BLU1"); buzz(); }
|
||||
if (wasPressed(BTN_BLUE2)) { send_button("BLU2"); buzz(); }
|
||||
|
||||
// Show device name, IP, port, and TCP status
|
||||
static unsigned long lastStatus = 0;
|
||||
if (millis() - lastStatus > 3000) {
|
||||
oled_clear();
|
||||
oled_text(1, 0, 0, device_name);
|
||||
oled_text(1, 0, 16, WiFi.localIP().toString());
|
||||
oled_text(1, 0, 32, "Port: " + String(server_port));
|
||||
oled_text(1, 0, 48, tcpClient.connected() ? "TCP: OK" : "TCP: ...");
|
||||
lastStatus = millis();
|
||||
}
|
||||
}
|
||||
Loading…
x
Reference in New Issue
Block a user