-         

Ergebnis 1 bis 7 von 7

Thema: Beschleunigung berechnen

  1. #1
    Benutzer Stammmitglied
    Registriert seit
    24.01.2007
    Beiträge
    53

    Beschleunigung berechnen

    Anzeige

    Hallo an alle,

    ich kämpfe schon seit längerem und hab schon öfters das Forum durch forstet, jedoch leider nichts gefunden.

    Aber jetzt zu meinem Problem, ich hab einen 3-Achsen Beschleunigungssensor an einem Atmega8 und möchte die 3 ADC Werte mittels folgender Formel berechnen und anschließend am Display ausgeben.
    a = sqrt(x*x + y*y + z*z);
    x,y,z => ADC Werte

    Ich hatte mir gedacht den Datentyp long ( kann ich in diesem Datentyp eine Kommazahl speichern?) zu verwenden, oder wäre float besser und mit welcher Funktion kann diese anschließend in einen String umwandeln.

    Danke für alle Antworten

    Michael

  2. #2
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    29.01.2004
    Beiträge
    2.441
    Ich hatte mir gedacht den Datentyp long ( kann ich in diesem Datentyp eine Kommazahl speichern?) zu verwenden, oder wäre float besser und mit welcher Funktion kann diese anschließend in einen String umwandeln.
    Ich habe leider keine Ahnung von C.
    Wenn ich Infos über Datentypen einer Programmiersprache suchen würde, würde ich aber nicht in irgendeinem Forum, sondern in einer Doku zu der Programmiersprache suchen.
    Wenn dem Compiler keine Doku beiligt, findest sich da über Google meist ganz schnell irgendwas, z.B. das hier:
    http://www.siwawi.arubi.uni-kl.de/av...roller_net.pdf

    Demnach ist der Datentyp Long in C (wie in wahrscheinlich allen Programmiersprachen) ein ganzzahliger (Integer) Datentyp.
    Damit bist er für Kommawerte wenig geeignet.

    Float gucke ich jetzt nicht nach, bin mir aber sicher, dass der Name etwas mit "floating point" zu tun hat ....

    mit welcher Funktion kann diese anschließend in einen String umwandeln.
    Guck mal auf Seite 29: http://www.siwawi.arubi.uni-kl.de/av...roller_net.pdf

  3. #3
    Benutzer Stammmitglied
    Registriert seit
    24.01.2007
    Beiträge
    53
    Danke für deine Antwort,

    ich muss mal meine bisherigen Versuch beschreiben, denn ich dieses Beispiel bereits verwendet, jedoch bekomme ich bei der Funktion itoa immer einen leeren String zurück?!?

    Danke
    Michael

  4. #4
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    02.11.2005
    Alter
    42
    Beiträge
    1.140
    Für Kommazahlen sind in C nur die Datentypen float, double und long double geeignet. Normalerweise unterscheiden sich diese Typen in Ihrer Größe, in WinAVR sind allerdings alle drei als 32bit-Typ realisiert, es macht also keinen Unterschied, welchen der drei Du benutzt.

    Um das Ergebnis in einen String zu verwandeln, gibt es die Funktion sprintf()

    Code:
    #include <stdio.h>
    
    double x;
    char string[32];
    
    x = 1.231;
    
    sprintf(string, "Wert: %f",x);
    Gruß,
    askazo

  5. #5
    Benutzer Stammmitglied
    Registriert seit
    24.01.2007
    Beiträge
    53
    Dankeschön,

    werd es heute gleich versuchen, ich hbae bis jetzt immer float verwendet und wenn ich diese in einen ASCII String umgewandlet hab, hat er nur 0 ausgegeben.

    Danke
    Michael

  6. #6
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    02.11.2005
    Alter
    42
    Beiträge
    1.140
    Wenn Du float mir itoa verwendet hast, kann's nicht gehen.
    itoa ist nur für Integer-Typen gedacht. (itoa = Integer to Ascii)

    askazo

  7. #7
    Benutzer Stammmitglied
    Registriert seit
    24.01.2007
    Beiträge
    53
    Dankeschön...

    es klappt endlich, zwar weiß ich nicht wieso es nicht mit float funktioniert, aber mit double funktionierts...

    Danke
    Michael

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •