Skocz do zawartości

Problem z obrazkiem na waveshare GC9A01 1.28"


Pomocna odpowiedź

Napisano (edytowany)

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

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"

(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

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ą.

 

(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
(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
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ć
}

 

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.

@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.

(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
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ą?

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

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...