Wyświetlacz OLED 1,3" SH1106

zzrr
Posts: 1864
Joined: Wed Oct 26, 2022 7:35 pm
Has thanked: 76 times
Been thanked: 119 times

Post

klew wrote: Wed Feb 14, 2024 8:13 am Aż mi się skojarzyło z generowaniem nazw miesięcy https://www.youtube.com/watch?v=HCH92jt ... =HRejterzy ;)
@klew ale dowaliłes z tym "wekselem". :lol: :lol: :lol: :lol: :lol:
A lekcje angielskiego widziałeś w jego wykonaniu?
https://www.youtube.com/watch?v=7Vf3ony8KyM
Mirek5
Posts: 120
Joined: Wed Oct 20, 2021 7:58 am

Post

zzrr wrote: Wed Feb 14, 2024 7:53 pm Pod linią
u8x8.print(getDOW(localTime->tm_wday));
wstaw
u8x8.refreshDisplay();
i napisz czy działa.
Edit...
jak nie zadziała a chyba nie zadziała :mrgreen: to wpisz to poniżej. Będzie git.

Code: Select all

  u8x8.setFont(u8x8_font_8x13B_1x2_f);
  u8x8.setCursor(4, 4);
  sprintf(time_output, "%02d/%02d/%02d", localTime->tm_mday, localTime->tm_mon + 1, localTime->tm_year - 100);
  u8x8.print(time_output);
  u8x8.clearLine(6);
  u8x8.clearLine(7);
  u8x8.setCursor(2, 6);
Te dwie linie clear dopisz. Zadziała Aaaa.... no i to co klew podpowiedział jest faktycznie prostym dobrym rozwiązaniem . I sobie sam wyśrodkujesz jak Ci pasuje w razie czego.
Wpisałem te dwie linie i dzień tygodnia "odświeżany" jest co ok. 1 sek. - miga.
zzrr
Posts: 1864
Joined: Wed Oct 26, 2022 7:35 pm
Has thanked: 76 times
Been thanked: 119 times

Post

Mirek5 wrote: Fri Feb 16, 2024 1:22 pm Wpisałem te dwie linie i dzień tygodnia "odświeżany" jest co ok. 1 sek. - miga.
.. te dwie tak ale tej już nie u8x8.refreshDisplay(); a w razie czego najskuteczniej w tym przypadku to chyba tak jak klew proponował.
A jeśli zechcesz swój przykład zegara potraktować edukacyjnie i się pobawić to możesz też zrobić warunek który czyści te linie tylko jak jest zmiana dnia tygodnia. Wyglądało by to tak... na początku swojego kodu zrób zmienną np " int LocalDay = 20;" a tam gdzie jest
"u8x8.print(getDOW(localTime->tm_wday + aaaa));" wstaw to poniżej. Wtedy już na pewno nic nie będzie migać i ta linia będzie się edytować tylko jak się będzie dzień zmieniał.

Code: Select all

   if (LocalDay != localTime->tm_wday)
  {
    u8x8.clearLine(6);
    u8x8.clearLine(7);
    u8x8.setCursor(2, 6);
    u8x8.print(getDOW(localTime->tm_wday));
    LocalDay = localTime->tm_wday;
  }
Mirek5
Posts: 120
Joined: Wed Oct 20, 2021 7:58 am

Post

zzrr wrote: Fri Feb 16, 2024 3:13 pm
Mirek5 wrote: Fri Feb 16, 2024 1:22 pm Wpisałem te dwie linie i dzień tygodnia "odświeżany" jest co ok. 1 sek. - miga.
.. te dwie tak ale tej już nie u8x8.refreshDisplay(); a w razie czego najskuteczniej w tym przypadku to chyba tak jak klew proponował.
A jeśli zechcesz swój przykład zegara potraktować edukacyjnie i się pobawić to możesz też zrobić warunek który czyści te linie tylko jak jest zmiana dnia tygodnia. Wyglądało by to tak... na początku swojego kodu zrób zmienną np " int LocalDay = 20;" a tam gdzie jest
"u8x8.print(getDOW(localTime->tm_wday + aaaa));" wstaw to poniżej. Wtedy już na pewno nic nie będzie migać i ta linia będzie się edytować tylko jak się będzie dzień zmieniał.

Code: Select all

   if (LocalDay != localTime->tm_wday)
  {
    u8x8.clearLine(6);
    u8x8.clearLine(7);
    u8x8.setCursor(2, 6);
    u8x8.print(getDOW(localTime->tm_wday));
    LocalDay = localTime->tm_wday;
  }
Jestem po za domem. Jak wrócę, to spróbuję tak zrobić i napiszę jak poszło.
Jeszcze jedna sprawa. Jak w tym skeczu regulować kontrast dla wyświetlacza OLED 2,42" SSD1309 128x64px, bo mam wpisane u8x8.setContrast(18); i nie działa dla tego wyświetlacza.
zzrr
Posts: 1864
Joined: Wed Oct 26, 2022 7:35 pm
Has thanked: 76 times
Been thanked: 119 times

Post

