-         

Seite 1 von 3 123 LetzteLetzte
Ergebnis 1 bis 10 von 21

Thema: Variablen auf Display ausgeben

  1. #1
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    30.05.2006
    Ort
    Hamburg
    Beiträge
    165

    Variablen auf Display ausgeben

    Anzeige

    Hallo
    ich habe ein Board und ein Display von qfix und möchte, dass auf meinem Display der gemessene Wert von meinem Sharp ausgegeben wird.
    Nur leider wird mir bei diesem Code:
    Code:
    #include "qfixBobbyBoard.h"
    #include "qfixLCD.h"
    
    BobbyBoard bobby;
    LCD lcd;
    
    int main(){
    
    while (1) {
    lcd.clear();
    int sharp = bobby.analog(0);
    lcd.print(0,0,"sharp");
    }
    }
    Nur "sharp" ausgegeben und nicht der Abstand zur Wand.
    Kann mir jemand sagen was ich bei "lcd.print" reinschreiben muss?
    mfg palermo

    PS: int sharp geht auch nicht

  2. #2
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    15.01.2006
    Ort
    Biberach
    Alter
    27
    Beiträge
    485
    Ich würde mal annehmen, dass du statt "sharp" einfach nur sharp schreiben solltest. Wenn du "sharp" schreibst wird das als String erkannt und ausgegeben, schreibst du jedoch sharp ohne Anführungsstriche wird der Wert in der Variablen sharp benutzt.

    MfG

  3. #3
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    30.05.2006
    Ort
    Hamburg
    Beiträge
    165
    Hallo
    Die " gehören zum Befehl dazu und werden auf dem Display auch nicht ausgegeben, ich habe das nur vorhin so geschrieben.
    trotzdem danke
    mfg palermo

  4. #4
    Benutzer Stammmitglied
    Registriert seit
    04.05.2005
    Ort
    Steiermark/AT
    Alter
    35
    Beiträge
    36
    ich kenne die lcd.print funktion nicht, aber so wie du es angibst, soll lcd-print den string "sharp" ausgeben und nicht irgendeinen int-wert der so heisst. coCo hat damit schon recht.
    die " kennzeichnen ja in c einen string ..

    wenn die lcd.print funktion string-formatierung versteht, dann sollte dein kommando so ähnlich aussehen:

    lcd.print(0, 0, "%d", sharp");

    das %d ist ein platzhalter für einen int.
    ansonsten einfach mit sprintf einen string daraus machen und diesen dann ausgeben:

    char wert[10+1]; // keine ahnung wie lang dein wert sein könnte
    sprintf(wert, "%d", sharp);
    lcd.print(0,0, wert);

    hoffe das ist so ok
    ein link zur benutzung von ansi-c sprintf findest du unter [1].

    lg

    [1] http://www.cppreference.com/stdio/sprintf.html

  5. #5
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    10.07.2004
    Ort
    Nürnberg
    Alter
    36
    Beiträge
    186
    Hi,
    bin da auch gerade drüber!
    Das muss doch eigentlich mit einem itoa(sharp,puffer,10) gelöst werden!
    Code:
    int sharp;
    char puffer[5];
    itoa (sharp, puffer, 10);
    lcd.print(0,0,puffer);
    Ich bin keine Signatur ich mach hier nur sauber

  6. #6
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    30.05.2006
    Ort
    Hamburg
    Beiträge
    165
    Hallo Travolds
    Meintest du das so? (hast du absichtlich vor sharp kein " geschrieben?)
    Code:
    #include "qfixBobbyBoard.h" 
    #include "qfixLCD.h" 
    
    BobbyBoard bobby; 
    LCD lcd; 
    
    int main(){ 
    
    while (1) { 
    lcd.clear(); 
    int sharp = bobby.analog(0); 
    lcd.print(0, 0, "int", sharp"); 
    } 
    } 
    
    
    
    
    > "c:\WinAVR\compile-mega32.bat" myTest
    compiling ...
    myTest.cc: In function `int main()':
    myTest.cc:12: Fehler: fehlendes abschließendes Zeichen "
    myTest.cc:13: Fehler: expected `)' vor »}«-Zeichen
    myTest.cc:13: Fehler: expected `;' vor »}«-Zeichen
    avr-objcopy: 'myTest.elf': No such file
    OK
    
    > Process Exit Code: 0
    > Time Taken: 00:01
    Was müsste ich in die Klammern von char wert[]; eintragen wenn mein Wert z.B. bis 300 geht?

    Hallo zumgwadrad
    Irgendwie wird itoa garnicht als Befehl erkannt.
    Code:
    #include "qfixBobbyBoard.h" 
    #include "qfixLCD.h" 
    
    BobbyBoard bobby; 
    LCD lcd; 
    
    int main(){ 
    
    while (1) { 
    lcd.clear(); 
    int sharp = bobby.analog(0); 
    char puffer[5]; 
    itoa (sharp, puffer, 10); 
    lcd.print(0,0,puffer); 
    } 
    } 
    
    
    > "c:\WinAVR\compile-mega32.bat" myTest
    compiling ...
    myTest.cc: In function `int main()':
    myTest.cc:13: Fehler: »itoa« wurde in diesem Gültigkeitsbereich nicht definiert
    myTest.cc:13: Warnung: Variable »itoa« wird nicht verwendet
    avr-objcopy: 'myTest.elf': No such file
    OK
    
    > Process Exit Code: 0
    > Time Taken: 00:00

    PS: Sorry an alle wegen meiner Dummheit - ich programmiere noch nicht so lange.

  7. #7
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    10.07.2004
    Ort
    Nürnberg
    Alter
    36
    Beiträge
    186
    Hi palermo!
    Sry war wieder nur ne Halbinfo von mir!
    Musst noch die Standardbib includen

    Code:
    #include <stdlib.h>
    Sonst läuft da herzlich wenig!!
    Viel Erfolg noch!!
    Ich bin keine Signatur ich mach hier nur sauber

  8. #8
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    30.05.2006
    Ort
    Hamburg
    Beiträge
    165
    Hallo zumgwadrad
    Es funktioniert sehr gut (ich habe da noch einen warte-Befehl reingesetzt weil der Wert so schnell gewechselt hat das man gar nichts sehen konnte). Es wäre sehr nett wenn du versuchen würdest mir das einmal ganz kurz zu erklären was ich da jetzt programmiert habe.
    Code:
    #include <stdlib.h> 
    #include "qfixBobbyBoard.h" 
    #include "qfixLCD.h" 
    
    BobbyBoard bobby; 
    LCD lcd; 
    
    int main(){ 
    
    while (1) { 
    lcd.clear(); 
    int sharp = bobby.analog(0); 
    char puffer[5]; 
    itoa (sharp, puffer, 10); 
    lcd.print(0,0,puffer); 
    sleep(1);
    } 
    }
    vielen Dank für eure Hilfe

  9. #9
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    10.07.2004
    Ort
    Nürnberg
    Alter
    36
    Beiträge
    186
    Hi!
    Freut mich das es funktioniert. Bei mir noch nicht wirklich! Ich bin der Herr des Sonderzeichensalats.
    Ne gute anleitung zu itoa findest du hier
    http://www.goblack.de/desy/sc12chip/...thek/itoa.html
    Eigentlich wandelst du die Zahl ja nur in ein String um, da du am Display ja nur Strings und keine Werte ausgeben kannst! Also dieses"%d",sharp);
    geht ja nur bei printf und so.
    Díesen erzeugten String kannst du jetzt am Display ausgeben!
    Viel Erfolg weiterhin!
    Ich bin keine Signatur ich mach hier nur sauber

  10. #10
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    30.05.2006
    Ort
    Hamburg
    Beiträge
    165
    Hi!
    Danke, ich glaube das habe ich verstanden (sehr guter Link). Nur noch eine letzte Frage und zwar habe ich noch nie die Variablenart char benutzt. Wofür ist die [5] ?
    mfg palermo

Seite 1 von 3 123 LetzteLetzte

Berechtigungen

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