Anzeige von Messchieber-Werten auf TV(Pal) erzeugt nur Zufallswerte

Hallo, ich versuche, einen Messschieber-Wert auf ein TV-Gerät mit tvout.h und fontALL.h zu übertragen.

Zuerst testete ich die Hardware mit dem Beispiel-Sketch " Mandelbrot" genannt, und das Programm lief gut.
Normale Anzeige von Text und Zahlen funktioniert auch.
Dann habe ich den Messschieber an den Arduino (ich benutze den nano) angeschlossen und den folgenden Sketch hochgeladen:

#include <TVout.h>
#include <fontALL.h>
#include <LiquidCrystal.h>  
TVout TV;
LiquidCrystal x(12, 8, 5,4,3,2);
int ix;
int signx;
long valuex;
float resultx;
int clockpinx = 10;  
int datapinx = 6;
unsigned long tempmicrosx;

void setup() 
{
    //Serial.begin(9600);
    pinMode(clockpinx, INPUT);
    pinMode(datapinx, INPUT);
    x.begin(16,2);
      
    TV.begin(_PAL, 128, 96);
    TV.clear_screen();
    TV.select_font(font8x8);
}
 void loop () 
   {
        while (digitalRead(clockpinx)==LOW) {} //so lange Pegel LOWS ist, soll der Wert von
        tempmicrosx=micros();// tempmicrosx dem Wert von micros() entsprechen
          while (digitalRead(clockpinx)==HIGH) {} //wenn Pegel auf LOW geht, behält tempmicrosx seinen Wert, die micros() zählen weiter hoch
            if ((micros()-tempmicrosx)>500) // sobald micros() um mehr als 500 größer geworden ist als tempmicrox, 
           { 
           decodex(); //wird die Prozedur decodex() aufgerufen
           }
   }
   
void decodex() 
{
    signx=1;
    valuex=0;
    for (ix=0;ix<23;ix++) 
    {
  
        while (digitalRead(clockpinx)==LOW) { } 
    
        while (digitalRead(clockpinx)==HIGH) {} 
    
        if (digitalRead(datapinx)==HIGH) 
       {
           if (ix<20) 
           {
             valuex|= 1<<ix;
           }
             if (ix==20) 
                {  
                    signx=-1;  
                }
        }
    }
    resultx=(valuex*signx)/100.00; //Messwert x Vorzeichen/100 ergibt Meßwert mit 2 Stellen hinter dem Komma
      
    if (resultx<-999.99) resultx=-999.99;
    if (resultx>999.99) resultx=999.99;
    char strResultx[8];
    dtostrf(resultx,8,2,strResultx);
    TV.print(1, 1, "X : ");
    TV.print(30, 1,strResultx);
    TV.print(100, 1 ,"mm");
    x.print ("X-Achse");
    x.setCursor(0,1);
    x.print(strResultx);
    x.print(" mm     ");
     Serial.print(strResultx);
}

Das Programm läuft gut, wenn nur der LCD-Teil aktiviert ist (alle TV-Teile werden mit // auskommentiert).
Wenn die TV-Teile ebenfalls aktiviert werden,zeigen sich auf dem LCD und dem TV nur Zufallswerte, und nur ab und zu der Wert, der vom Messschieber gesendet wird.
Wenn nur der TV-Teil aktiviert ist ( also alle LCD-Teile auskommentiert ), werden auch nur Zufallswerte angezeigt.
Auf der Suche nach dem Fehler stellte ich dann fest, dass die Zufallswerte dann angezeigt werden, wenn die Zeile

void setup () {
TV.begin (_PAL, 128, 96);

aktiviert wird.
Ich habe keine Ahnung, wie ich das Problem beheben kann. Vorschläge?

Viele Grüße

Safran

safran:
Ich habe keine Ahnung, wie ich das Problem beheben kann. Vorschläge?

RAM

Incompatibilität Bibliothek mit Wertübertragung?
Hie TV Bibliothek arbeitet mit sehr rigorosem Timing um das Videosignal produzieren zu können. Darum funkioniert wahrscheinlich micros() nicht richtig.
Grüße Uwe