Skocz do zawartości

TFT_espi na ESP32 - problem z grafika i tekstem


Bullseye

Pomocna odpowiedź

Hej, staram sie odpalic wyswietlacz 480x320 na esp32. Chcialbym by grafika w tle byla statyczna a tekst wyswietla sie dynamicznie nad z przezroczystym tlem.

Ogolnie wyswietlenie tla dziala ok, ale sprites jakie tworze z tekstu sa zawsze w lewym gornym rogu. Nie reaguje na zmiany. Dluzsze liczby sie nakladaja na siebie i tworza stos w rogu.

pomozecie?

ponizej kod, kod od wyswietlania jest w tasku wykonywanym co 15ms.

 

#include <Arduino.h>

//Multi CPU
TaskHandle_t Task1;

//Wyswietlacz
#include <TFT_eSPI.h>
#define pinPodswietlenia 33
TFT_eSPI tft              = TFT_eSPI();
TFT_eSprite gaugeBack     = TFT_eSprite(&tft);
TFT_eSprite gaugeZmienne = TFT_eSprite(&tft);
#include "grafika/background.h"

void setup() {
  tft.begin();
  tft.setRotation(1);
  tft.fillScreen(TFT_BLACK);
  tft.setSwapBytes(true);

  Serial.begin(115200);
  Serial.println("Serial OK!");

  xTaskCreatePinnedToCore(Task1code, "Wyswietlanie", 5000, NULL, 10, &Task2, 1); delay(50);
}

void loop() {

}

void Wyswietlanie(){
  gradient(128, 255, 0);
  tftZmienne();
}
void gradient(byte red, byte green, byte blue) {
  COLORS  = (((31 * (red + 4)) / 255) << 11) |
            (((63 * (green + 2)) / 255) << 5) |
            ((31 * (blue + 4)) / 255);
}

void tftZmienne() {
  gaugeBack.createSprite(320, 480);
  gaugeBack.fillSprite(TFT_TRANSPARENT);
  gaugeBack.pushImage(0, 0, 240, 240, Startowa);
  gaugeBack.loadFont(mr2font24);
  gaugeBack.setTextDatum(MC_DATUM);
  gaugeBack.drawFloat(losowa, 1, 110, 60);
  gaugeBack.pushSprite(0, 0, TFT_TRANSPARENT);
}

 

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

// display GC9A01 240x240 IPS
			
#include <Arduino.h>
#include "times18.h"
			
TaskHandle_t Task1code;
				
#include <TFT_eSPI.h>
	//	#include "grafika/background.h"
#include "sample_images.h"
	// #define pinPodswietlenia 33
			
TFT_eSPI tft              = TFT_eSPI();
TFT_eSprite gaugeBack     = TFT_eSprite(&tft);
TFT_eSprite gaugeZmienne = TFT_eSprite(&tft);
		
float losowa =183.4;		
byte red = 31;
unsigned int COLORS = red << 11;
			
// --------------------------------------- subroutine -------------------
					
void codeForTask1code(void * parameter)				
{
	//	unsigned int long opoznienie;
			
	for(;;) {
		;
		Wyswietlanie();
		delay(10);
		losowa = random(1000);
		//opoznienie = 10;
	}
				
}

// ------------------		
void Wyswietlanie(){
  gradient(128, 255, 0);
  tftZmienne();
}
		
// ---------------------------------------------		
void gradient(byte red, byte green, byte blue) {
  COLORS  = (((31 * (red + 4)) / 255) << 11) |
            (((63 * (green + 2)) / 255) << 5) |
            ((31 * (blue + 4)) / 255);
}
			
// ---------------
void tftZmienne() {
		//	gaugeBack.createSprite(320, 480);
	gaugeBack.createSprite(230, 230);
  gaugeBack.fillSprite(TFT_TRANSPARENT);
		//	gaugeBack.pushImage(0, 0, 200, 200, Startowa);
	gaugeBack.pushImage(30, 20, 160, 160, (uint16_t *)stars);
		// gaugeBack.loadFont(mr2font24);
	gaugeBack.loadFont(times18);
  gaugeBack.setTextDatum(MC_DATUM);
  gaugeBack.drawFloat(losowa, 1, 110, 80);
  gaugeBack.pushSprite(0, 0, TFT_TRANSPARENT);
}			
			
			
// -------------------------------------------- setup ------------------------------
void setup() {
				
	tft.begin();
  tft.setRotation(1);
  tft.fillScreen(TFT_BLACK);
  tft.setSwapBytes(true);
				
  Serial.begin(115200);
  Serial.println("Serial OK!");
			
  xTaskCreatePinnedToCore(// ------------------ task on core 1 ----------
		codeForTask1code, 			// Task Function
		"Task1code",		 				// Name of task 
		5000, 									// Stack size of task org 1500
		NULL, 									// Parameter of the task 
		1, 											// Priority of the Task org 1
		&Task1code, 						// Task handle
		1); 										// Core
	delay(50);									// ?
}
		
// ------------------------------------------- loop -------------------------		
void loop() {
		
}
// ---- end --------

- u mnie to działa na 240x240 ale nie mam obrazka transparentnego.

display480.zip

Edytowano przez 99teki
  • Lubię! 1
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

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.