ArduinoIDE: platzsparende snprintf Alternative

  • Ich hab ein kleines Problem mit einem Sketch den ich versuche zu kompilieren:

    Mein Problem ist das der Sketch für den ATtiny84 AVR zu gross ist: region text overflowed by 398 bytes


    Sobald ich snprintf(msg, 26, "v=%d&t=%d", supplyV,temp); auskommentiere kommt:

    Code
    Binäre Sketchgröße: 6.878 Bytes (von einem Maximum von 8.192 Bytes)

    Nun hab ich nach einer snprintf Alternative gesucht und mini-printf gefunden - allerdings krieg ich das nicht eingebunden =(

    Als Fehlermeldung kommt:

    Code
    C:\Program Files\Arduino/DS18B20.ino:121: undefined reference to `mini_snprintf(char*, unsigned int, char*, ...)'

    Ich hatte auch schon versucht die mini-printf.c in mini-printf.cpp umzubenennen aber dann kommen noch mehr Fehlermeldungen =(


    Kann mir da bitte jemand auf die Sprünge helfen?

    :danke_ATDE:


    /EDIT: Crossposting: http://forum.arduino.cc/index.php?topic=206937.0
    Mal gucken ob da was raus kommt


  • Hallöchen ... was macht das Pfötchen ;) ...

    Du Meisterreimer :D
    Geht so - danke der Nachfrage :)


    #include für die mini... drin?
    Source und header im aktuellen Verzeichnis?

    Ja, das mini-printf-master.zip geladen, in mein Sketchbook\libraries\ entpackt, Ordner umbenannt in "miniprintf" und im Sketch #include "mini-printf.h" selbstredent eingefügt...

    Was hab ich vergessen? :s

  • Die "mini-printf.h"wird wahrscheinlich nicht gefunden, da sie in einem Verzeichnis "Libraries/miniprintf" steht.
    Entweder #include anpassen oder die mini-printf.h in ein Verzeicnis verschieben, wo sie vom Compiler gefunden wird.

  • Doch die wird gefunden denn wenn ich den Ordner verschiebe kommt eine andere Fehlermeldung:

    Code
    DS18B20.ino:17:25: error: mini-printf.h: No such file or directory

    Alle anderen Libs die in dem Sketch durch #include geladen werden, sind ebenfalls in dem Ordner: Datei -> Einstellungen -> Sketchbook Speicherort: G:\_FUNK_SENSOR\sketches
    Und in diesem Ordner sind zwei weitere für meine Sketches wichtige: hardware und libraries

    In meinem Sketchbook Ordner sind folgende Verzeichnisse:

    • hardware

      • attiny

        • bootloaders
        • cores
        • variants
    • libraries

      • RFM12B
      • JeeLib
      • DHT22
      • DallasTemperature
      • OneWire
      • miniprintf
  • Jemand im Arduino.cc Forum hat eine Lösung gefunden - zwar nicht um die mini-printf einzubinden aber um den gewünschten Effekt zu bewirken:

    Zitat von jurs


    Warum brauchst Du für so eine kleine Formatierungsaufgabe eine Riesenfunktion mit so viel Overhead?
    Was sind supplyV und temp für Datentypen? Integer?

    Wenn Du den Puffer nach dem abschließenden Nullzeichen hübsch ausgenullt haben möchtest und noch ein paar Bytes Programmgröße übrig hast, kannst Du die memset-Zeile entkommentieren.


    Der funktionierende Sketch sieht nun so aus:

    Binäre Sketchgröße: 7.358 Bytes (von einem Maximum von 8.192 Bytes)

    :bravo2:

    :thumbs1:

Jetzt mitmachen!

Du hast noch kein Benutzerkonto auf unserer Seite? Registriere dich kostenlos und nimm an unserer Community teil!