PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : [ERLEDIGT] Variablenwert in String einfügen ATMega16



miicchhii
14.07.2011, 19:44
Hallo,

Ich möchte einen ADC Wert, den ich von einem Potentiometer einlese auf einem LCD ausgeben.
ADC und LCD funktionieren einwandfrei, aber ich will den Wert direkt ausgeben,
so dass dann am Display die angelegte Spannung steht.
Die LCD-Lib die ich hab hat eine funktion der man einen string übergibt, die ausgabe funktioniert dann automatisch.

ich hab nur leider keine ahnung wie ich die wert in den string bekomm.

mit printf("%i",result) hab ichs schon versucht

Danke schon im voraus

mfg michi

shedepe
14.07.2011, 23:26
Mit der Standard C Funktion "itoa" kannst du den integer in einen string umwandeln und dann in deinen string einbauen.

robocat
15.07.2011, 00:50
Hallo,
wenn du es tatsächlich mit print machen willst (keine sehr speichersparende variante), dann mit "sprintf" um in einen String zu schreiben:

char buffer[16];
sprintf(buffer,"%i",result);
lcd_puts(buffer);
In jedem Fall prüfen, dass buffer gross genug für den Zahlenwert und eine nachfolgende "0" ist.

Mit itoa musst du ähnlich verfahren, zuerst den Speicher bereitstellen, danach erst das lcd_puts mit Zeiger auf eben diesen Speicher.

Gruesse, miau

miicchhii
15.07.2011, 06:39
Danke für Die antworten, hab es mit itoa geschafft, beim compilieren schreibt er zwar implicit declaration, aber er führt die funktion aus, also passts auch^^s-printf, jetzt fällts mir wieder ein ;-) Ich hab in der Schule C gelernt, aber eig mehr Computerbasiert,da haben wir sowas andauernd gebraucht, ist nur schon so lange her,Und printf war das erste woran ich mich erinnert hatte. :-PDanke nochmal, funktioniert jetzt super!Mfg michiPS: sorry für die formatierung, mein Handy-Browser überreisst das nicht^^

BurningWave
15.07.2011, 14:26
Mit printf() kannst du direkt aufs Display schreiben:

FILE lcd_out=FDEV_SETUP_STREAM(lcd_putchar,NULL,_FDEV_S ETUP_WRITE);

int lcd_putchar(charc,FILE*stream){
if(c=='\n'){
lcd_goto(2,1);
return 0;
}
if(c=='\r'){
lcd_goto(1,1);
return 0;
}
if(c=='\t'){
lcd_clear();
return 0;
}
lcd_write1(c);
return 0;
}


int main()
{
stdout=&lcd_out;
lcd_init();
printf("Mein String");
}

Sorry für die Formatierung, das Forum spinnt ein bisschen in Sachen Code einfügen :(

miicchhii
15.07.2011, 14:35
Ich hab das so gelöst:




int spannung;
uint8_t ausgabe[20];
spannung = readADC(0);
itoa(spannung, ausgabe, 10);
lcdPrint(ausgabe,0,0);



mfg michi