Skocz do zawartości

Problem z obrazkiem na waveshare GC9A01 1.28"


Radek_sl

Pomocna odpowiedź

Hej, wygenerowanym kod dla Arduino z obrazka PNG, obrazek się wyświetla ale kolory są z czapy, w zasadzie mozaika, czy ktoś może wie gdzie mogłem popełnić błąd ? Później mogę wrzucić kod główny oraz kartę z kodem obrazka.

 

Poniżej obrazek jpg oraz to co wyświetla się na displayu

 

IMG_20250413_202201.thumb.jpg.d958d7c4138499ee4e876a152de59381.jpgthermometer_no_labels.thumb.png.095c2138908022806e85bddb81a7d21f.png

Edytowano przez Radek_sl
  • Lubię! 1
Link do komentarza
Share on other sites

Może little/BIG endian się zrobił nie ten co trzeba (zakładając, że RGB565). Może masz wartości pikseli w uint16_t DMA źle pluje. Ewentualnie przestawić w ustawieniach sterownika ekranu RGB na BGR (lub odwrotnie). Jakby co, to nie to samo co "endianness"

Link do komentarza
Share on other sites

(edytowany)

Zmiana palety kolorów nie pomogla

 

Do konwersji obrazka użyłem image2ccp, wczoraj zabrakło mi paliwa :), ale dzisiaj wrzucę cały kod.  Muszę jednak przyznać że programów graficznych totalnie nie ogarniam, więc zwyczajnie poprosiłem chatGPT o wyskakowanie obrazka, więc może on coś popiermantolił.

Edytowano przez Radek_sl
Link do komentarza
Share on other sites

Zarejestruj się lub zaloguj, aby ukryć tę reklamę.
Zarejestruj się lub zaloguj, aby ukryć tę reklamę.

jlcpcb.jpg

jlcpcb.jpg

Produkcja i montaż PCB - wybierz sprawdzone PCBWay!
   • Darmowe płytki dla studentów i projektów non-profit
   • Tylko 5$ za 10 prototypów PCB w 24 godziny
   • Usługa projektowania PCB na zlecenie
   • Montaż PCB od 30$ + bezpłatna dostawa i szablony
   • Darmowe narzędzie do podglądu plików Gerber
Zobacz również » Film z fabryki PCBWay

Jak patrzę na obrazki z pierwszego postu, to nie wydaje mi się aby po lewej stronie był przekonwertowany obraz z prawej strony.  Wygląda na to, że potem jeszcze coś do niego dorysowujesz, inaczej skąd wyraźnie widoczne: drugi "zegar" i dwie wskazówki. Jeśli tak, to najpierw pomiń dodatkowe modyfikacje, a potem (ewentualnie) dodawaj je krok po kroku wyświetlając kolejne efekty. No i przeanalizuj co Ci podała AI, bo może podała Ci jakiś przykład na podstawie jakichś swoich danych, i te dane zostały użyte zamiast Twoich własnych. Zgaduję, ale mi te obrazki całkiem do siebie nie pasują.

 

Link do komentarza
Share on other sites

(edytowany)

Wygląda jak inny obrazek. Na tęczowym skala wydaje się być we właściwej kolejności, a na tym po prawo trochę upośledzona.

Edytowano przez orb777
Link do komentarza
Share on other sites

(edytowany)

#ifndef T20_H
#define T20_H

#include <Arduino.h>

const uint16_t t20[] PROGMEM = {
	

// dalej są dane obrazka 240 linijek po 240 pixeli

0xf7be, 0xf7be, 0xf7be, 0xf7be, 0xf7be, 0xf7be, 0xf7be, 0xf7be, 0xf7be, 0xf7be, 0xf7be, 0xf7be, 0xf7be, 0xf7be, 0xf7be, 0xf7be, 
	
};

// Array of all bitmaps for convenience. (Total bytes used to store images in PROGMEM = 57616)
const int epd_bitmap_allArray_LEN = 1;
const uint16_t* epd_bitmap_allArray[1] = {
	t20
};




