• Witaj na Forum Arduino Polska! Zapraszamy do rejestracji!
  • Znajdziesz tutaj wiele informacji na temat hardware / software.
Witaj! Logowanie Rejestracja


Ocena wątku:
  • 0 głosów - średnia: 0
  • 1
  • 2
  • 3
  • 4
  • 5
Zawieszający się wyświetlacz OLED 1,3"
#1
Witam

Mój pierwszy projekt z wyświetlaczem OLED uruchomiłem i było by wszystko ok tylko jest jeden niuans. Mianowicie wyświetlacz wiesza się i nie pokazuje aktualnych odczytów, mimo to program sterujący działa poprawnie. Wyświetlacz działa 24/7 więc gdzie mogę szukać błędu aby cały czas się odświeżał?

Oto mój kod sterujący wyświetlaczem:

Kod:
#include <U8glib.h>


U8GLIB_SH1106_128X64 u8g(U8G_I2C_OPT_DEV_0|U8G_I2C_OPT_FAST);  // Dev 0, Fast I2C / TWI




void setup() {


}
void loop() {

u8g.firstPage(); //wyczyszczenie ekranu i przygotowanie do wyświetlenia nowej strony
  do {
    u8g.setFont(u8g_font_helvR08); //wybranie czcionki
    u8g.drawStr(0,10,"Bojler");
    u8g.drawStr(117,10,"\xB0");       //znak stopni celcjusza
    u8g.drawStr(121,10,"C");
    u8g.drawStr(0,20,"Pompka");
    u8g.drawStr(117,20,"\xB0");
    u8g.drawStr(121,20,"C");
    u8g.drawStr(0,60,"Przeplyw");
    u8g.drawStr(0,30,"Praca");
    u8g.setPrintPos(95,10); //ustawienie miejsca wyświetlania odczytu
    u8g.print(tempBB); //wyświetlenie odczytu
    u8g.setPrintPos(95,20);
    u8g.print(tempPP);
    u8g.setPrintPos(95,60);
    u8g.print(flowCount);
    u8g.setPrintPos(95,30);
    u8g.print(praca);
    u8g.setPrintPos(60,10);
    u8g.print(b);
    u8g.setPrintPos(60,20);
    u8g.print(p);
    u8g.setPrintPos(60,30);
    u8g.print(czas);
}
    while(u8g.nextPage());
    u8g.firstPage();

if (aktualnyCzas - przeplyw >= 500UL){
    flowCount = 0;
    przeplyw = aktualnyCzas;
}
}
void flowISR() {
  flowCount++; // zwiększ liczbę impulsów o 1
}
 
#2
Loop pusty przenieś wszystko do loop
Arduino zostało wymyślone po to, by robić dobrze jedną prostą rzecz – migać diodą. 
 
#3
(16-08-2023, 06:16)Jarewa0606 napisał(a): Loop pusty przenieś wszystko do loop
Żle kod przepisałem do tego pytania. Kod do obsługi wyświetlacza znajduje się w Loop a mimo tego po niedługim czasie wyświetlacz wiesza się
 
#4
Loop ma się wykonywać mln x na sekundę, ale jak w każdym obiegu loop MUSISZ pokazać coś nowego na ekranie to nie będzie. Ale czy naprawdę MUSISZ? Mierzysz coś millis co 500ms, zrób to samo z ekranem, wyświetl dane raz na 500, może 1000ms, albo tylko wtedy gdy masz coś nowego do powiedzenia.
Miło być decenianym https://buycoffee.to/kaczakat
 
#5
Poprawiłem na odświeżanie wyświetlacza co 0,5s i juz drugi dzień działa jak należy i się nie wiesza. Dziękuję i pozdrawiam
 
#6
Dzięki za podzielenie się rozwiązaniem.
Miło być decenianym https://buycoffee.to/kaczakat
 
  


Skocz do:


Przeglądający: 1 gości