zzrr wrote: Mon Feb 26, 2024 11:56 am
Mirek5 wrote: Mon Feb 26, 2024 6:55 am
Może problemem jest fragment kodu. U mnie jest taki:
u8x8.setCursor(2,6);
u8x8.setContrast(8);
u8x8.print(getDOW(localTime->tm_wday));
No raczej ten fragment kodu nie jest problemem. .
Nie posiadam takiego OLEDa i nie korzystam z tej biblioteki, więc nie chcę też wprowadzić Cie czymś w błąd.
Jeśli chcesz spróbuj jeszcze wstawić w pętli Setup tą linię. Niestety nie wiem czy to rozwiąże problem.
u8x8.setBusClock(400000); pod u8x8.begin();
Dostałem informację: Do obsługi kontrastu wyświetlacza należy skorzystać z biblioteki U8g2lib.h a następnie skorzystać z funkcji u8g2.setContrast(128); wartość parametru jest z przedziału (0 - 255).
Mam zainstalowaną bibliotekę ale dostaję komunikat:
Compilation error: 'u8g2' was not declared in this scope
To obecny skecz. Gdzie robię błąd?
PIN ESP PIN LCD
GND GND
3,3V Vcc
GPIO5 SCL
GPIO4 SDA
*/
#ifdef ESP8266
#include <ESP8266WiFi.h>
#else
#include <WiFi.h>
#endif
#include <time.h>
#include <U8x8lib.h>
#include <U8g2lib.h>
#include "credentials.h"
const char* ssid = mySSID; //zmień w pliku credentials.h
const char* password = myPASSWORD; //zmień w pliku credentials.h
const char* NTP_SERVER = "pl.pool.ntp.org";
const char* TZ_INFO = "CET-1CEST-2,M3.5.0/02:00:00,M10.5.0/03:00:00"; // sprawdz swoją strefę na
https://remotemonitoringsystems.ca/time ... ations.php
tm timeinfo;
time_t now;
long unsigned lastNTPtime;
unsigned long lastEntryTime;
//U8X8_SH1106_128X64_NONAME_SW_I2C u8x8(/* clock=*/ SCL, /* data=*/ SDA, /* reset=*/ U8X8_PIN_NONE);
U8X8_SSD1309_128X64_NONAME2_SW_I2C u8x8(/* clock=*/D4, /* data=*/D3, /* reset=*/U8X8_PIN_NONE);
void setup()
{
u8x8.begin();
Serial.begin(115200);
Serial.println("\n\nNTP test czasi\n");
WiFi.mode(WIFI_STA);
WiFi.begin(ssid, password);
Serial.print("Laczenie z siecia");
int counter = 0;
while (WiFi.status() != WL_CONNECTED)
{
delay(200);
if (++counter > 100)
ESP.restart();
Serial.print( "." );
}
Serial.println("\nWiFi connected\n\n");
configTime(0, 0, NTP_SERVER);
// See
https://github.com/nayarsystems/posix_t ... /zones.csv for Timezone codes for your region
setenv("TZ", TZ_INFO, 1);
if (getNTPtime(10))
{
// wait up to 10sec to sync
}
else
{
Serial.println("Brak czasu");
ESP.restart();
}
showTime(&timeinfo);
lastNTPtime = time(&now);
lastEntryTime = millis();
}
void loop()
{
getNTPtime(10);
showTime(&timeinfo);
delay(1000);
}
bool getNTPtime(int sec)
{
{
uint32_t start = millis();
do
{
time(&now);
localtime_r(&now, &timeinfo);
delay(10);
} while (((millis() - start) <= (1000 * sec)) && (timeinfo.tm_year < (2016 - 1900)));
if (timeinfo.tm_year <= (2016 - 1900))
return false; // the NTP call was not successful
Serial.print("Time Now: ");
Serial.println(now);
}
return true;
}
void showTime(tm *localTime)
{
//print to serial terminal
//Serial.print(localTime->tm_mday);
Serial.print('.');
Serial.print(localTime->tm_mon + 1);
Serial.print('.');
Serial.print(localTime->tm_year - 100);
Serial.print('-');
Serial.print(localTime->tm_hour);
Serial.print(':');
Serial.print(localTime->tm_min);
//Serial.print(':');
//Serial.print(localTime->tm_sec);
Serial.print(" Day of Week ");
Serial.println(localTime->tm_wday);
Serial.println();
//display on OLED
char time_output[30];
//u8x8.setFont(u8x8_font_courB18_2x3_f);
u8x8.setFont(u8x8_font_courB18_2x3_f);
//u8x8.setCursor(03,0);
//u8x8.setCursor(3,0);
u8x8.setCursor(3,0);
//sprintf(time_output, "%02d:%02d:%02d", localTime->tm_hour, localTime->tm_min, localTime->tm_sec);
sprintf(time_output, "%02d:%02d", localTime->tm_hour, localTime->tm_min);
//sprintf(time_output, "%02d:%02d:%02d", localTime->tm_hour, localTime->tm_min);
u8x8.print(time_output);
//u8x8.setFont(u8x8_font_8x13B_1x2_f);
u8x8.setFont(u8x8_font_8x13_1x2_f);
u8x8.setCursor(3,4);
//sprintf(time_output, "%02d/%02d/%02d", localTime->tm_mday, localTime->tm_mon + 1, localTime->tm_year - 100);
sprintf(time_output, "%02d.%02d.%02d", localTime->tm_mday, localTime->tm_mon + 1, localTime->tm_year + 1900);
u8x8.print(time_output);
u8x8.setCursor(2,6);
//u8x8.setContrast(8);
u8g2.setContrast(100);
u8x8.print(getDOW(localTime->tm_wday));
}
char * getDOW(uint8_t tm_wday)
{
switch(tm_wday)
{
case 1:
return "Poniedzialek";
break;
case 2:
return " Wtorek ";
break;
case 3:
return " Sroda ";
break;
case 4:
return " Czwartek ";
break;
case 5:
return " Piatek ";
break;
case 6:
return " Sobota ";
break;
case 7:
return " Niedziela ";
break;
default:
return " Error ";
break;
}
}