Buongiorno,
ho acquistato un display TFT 128X160 con comunicazione SPI di una marca conosciuta (non so se si possono nominare ma nel dubbio non lo faccio).
Il monitor funziona correttamente ed usa un driver (già incorporato se ho capito bene) TS 7785s.
Ora io vorrei realizzare un piccolo videogioco simile a Tetris come dimostrazione per i miei allievi.
Sto usando la libreria GFX di Adafruit e volevo usare la tecnica del framework, ovvero ripulire lo schermo ogni volta e ridisegnare i vari elementi ad ogni loop.
Per rendere chiaro il mio problema ho scritto uno schetch che fa spostare una pallina dall'alto verso il basso quindi nel loop eseguo le seguenti istruzioni:
- pulisco lo schermo, o per meglio dire imposto il colore dello schermo nero
- incremento la variabile per la posizione Y della pallina
- ridisegno la pallina
Per far sembrare il tutto fluido si dovrebbero raggiungere almeno i 30 fps (frame per second).
Il risultato è davvero orribile perchè la frequenza di aggiornamento del display è davvero bassa, vi allego un'immagine insieme al codice mentre purtroppo il video ho provato a zipparlo ma ho solo 7zip che non è supportato dal sito.. Ho aggiunto anche un'altra forma rettangolare per rendere il tutto un po' più gravoso.
#include <SPI.h>
#include <Wire.h>
#include <Adafruit_GFX.h>
#include <Adafruit_ST7735.h> // Hardware-specific library for ST7735
#include <Fonts/FreeSerif9pt7b.h>
#include <Fonts/FreeSansBold12pt7b.h>
#define TFT_CS 10
#define TFT_RST 8 // Or set to -1 and connect to Arduino RESET pin
#define TFT_DC 9
// For 1.44" and 1.8" TFT with ST7735 use:
Adafruit_ST7735 tft = Adafruit_ST7735(TFT_CS, TFT_DC, TFT_RST);
int posY = 0;
void setup() {
// Use this initializer if using a 1.8" TFT screen:
tft.initR(INITR_BLACKTAB); // Init ST7735S chip, black tab
tft.setSPISpeed(40000000);
}
void loop() {
tft.fillScreen(ST77XX_BLACK); //Ripulisce lo schermo
posY++; //sposta la pallina verso il basso di 1 pixel
tft.fillRect(20,50,40,80,ST77XX_YELLOW); //Ridisegna il quadrato
tft.fillCircle(50, posY, 20,0x6DF0 ); //ridisegna la pallina
}
Nel video si sarebbe vista la pallina lampeggiare a causa dei bassi FPS (Frame per second)
Per collegare l'hardware ho seguito alcuni tutorial dove permettevano il collegamento senza altri driver o schede esterne. Il produttore però mi ha mandato questo ma non capisco di cosa si tratta e non è nemmeno compreso nel pacchetto. Sto aspettando con ansia la risposta alla mia domanda ma tarda ad arrivare.
Vi è mai capitato di utilizzare questi tipi di display? Quello secondo voi è un componente indispensabile??
Vorrei sapere se dipende invece dai limiti di Arduino, se ci sono delle librerie più efficaci o se semplicemente questo display non va bene perchè limitato e, in questo ultimo caso, se mi sapete indicare qualche altro display più prestante.
Vi ringrazio anticipatamente per la vostra solita e cordiale disponibilità e faccio un saluto a tutta la comunity ![]()

