Forum: Mikrocontroller und Digitale Elektronik Problem mit Variablen ausgeben


von Neuling (Gast)


Lesenswert?

Hi,
ich hoffe man kann mir hier weiterhelfen...
habe ein Bord mit einem ATMega16 chip drauf und ein display
2x24 oder 2x27 ist ja auch nicht so wichtig,
auf jeden fall würde ich gerne eine variable auf dem display ausgeben
Habe im Anhang mein LCD-Projekt, sollte alles dabei sein, habe mein
Display am laufen und kann auch sachen drauf ausgeben, habe es von
irgendwo hier aus dem forum, und habe es so geändert, dass es tut...
so nun weiß ich aber nicht wie ich mit der funktion auch variablen
ausgeben kann
unter c ging das ja so:
int i=123;

printf("Wert: %d",i);

unter c++ ging das so:
int i=123;
cout << "Wert: " << i;

so die funktion hier lautet:
lcd_puts("Blablabla");

aber keine der beiden anderen methoden funktioniert,
kenne mich auch nicht so wirklich in c aus, könnte einer von euch sich
vielleicht mal die *.h datei ansehen, wo die unktion deklariert ist,
wie das gehen soll ??

Danke

von Neuling (Gast)


Angehängte Dateien:

Lesenswert?

hab die datei im anhang vergessen hier ist sie

von Neuling (Gast)


Lesenswert?

geht das nicht ??

von Karl H. (kbuchegg)


Lesenswert?

Du musst Dir den Zahlwert zunaechst mal in einen String
umwandeln.
Am allereinfachsten, wenn auch nicht am speicherschonendsten,
geht das mit der Funktion sprintf()

  char Buffer[10];
  sprintf( Buffer, "%d", i );
  lcd_puts( Buffer ),

von thkais (Gast)


Lesenswert?

Oder, wenns nur ein Integer-Wert ist, mit der Funktion itoa()

von Neuling (Gast)


Lesenswert?

Hi,
habe das nun so gehaendelt:
///////////////////////////////////////////////
#include <avr/io.h>
#include <stdint.h>
#include <util/delay.h>
#include <stdlib.h>
#include <avr/pgmspace.h>
#include "lcd.h"

void schlaf(float anz)
{
  for(int i = anz; i > 0; i -= 0.25)
  {
    _delay_ms(250);
  }
}

void main(void)
{
  int i=14;
  char Buffer[2];
  DDRA   = 0xff;  //Port A als Ausgang definieren[Display]

  lcd_init(LCD_DISP_ON);
  lcd_clrscr();

  itoa(i,Buffer,2);
  lcd_puts( Buffer );
}

Der gibt mir dann folgendes auf meinem Display aus: 1110,
ja stimmt wohl ist 14, aber ich würde dann doch gerne 14 da stehen hab
und nicht 1110 :)
Ist bestimmt nen ganz kleiner doofer Fehler, aber ich entdecke ihn
nicht, vielleicht seht ihr das ja direkt...?!?


DANKE DANKE

von Neuling (Gast)


Lesenswert?

gibts da nicht ne funktion die itoc() lautet??

von Neuling (Gast)


Lesenswert?

ok habs hinbekommen
da muss bei itoa(int, string,10); stehen, da wir ja im dezimalsystem
rechnen :)

hat sich erledigt !!
trotzdem danke

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.