#endif

 

Edytowano przez Radek_sl
Link do komentarza
Share on other sites

void setup() {
  Serial.begin(115200);
  tft.init();
  tft.setRotation(0); // Możesz zmienić na 1–3 jeśli potrzebujesz obrotu
  tft.fillScreen(TFT_BLACK);

  // Bufor jednej linii do przesyłania do ekranu
  uint16_t lineBuffer[240];

  // Rysujemy linia po linii
  for (int y = 0; y < 240; y++) {
    for (int x = 0; x < 240; x++) {
      lineBuffer[x] = pgm_read_word(&t20[y * 240 + x]);
    }
    tft.pushImage(0, y, 240, 1, lineBuffer);
  }

  Serial.println("Obraz wyświetlony.");
}

void loop() {
  // Nic tutaj nie trzeba robić
}

 

Link do komentarza
Share on other sites

Wybacz, może niedowidzę, ale gdzie ten obrazek? Istotna jest binarna reprezentacja obrazka, a tego tu nie widzę. Widzę, że coś wysyłasz linia po linii, ale nie widzę co.

Link do komentarza
Share on other sites

@Radek_sl Na podstawie tego, że Ci się coś pokazuje na ekranie, przypuszczam, że sam proces wypełniania ekranu jest raczej poprawny. Problem (chyba?!) jest w wysyłanych danych, a tych nie widać. Nie podałeś jaki to ekran. Nie podałeś jaki jest wymagany przez niego format. Spróbuj wypełnić go jakimś jednym kolorem.

Piszesz że zacząłeś wypełniać *.png, a wygląda jakbyś przekazywał mapę bitową. Czym to konwertowałeś i czy na pewno poprawnie. Dlatego pytam o obraz po przekonwertowaniu.

Link do komentarza
Share on other sites

(edytowany)

Jak na razie to wiadomo, że używasz jakoś podłączonego ekranu, z jakimś sterownikiem, wyświetlając jakieś dane. Próbowałeś wyświetlać na nim tekst, linie, czy cokolwiek innego niż obrazek? Jeżeli nie, to na początek zajrzałbym np. tu.

Edytowano przez orb777
Link do komentarza
Share on other sites

1 godzinę temu, Radek_sl napisał:
// dalej są dane obrazka 240 linijek po 240 pixeli

0xf7be, 0xf7be, 0xf7be, 0xf7be, 0xf7be, 0xf7be, 0xf7be, 0xf7be, 0xf7be, 0xf7be, 0xf7be, 0xf7be, 0xf7be, 0xf7be, 0xf7be, 0xf7be, 
	
};

No i gdzie one są?

Link do komentarza
Share on other sites

To spróbuj ten konwerter w moim poście wyżej. W sumie wszystko domyślne poza "Palette mod" (spomiędzy dwóch opcji 16 bit) i "Endianness". Łącznie cztery kombinacje do sprawdzenia.

Link do komentarza
Share on other sites

Wybacz, ale nie mam ochoty na zabawę z jakimś nowym narzędziem, tym bardziej, że w najbliższym czasie nie przewiduję zabawy z podobnym ekranem. Jeśli Ty nie masz ochoty przekopiować paru linii, to zakończmy ten dialog.  Pozdrawiam i Wesołych

Link do komentarza
Share on other sites

Bądź aktywny - zaloguj się lub utwórz konto!

Tylko zarejestrowani użytkownicy mogą komentować zawartość tej strony

Utwórz konto w ~20 sekund!

Zarejestruj nowe konto, to proste!

Zarejestruj się »

Zaloguj się

Posiadasz własne konto? Użyj go!

Zaloguj się »
×
×
  • Utwórz nowe...

Ważne informacje

Ta strona używa ciasteczek (cookies), dzięki którym może działać lepiej. Więcej na ten temat znajdziesz w Polityce Prywatności.