Здравствуйте! Кто может подсказать, почему не отображается текст, который должен выводиться на экран в функции setup() на дисплей OLED SSD1306? При чём текст, который должен выводится в функции loop(), отображается на экране. Скетч сам по себе не доделан полностью, но текст должен отображаться.
Код:
#include <ESP8266WiFi.h>
#include "SSD1306Wire.h"
SSD1306Wire display(0x3c, 2, 14);
#ifndef STASSID
#define STASSID "STOP"
#define STAPSK "06640664"
#endif
#define MAX_SRV_CLIENTS 2
const char* ssid = STASSID;
const char* pass = STAPSK;
WiFiServer server(23);
WiFiClient serverClients[MAX_SRV_CLIENTS];
IPAddress ip(192, 168, 1, 20);
IPAddress gateway(192, 168, 1, 1);
IPAddress subnet(255, 255, 255, 0);
uint8_t i, str = 0;
char c;
String content[10] = {""};
/*char *IPAddress2String(IPAddress & ip)
{
static char str_IP[16];
char * last = str_IP;
for (int8_t i = 0; i < 4; i++) {
itoa(ip[i], last, 10);
last = last + strlen(last);
if (i == 3) *last = '\0'; else *last++ = '.';
}
return str_IP;
}*/
void chat()
{
//check if there are any new upcoming clients
if (server.hasClient())
{
for (i = 0; i < MAX_SRV_CLIENTS; i++)
{ //find those free/disconnected spot
if (!serverClients[i] || !serverClients[i].connected())
{
if (serverClients[i])
serverClients[i].stop();
serverClients[i] = server.available();
display.clear();
display.setFont(ArialMT_Plain_24);
display.setTextAlignment(TEXT_ALIGN_CENTER);
display.drawString(32, 64, "NEW CLIENT!");
display.display();
delay(5000);
display.clear();
continue;
}
}
//no free/disconnected spot so reject
WiFiClient serverClient = server.available();
serverClient.stop();
}
//check clients for data
for (i = 0; i < MAX_SRV_CLIENTS; i++)
{
if (serverClients[i] && serverClients[i].connected())
{
if (serverClients[i].available())
{ //get data from the telnet client and push it to the UART
while (serverClients[i].available())
{
c = serverClients[i].read();
content[str].concat(c);
}
if (content[str] != "")
{
str++;
}
}
}
}
//check UART for data
if (Serial.available())
{
size_t len = Serial.available();
uint8_t sbuf[len];
Serial.readBytes(sbuf, len);
//push UART data to all connected telnet clients
for (i = 0; i < MAX_SRV_CLIENTS; i++)
{
if (serverClients[i] && serverClients[i].connected())
{
serverClients[i].write(sbuf, len);
delay(1);
}
}
}
}
void setup()
{
display.init();
display.flipScreenVertically();
display.setFont(ArialMT_Plain_24);
display.setTextAlignment(TEXT_ALIGN_CENTER);
display.drawString(32, 64, "SERVER");
display.display();
delay(2000);
Serial.begin(115200);
WiFi.mode(WIFI_STA);
WiFi.begin(ssid, pass);
while (WiFi.status() != WL_CONNECTED)
delay(500);
WiFi.config(ip, gateway, subnet);
display.clear();
display.setTextAlignment(TEXT_ALIGN_CENTER);
display.drawString(32, 64, "Connect to \'" + String(ssid) + "\'");
display.display();
delay(2000);
display.clear();
server.begin(); // Начинаем «слушать» клиентов:
}
void loop()
{
chat();
display.clear();
display.setFont(ArialMT_Plain_10);
display.drawString(100, 0, String(WiFi.RSSI()));
for (uint8_t j = 0; j < str; j++)
{
display.drawString(0, 10 + str * 10, content[str]);
}
display.display();
}