- LiFePO4 Speicher Test         
Seite 2 von 3 ErsteErste 123 LetzteLetzte
Ergebnis 11 bis 20 von 21

Thema: Variablen auf Display ausgeben

  1. #11
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    10.07.2004
    Ort
    Nürnberg
    Alter
    43
    Beiträge
    186
    Anzeige

    LiFePo4 Akku selber bauen - Video
    Hi!
    char ist die abkürzung für character, also entweder ein Buchstabe oder eine ganze Zahl zw. -127 und +128.
    [] nach einer Variable deklarieren diese als so genanntes Array, also Feld, oder leichter gesagt eine Reihe unterschiedlicher Daten. Ein String setzt sich zusammen aus einer Reihe von Buchstaben also einem char Array. Die 5 gibt die Länge des Arrays an. Also kannst du aktuell maximal eine 5stellige Zahl ausgeben. Schau dazu auch mal im Wissensbereich unter C-Programmierung ins C-Tutorial. Bietet einen übersichtlichen Einstieg in C.
    Ich bin keine Signatur ich mach hier nur sauber

  2. #12
    Benutzer Stammmitglied
    Registriert seit
    04.05.2005
    Ort
    Steiermark/AT
    Alter
    42
    Beiträge
    36
    Zitat Zitat von palermo
    Hallo Travolds
    Meintest du das so? (hast du absichtlich vor sharp kein " geschrieben?)
    nein ich hatte es so gemeint:

    Code:
    #include "qfixBobbyBoard.h" 
    #include "qfixLCD.h" 
    
    BobbyBoard bobby; 
    LCD lcd; 
    
    int main()
    { 
        char wert[3+1];
    
        while (1) { 
            lcd.clear(); 
            int sharp = bobby.analog(0); 
            sprintf(wert, "%d", sharp);
            lcd.print(0, 0, wert); 
        } 
    }
    kurz als erklärung:

    zeile "char wert[3 + 1];":
    du hast ja gesagt du hast maximal 300 als wert also 3 zeichen,
    der wert soll also in einen string umgewandelt werden. für jedes zeichen muss speicher reserviert werden. wir müssen also ein array mit 4 zeichen anlegen.
    du denkst dir sicher es würden dann ja 3 zeichen reichen, aber das ist nur bedingt der fall.
    in c wird ein string immer mit '\0' abgeschlossen. dies kennzeichnet das ende eines strings. '\0' ist ein weiters zeichen und muss unbedingt berücksichtigt werden, wenn du mit string funktionen arbeitest.

    zeile sprintf:
    siehe link von meinem ersten post

    zeile "lcd.print(0, 0, wert);":
    an die unterfunktion lcd.print wird ein pointer auf die daten übergeben. ein pointer zeigt auf eine speicherstelle in der dein wert steht. in unserem fall steht der string in der variable "wert" welche auf irgendeine speicherstelle zeigt.

    hoffe das ist verständlich

    Zitat Zitat von palermo
    PS: Sorry an alle wegen meiner Dummheit - ich programmiere noch nicht so lange.
    mach dir da drüber keine gedanken jeder hat mal klein angefangen. trotzdem würd ich dir nahelegen, dir irgendeinen c kurs reinzuziehen. spätestens bei einem komplexeren programm wirds dich aufschmeissen mit pointern sag ich mal
    wenn du aber zeit in zuerst lesen und dann probieren investierst, wirst du sicher viel mehr spass an der sache haben

    lg

  3. #13
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    30.05.2006
    Ort
    Hamburg
    Beiträge
    165
    Hallo Trravolds
    Hm du hast sicher Recht nur habe ich (wirklich) nichts passendes bei Google gefunden und dann habe ich hier mal gefragt. Ich würde gerne mal einen C/C++ Standartbibliotehk Kurs mitmachen nur bin ich noch nicht wirklich fündig geworden, ich habe aber bei Büchern und so nur C/C++ Anleitungen gefunden um Spiele/PC-Programme zu programmieren. Ich wäre an Link/Buchtipps sehr interesiert.


    Also er denkt immer noch das sprintf eine Variable sei:

    Code:
    > "c:\WinAVR\compile-mega32.bat" myTest
    compiling ...
    myTest.cc: In function `int main()':
    myTest.cc:15: Fehler: »sprintf« wurde in diesem Gültigkeitsbereich nicht definiert
    myTest.cc:15: Warnung: Variable »sprintf« wird nicht verwendet
    avr-objcopy: 'myTest.elf': No such file
    OK
    
    > Process Exit Code: 0
    > Time Taken: 00:00
    Aber das Prinziep denke ich habe ich verstanden.

    Hallo zumgwadrad
    danke für die Erklärung, müsste ich verstanden haben.

    PS:Irgendwie kann man überhaupt keine Formel erstellen um den Sharp-Wert in cm umzurechnen - man kann überhaupt keine Regelmäßigkeit feststellen. Weiß einer von euch was darüber? (ich weiß, dass passt nicht mehr zum Thema aber wenn ihr gerade einen passenden Link da habt.............. )

    *grins* inerhalb kürzester Zeit bin ich schon der zweite der nach itoa fragt
    https://www.roboternetz.de/phpBB2/ze...688&highlight=

  4. #14
    Benutzer Stammmitglied
    Registriert seit
    04.05.2005
    Ort
    Steiermark/AT
    Alter
    42
    Beiträge
    36
    hi,

    Zitat Zitat von palermo
    Hm du hast sicher Recht nur habe ich (wirklich) nichts passendes bei Google gefunden und dann habe ich hier mal gefragt. Ich würde gerne mal einen C/C++ Standartbibliotehk Kurs mitmachen nur bin ich noch nicht wirklich fündig geworden, ich habe aber bei Büchern und so nur C/C++ Anleitungen gefunden um Spiele/PC-Programme zu programmieren. Ich wäre an Link/Buchtipps sehr interesiert.
    links siehe [1] und [2]

    Zitat Zitat von palermo
    Also er denkt immer noch das sprintf eine Variable sei:

    Code:
    > "c:\WinAVR\compile-mega32.bat" myTest
    compiling ...
    myTest.cc: In function `int main()':
    myTest.cc:15: Fehler: »sprintf« wurde in diesem Gültigkeitsbereich nicht definiert
    myTest.cc:15: Warnung: Variable »sprintf« wird nicht verwendet
    avr-objcopy: 'myTest.elf': No such file
    OK
    
    > Process Exit Code: 0
    > Time Taken: 00:00
    Aber das Prinziep denke ich habe ich verstanden.

    Hallo zumgwadrad
    danke für die Erklärung, müsste ich verstanden haben.
    sieht so aus als würdest du nicht den benötigten header für sprintf includieren.
    probier mal ein

    Code:
    #include <stdio.h>
    dort wo auch deine anderen includes stehen, einzutragen.

    zu deiner letzten umrechnungsfrage kann ich dir leider gar nicht helfen

    lg

    [1] http://www.galileocomputing.de/openbook/c_von_a_bis_z/
    [2] http://de.wikibooks.org/wiki/C-Programmierung

  5. #15
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    30.05.2006
    Ort
    Hamburg
    Beiträge
    165
    Hallo Travolds
    der code funktioniert!
    Hast du das Buch?
    mfg palermo

  6. #16
    Benutzer Stammmitglied
    Registriert seit
    04.05.2005
    Ort
    Steiermark/AT
    Alter
    42
    Beiträge
    36
    hi,

    nö hab ich nicht
    habs dir deswegen geschickt, weil es auf den ersten blick einen vernünftigen anschein macht und komplett online verfügbar ist.
    einfach mal anfangen und durchlesen - ist eh net so viel

    unter [1] findest du auch noch eine ansi-c/c++ befehlsreferenz die mit beispielen doch sehr gut ist - IMHO

    lg

    [1] http://www.cppreference.com

  7. #17
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    30.05.2006
    Ort
    Hamburg
    Beiträge
    165
    Hallo
    Die Werte 119 bis 54 sind produktgleich bzw. antiproportional \/ \/ \/ und lassen sich somit natürlich mit einer Formel errechnen. Das funkt sehr gut nur bekomme ich wegen char ja nur ganze Zahlen ausgegeben und ersetzen gegen z.B. short geht auch nicht. Es wäre ein wenig schade immer nur ganze Zahlen zu bekommen da ich sie ja recht genau berechnen kann.
    mfg palermo

    Code:
    #include <stdlib.h> 
    #include "qfixBobbyBoard.h" 
    #include "qfixLCD.h" 
    
    BobbyBoard bobby; 
    LCD lcd; 
    
    int main(){ 
    
    while (1) { 
    int sharp = bobby.analog(0); 
    int cm; 
    char puffer[5];
    lcd.clear(); 
    if ((sharp<120) && (sharp>53)) {
    cm=540/sharp;
    lcd.clear(); 
    itoa (cm, puffer, 10);
    lcd.print(0,0,puffer); 
    lcd.print(0,2,"cm"); 
    sleep(1); 
    }
    } 
    }

  8. #18
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    30.05.2006
    Ort
    Hamburg
    Beiträge
    165
    Hallo
    Weiß niemand was ich machen muss um Kommazahlen zu bekommen?
    *komisch* palermo

  9. #19
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    10.07.2004
    Ort
    Nürnberg
    Alter
    43
    Beiträge
    186
    Hi!
    Des mit den Nachkommazahlen musst du mal im Forum suchen! Irgendwie double auf display oder so!
    Hatte dazu schonmal was gelesen! musst auf jeden fall vorkomma und nachkomma getrennt berechnen und ausgeben!
    Also des Prinzip war das du den Wert berechnest und nach der Berechnung mit 100 mutlipizierst! Diesen Integer teilst du dann nochmal durch 100, mittels Modula-Operator(%), das ist dann dein Vorkommawert!
    Der Rest dieser berechnung ist dann der Nachkommawert!
    Viel Erfolg
    Ich bin keine Signatur ich mach hier nur sauber

  10. #20
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    30.05.2006
    Ort
    Hamburg
    Beiträge
    165
    Hallo
    Irgendwie finde ich im Roboternetz nichts darüber.
    Ich werde jetzt mal die ganzen Links von Travolds durchgucken ob ich da etwas passendes finde. Ansonsten hatte ich noch die Idee es einfach in mm umrechnen zu lassen, dann hätte ich ja nur ganze Zahlen.
    mfg palermo

Seite 2 von 3 ErsteErste 123 LetzteLetzte

Berechtigungen

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

12V Akku bauen