Problemi con Libreria TVOut

Buongiorno a tutti. Sto tentando di imparare ad usare la libreria in oggetto, tuttavia fin dal primo approccio ho notato comportamenti che davvero non riesco a spiegarmi. Ad esempio, qualcuno saprebbe spiegarmi perche' questo codice non funziona (visualizza in output un'immagine incomprensibile), mentre il secondo (che a mio avviso è IDENTICO) funziona alla perfezione??
L'unica modifica tra i due programmi è che in uno passo alla draw_circle dei parametri costanti, nella seconda passo delle variabili con identico contenuto al posto delle coordinate del centro.

QUESTO FUNZIONA:

#include <TVout.h>
#include <fontALL.h>

TVout TV;

byte x=TV.hres()/2;
byte y=TV.vres()/2;

void setup() {
  TV.begin(PAL,120,96);
  TV.select_font(font6x8); 
  TV.clear_screen();
  TV.draw_circle(TV.hres()/2,TV.vres()/2,30,WHITE,WHITE);
}

void loop() { }

QUESTO NO:

#include <TVout.h>
#include <fontALL.h>

TVout TV;

byte x=TV.hres()/2;
byte y=TV.vres()/2;


void setup() {
  TV.begin(PAL,120,96);
  TV.select_font(font6x8); 
  TV.clear_screen();
  TV.draw_circle(x,y,30,WHITE,WHITE);
}

void loop() {}

Per il semplice fatto che tu, quando hai assegnato TV.hres()/2 a x e TV.vres()/2 ad y dovevi ancora dichiarare le dimensioni dell'immagine (TV.begin(PAL,120,96):wink: quindi x e y valgono 0 e 0.

Difatti se noti nel codice che funziona, TV.hres()/2 e TV.vres()/2 sono ripetuti pari pari nella funzione circle.

Potresti modificare il setup così:

void setup() {
  byte x,y;
  TV.begin(PAL,120,96);
  x=TV.hres()/2;
  y=TV.vres()/2;
  TV.select_font(font6x8); 
  TV.clear_screen();
  TV.draw_circle(x,y,30,WHITE,WHITE);
}

Ma è un passaggio in più che non serve, a 'sto punto lascia

TV.draw_circle(TV.hres()/2,TV.vres()/2,30,WHITE,WHITE);

com'è nella funzione originale.

Giusto.
Però come mai nel caso di un cerchio centrato su [0,0] succede un macello?
mi viene da pensare ad un qualche buffer ciclico in memoria, per cui rimane responsabilità del programmatore restare nell'area disegnabile.
però è un po' una fregatura a pensarci. uhm.

in ogni modo, sapresti anche cortesemente dirmi se quella è la massima risoluzione ottenibile con l'atmel dell'arduino, clockato a frequenza nominale?
Potrei fare la prova, ma sono fuori e vorrei togliermi la curiosità!

La max risoluzione è leggermente maggiore. Con il PAL puoi arrivare a 128x96, oltre non ci sono andato, anche se può dare dei problemi (esaurimento della SRAM interna).

Ho ancora un problema, ben più grave.
Ho acquistato un gingillo USB che mi permette di 'catturare' su schermo del pc un ingresso Video Composito, con audio, e di visualizzarlo o registrarlo.
Avendo testato che funziona con altri dispositivi, mi sono però accorto che il gingillo non rileva il video in output dal mio arduino (cosa che uno qualunque dei televisori che ho in casa, fa benissimo invece).

Cosa può essere? Cosa posso testare?

Ne ho anche io uno e con alcuni dispositivi va con altri no... anche se la codifica è sempre la stessa (PAL)

Sai da cosa dipenda la cosa?

Non so, ma forse dipende dal fatto che alcuni dispositivi TV si aspettano di avere collegato un cavo con una resistenza da 75 Ohm. Prova a metterla sulla linea del segnale per vedere se risolvi.