Hallo !
Ich hab da ein ähnliche Problem:
Ich lese einen ds2450 via 1Wire aus und möchte den Wert auf einem TFT anzeigen.
Die serielle Ausgabe funktioniert ganz gut.
Nun habe ich aber auch das Problem, dass wenn neue Werte des ADC´s eingehen, die alten Zeichen nicht vollständig gelöscht werden.
@Serenifly:
kannst du das bitte als Code ausdrücke ?
Weil der zweite string kürzer ist? Einfach die nicht benötigten Zeichen mit Leerzeichen überschreiben.
Wenn du einen string namens "str" hast, gibt dir strlen(str) die Länge des strings zurück. Bei einzelnen chars musst du per Hand zählen wie viele du geschrieben hast
Ich versteh das einfach nicht ...
Ich häng noch meinen Code an - vlt. kann mir jemand nen Tip geben.
Gruß Passant
#include <OneWire.h>
#include <UTFT.h>
#include <DS2450.h>
// Declare which fonts we will be using
extern uint8_t SmallFont[];
extern uint8_t BigFont[];
extern uint8_t SevenSegNumFont[];
UTFT myGLCD(ITDB32S,38,39,40,41); // Remember to change the model parameter to suit your display module!
DeviceAddress HVAC = { 0x20, 0xA6, 0xE6, 0x09, 0x00, 0x00, 0x00, 0xD4 };
int vrange = 0; // 0 = 2.56v, 1 = 5.12v
int rez = 8; // rez = 0-f bits where 0 = 16
bool parasite = 0; // parasite power?
float vdiv = 0.000039; // voltage divider circuit value - @ 2,5V :0.000039
OneWire oneWire(12);
ds2450 my2450(&oneWire, HVAC, vrange, rez, parasite, vdiv);
void setup( void )
{
Serial.begin(9600);
my2450.begin();
myGLCD.InitLCD();
myGLCD.clrScr();
myGLCD.fillScr(VGA_BLUE); // Fill the screen with orange
myGLCD.setColor(VGA_RED);
myGLCD.setBackColor(VGA_BLUE);
myGLCD.setFont(BigFont);
}
void loop(void)
{
int wert = 0 ;
int sensorMin = 1024 ; // minimum sensor value
int sensorMax = 12800; // maximum sensor value
char buffer [12];
my2450.measure();
wert = map((int)my2450.voltChA(), sensorMin, sensorMax, 0, 318);
myGLCD.printNumI(wert,1,220); //printNumI(num, x, y[, length[, filler]]);
myGLCD.fillRect(1, 10, wert + 1, 20);
myGLCD.printNumI((int)my2450.voltChA(),1,120);
itoa (wert, buffer ,10);
myGLCD.print(buffer,1,170);
Serial.print("wert = ");
Serial.print(wert);
Serial.print( "\n"); // n wie newline ... zeilenumruch
Serial.print("chA = ");
Serial.println((int)my2450.voltChA());
//Serial.print("chB = ");
//Serial.println((int)my2450.voltChB());
//Serial.print("chC = ");
//Serial.println((int)my2450.voltChC());
//Serial.print("chD = ");
//Serial.println((int)my2450.voltChD());
//delay (2000);
}
Achja nochwas :
Das mit den Leerzeichen ist auch nur so ne Hand am Arm Methode.
Ich würde gerne die Werte als Bargraphen dartsellen. Da klappt das mit den Leerzeichen bestimmt nicht.