Hallo,
ich Frage Daten eines Rotary Encoders ab und lasse diese Zahlenwerte auf dem Display des TFT anzeigen.
Soweit funktioniert das auch recht gut. Mein Problem ist, das wenn ich von zweistellig zurück auf anstellig gehe immer die Reste der zweistelligen Zahlen angezeigt werden.
Ich habe auch den Hinweis der UTFT Library gelesen. Finde dort aber nicht dir Möglichkeit dies zu verhindern. Ich bin halt recht neu in der Arduino Programmierung.
Mein Gedanke war das wenn der Wert unter 10 ist, die Farben zu tauschen bzw. das Display zu leeren. Das kann es ja aber auch nicht sein.
Ich habe mir schon die Finger ab-gegoogelt
Folgendes Display habe ich im Einsatz:
Mit dem Shield:
Der Encoder ist Standart (China)
Hier ist mein Sketch soweit:
#include <UTouch.h>
#include <memorysaver.h>
#include <UTFT.h>
int messungPin1 = LOW;
int messungPin1Alt = LOW;
int encoderWert = 0;
int x, y;
//==== Creating Objects
UTFT myGLCD(SSD1289,38,39,40,41); //Parameters should be adjusted to your Display/Schield model
UTouch myTouch( 6, 5, 4, 3, 2);
//==== Defining Variables
extern uint8_t SmallFont[];
extern uint8_t BigFont[];
extern uint8_t SevenSegNumFont[];
void setup() {
// Initial setup
Serial.begin(9600);
pinMode(12, INPUT); //encoder
pinMode(13, INPUT); //encoder
myGLCD.InitLCD();
myGLCD.clrScr();
myTouch.InitTouch();
myTouch.setPrecision(PREC_MEDIUM);
myGLCD.setColor(100, 155, 203);
myGLCD.setColor(255, 255, 255);
myGLCD.setFont(SevenSegNumFont);
myGLCD.setBackColor(100, 155, 203);
}
void loop() {
if (myTouch.dataAvailable()) {
myTouch.read();
x=myTouch.getX(); // X coordinate where the screen has been pressed
y=myTouch.getY(); // Y coordinates where the screen has been pressed
myGLCD.clrScr(); // Clears the screen
}
messungPin1 = digitalRead(12);
if ((messungPin1 == HIGH) && (messungPin1Alt == LOW)) {
if (digitalRead(13) == HIGH) {
encoderWert++;
} else {
encoderWert--;
}
if (encoderWert < 0) { //verhindern von minus Werten
encoderWert = 0;
}
if (encoderWert > 60) { //verhindern von Zeiten länger als 60 Minuten
encoderWert = 60;
}
myGLCD.setColor(100, 155, 203);
myGLCD.setColor(255, 255, 255);
myGLCD.setFont(SevenSegNumFont);
myGLCD.setBackColor(100, 155, 203);
myGLCD.printNumI(encoderWert, CENTER, 76); // Ausgabe der Werte auf dem TFT-Display
Serial.println(encoderWert); // ist nur zur Kontrolle eingefügt.
}
messungPin1Alt = messungPin1;
}//ende loop