Mirek5 wrote: Thu Feb 22, 2024 4:28 pm Jak w tym skeczu regulować kontrast dla wyświetlacza OLED 2,42" SSD1309 128x64px, bo mam wpisane u8x8.setContrast(18); i nie działa dla tego wyświetlacza.
Regulacja kontrastu nie działa na wszystkich OLEDach. Nie wiem czy powinno działać na 1309 w bibliotece U8x8.
W innej bibliotece na OLEDzie 1306 czy SH1106 w jednej linijce możesz dostosować Jasność, kontrast czy wartość polaryzacji.
W tej u8x8 jakoś to topornie wygląda.
Tą linię edytowałeś?
U8X8_SSD1309_128X64_NONAME2_SW_I2C u8x8(/* clock=*/D4, /* data=*/D3, /* reset=*/U8X8_PIN_NONE);
Mirek5
Posts: 120
Joined: Wed Oct 20, 2021 7:58 am

Post

zzrr wrote: Thu Feb 22, 2024 5:03 pm
Mirek5 wrote: Thu Feb 22, 2024 4:28 pm Jak w tym skeczu regulować kontrast dla wyświetlacza OLED 2,42" SSD1309 128x64px, bo mam wpisane u8x8.setContrast(18); i nie działa dla tego wyświetlacza.
Regulacja kontrastu nie działa na wszystkich OLEDach. Nie wiem czy powinno działać na 1309 w bibliotece U8x8.
W innej bibliotece na OLEDzie 1306 czy SH1106 w jednej linijce możesz dostosować Jasność, kontrast czy wartość polaryzacji.
W tej u8x8 jakoś to topornie wygląda.
Tą linię edytowałeś?
U8X8_SSD1309_128X64_NONAME2_SW_I2C u8x8(/* clock=*/D4, /* data=*/D3, /* reset=*/U8X8_PIN_NONE);
Nie edytowałem tej linii. Co tam mogę zmieniać?
zzrr
Posts: 1864
Joined: Wed Oct 26, 2022 7:35 pm
Has thanked: 76 times
Been thanked: 119 times

Post

Mirek5 wrote: Thu Feb 22, 2024 6:25 pm
zzrr wrote: Thu Feb 22, 2024 5:03 pm
Mirek5 wrote: Thu Feb 22, 2024 4:28 pm Jak w tym skeczu regulować kontrast dla wyświetlacza OLED 2,42" SSD1309 128x64px, bo mam wpisane u8x8.setContrast(18); i nie działa dla tego wyświetlacza.
Regulacja kontrastu nie działa na wszystkich OLEDach. Nie wiem czy powinno działać na 1309 w bibliotece U8x8.
W innej bibliotece na OLEDzie 1306 czy SH1106 w jednej linijce możesz dostosować Jasność, kontrast czy wartość polaryzacji.
W tej u8x8 jakoś to topornie wygląda.
Tą linię edytowałeś?
U8X8_SSD1309_128X64_NONAME2_SW_I2C u8x8(/* clock=*/D4, /* data=*/D3, /* reset=*/U8X8_PIN_NONE);
Nie edytowałem tej linii. Co tam mogę zmieniać?
Podmień tą część... dalej nic nie zmieniaj
U8X8_SSD1309_128X64_NONAME2_SW_I2C u8x8
Mirek5
Posts: 120
Joined: Wed Oct 20, 2021 7:58 am

Post

zzrr wrote: Thu Feb 22, 2024 7:01 pm
Mirek5 wrote: Thu Feb 22, 2024 6:25 pm
zzrr wrote: Thu Feb 22, 2024 5:03 pm
Regulacja kontrastu nie działa na wszystkich OLEDach. Nie wiem czy powinno działać na 1309 w bibliotece U8x8.
W innej bibliotece na OLEDzie 1306 czy SH1106 w jednej linijce możesz dostosować Jasność, kontrast czy wartość polaryzacji.
W tej u8x8 jakoś to topornie wygląda.
Tą linię edytowałeś?
U8X8_SSD1309_128X64_NONAME2_SW_I2C u8x8(/* clock=*/D4, /* data=*/D3, /* reset=*/U8X8_PIN_NONE);
Nie edytowałem tej linii. Co tam mogę zmieniać?
Podmień tą część... dalej nic nie zmieniaj
U8X8_SSD1309_128X64_NONAME2_SW_I2C u8x8
Tak zrobiłem:
//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);
oczywiście zmieniłem podpięcie WeMosa do odpowiednich pinów. Wyświetlacz działa.
W dalszej części kodu jest możliwość zmiany kontrastu wyświetlacza wyrażona linią:
u8x8.setContrast(18);
To działa na SH1106 i na SSD 1306. Im mniejsza wartość - u mnie 18, tym mniejszy kontrast. Niestety na SSD1309 to nie działa.
lukasz06
Posts: 2543
Joined: Sun Jul 17, 2022 6:53 pm
Has thanked: 46 times
Been thanked: 21 times

Post

Mój oled 2,4 też nie idzie ściemnić, soft GG.
Mirek5
Posts: 120
Joined: Wed Oct 20, 2021 7:58 am

Post

lukasz06 wrote: Thu Feb 22, 2024 8:06 pm Mój oled 2,4 też nie idzie ściemnić, soft GG.
W sofcie z GG nie ma możliwości ustawiania kontrastu żadnego wyświetlacza.
Trzeba to robić z poziomu skeczu - tyle wiem i praktykowałem.

Return to “Pomoc”