Hallo zusammen,
ich habe für die Funktion "Laufschrift" zwei Globale Integer, die aber nur in dieser einen Funktion verwendet werden, einmal x und last_x. Solange diese Global bleiben, funktioniert die Laufschrift wunderbar. Sobald ich aber einen der beiden nur Funktionsbezogen setze, sehe ich nichts mehr von Text.
Kann mir mal Jemand erklären warum dies so ist? Ich würde gern den Wert x mit Funktionsaufruf übergeben.
So funktioniert es:
String Text_Strg = "Das ist ein Test.";
int x = 64;
int last_x;
void Laufschrift (String Strg, int y){
int l = Strg.length();
int Strg_laenge = (l *6) - (l *12);
static unsigned long last_ms = 0;
unsigned long ms = millis();
if (last_x != x){
dma_display->setTextColor(dma_display->color565(0, 0, 0));
dma_display->setCursor(last_x,y);
dma_display->print(Strg);
} else {
dma_display->setTextColor(dma_display->color565(0, 255, 255));
dma_display->setCursor(x,y);
dma_display->print(Strg);
}
last_x = x;
if (x <= Strg_laenge){
last_x = 64;
}
if (ms - last_ms <= 100) return;
last_ms = ms;
x = last_x - 1;
}
void loop() {
Laufschrift(Text_Strg, 8);
}
Und so bleibt das Display leer:
String Text_Strg = "Das ist ein Test.";
int last_x;
void Laufschrift (String Strg, int x, int y){
int l = Strg.length();
int Strg_laenge = (l *6) - (l *12);
static unsigned long last_ms = 0;
unsigned long ms = millis();
if (last_x != x){
dma_display->setTextColor(dma_display->color565(0, 0, 0));
dma_display->setCursor(last_x,y);
dma_display->print(Strg);
} else {
dma_display->setTextColor(dma_display->color565(0, 255, 255));
dma_display->setCursor(x,y);
dma_display->print(Strg);
}
last_x = x;
if (x <= Strg_laenge){
last_x = 64;
}
if (ms - last_ms <= 100) return;
last_ms = ms;
x = last_x - 1;
}
void loop() {
Laufschrift(Text_Strg, 64, 8);
}
Vielen Dank schon mal im Vorraus