- 12V Akku mit 280 Ah bauen         
Ergebnis 1 bis 10 von 44

Thema: Uno R3 mit 128x64 Pixel Display und Dreh-Encoder grafische Anzeigeprobleme

Hybrid-Darstellung

Vorheriger Beitrag Vorheriger Beitrag   Nächster Beitrag Nächster Beitrag
  1. #1
    Erfahrener Benutzer Robotik Visionär Avatar von 021aet04
    Registriert seit
    17.01.2005
    Ort
    Niklasdorf
    Alter
    37
    Beiträge
    5.093
    Ist, wenn mans weiß, ganz einfach und logisch. Genau über solche Dinge bin ich froh.
    Während meiner Übungen habe ich soviel dazu gelernt, dass ich immer geneigt bin
    nochmal ganz von vorn anzufangen, da ich inzwischen viele Probleme ganz anders lösen würde.

    Das ist normal. Wenn man nach einer Zeit sich seine Programme anschaut, würde man das Programm immer etwas anders machen. Ich mache aktuell einen Kurs zur S7-Programmierung (SPS-Steuerung von Siemens) und der Ausbildner hat genau das gleiche gesagt.

    Trotz allem bin ich bei Sketchen von Profis nur teilweise in der Lage alles richtig zu verstehen.
    Das braucht noch Zeit.
    Fremden Code zu verstehen ist immer schwer, weil jeder seinen eigenen Stil hat und jeder etwas anders seine Programme schreibt.

    Vielen Dank für Eure Bemühungen.

    Gerne, dafür ist das Forum da.

    MfG Hannes

  2. #2
    HaWe
    Gast
    Trotz allem bin ich bei Sketchen von Profis nur teilweise in der Lage alles richtig zu verstehen.
    Das braucht noch Zeit.
    gerade C ist dafür bekannt, dass es dazu verleitet, völlig unverständlichen Code zu schreiben. Manche machen komplette Wettbewerbe daraus.
    https://en.wikipedia.org/wiki/Intern...C_Code_Contest
    was für den nächsten Valentins Tag:

    Code:
        #include<stdio.h>
        main() 
        {
        int i,l,u;  
         
        char *ilu="STILL THINKING HOW I DID IT?\
        !r/g.g#i.g/g!j/g.g#i.g/g+g!q0g!mag/h(g!m]g+g!p<g!h`i!l`g!k`g!h\
        <g+g!p}g!i}g!i}g!h0g!g]g}g!g}h`g!h}g+g!p<g!h`g}g`g!h}g`h]g`g0g}\
        g0g!g}g`g!h<g+g!q]g!n`g!o0g+g!r]g`h!g]g`g0h!g]g}g!g}g!j0g+g!n`g!\
        i0g!h}g!g}g!g]g`g0g]g`g0g!h0g(g+g!m}g!g]g!h]g0g`g0g]g!n0g(g+g!m]g\
        `g]g}g!g0g!g`h!gag]g!j0g(g+g!p]g0g`g0g`h]g!hag]g0g(g!k/g.h>g(g0g\
        g]g+g!i`j-g`h0g`h-g`k-g`l*g0g!i0g|gg~i+g!i.g-g.k-g.h]g.h-g.k-\
        g.i-g]g(g.g(g!g|hg~h+g!q`h0g]g`g!r(g.h>g/g]g~g0g+g!p0g`g0g!g\
        }g]h+g!u]g0g";
         
            for(i=28;l=ilu[i++];)
                for(u=(*(ilu+++i)-((1<<6)+(1<<5)+(1<<2)+(1<<1)));u--;)
                    putchar(!((l-11)^(1<<5))?l-1-(1<<5):l-1);
         
        }
    [spoiler]
    https://ideone.com/I0HTec
    [/spoiler]

  3. #3
    Benutzer Stammmitglied
    Registriert seit
    28.05.2018
    Beiträge
    45
    Nur so aus Neugier, ist so ein Code nun effizienter als ein langer verschachtelter "wenn>dann" Code?
    Was macht der Compiler damit? (Nur ganz grob, Details verstehe ich sowieso noch nicht..)

  4. #4
    HaWe
    Gast
    Zitat Zitat von Wolle62 Beitrag anzeigen
    Nur so aus Neugier, ist so ein Code nun effizienter als ein langer verschachtelter "wenn>dann" Code?
    Was macht der Compiler damit? (Nur ganz grob, Details verstehe ich sowieso noch nicht..)
    der obfuscated code oben ist sicher nicht "effektiver".
    Es gibt bei C aber ein paar Tricks, den Code tatsächlich schneller zu machen:

    statt x=x+1
    x++

    statt x=x+5
    x+=5


    statt
    {
    x=2*y;
    y++;
    }
    x=2*y++;

    Die Unterschiede sind aber minimal, das meiste macht der C Compiler selbstständig über seine eingebaute Code-Optimierung. Damit man hinterher seinen Code noch selber versteht und Fehler vermeidet, macht es mehr Sinn, ihn intuitiv verständlich zu schreiben.

  5. #5
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    13.01.2014
    Beiträge
    454
    Blog-Einträge
    3
    Zitat Zitat von HaWe Beitrag anzeigen
    Es gibt bei C aber ein paar Tricks, den Code tatsächlich schneller zu machen:

    statt x=x+1
    x++

    statt x=x+5
    x+=5


    statt
    {
    x=2*y;
    y++;
    }
    x=2*y++;
    Quelle? Belege?

    Hier der Grund meiner Skepsis deine Behauptung betreffend.
    Geändert von Sisor (24.02.2019 um 18:18 Uhr) Grund: Begründung der Skepsis hinzugefügt.

  6. #6
    HaWe
    Gast
    Zitat Zitat von Sisor Beitrag anzeigen
    Quelle? Belege?
    das war zugegebenermaßen aus der Erinnerung aus einem Skript für einen C-Programmierkurs zitiert und bezog sich auf Compiler ohne Optimierung.

    IIRC, lautete die Erklärung:

    x = x + 1;
    würde 3 Instruktionen erfordern, um x zur Addierunit zu schieben, 1 zu addieren und dann wieder x zurückzuschreiben, wähend

    x++
    direkt im Register, in dem es steht, 1 inkrementiert.

    (restliche Beispiele analog)

    Falls diese Aussage nicht (mehr) stimmt, lasse ich mich ntl gern korrigieren.

  7. #7
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    13.01.2014
    Beiträge
    454
    Blog-Einträge
    3
    Falls diese Aussage nicht (mehr) stimmt, lasse ich mich ntl gern korrigieren.
    Ok. Die Arduino-Sketche werden mit dem gcc-Flag -Os für optimize size also Programmgrößenoptimierung kompiliert.
    Ohne Optimierung hast du zwar Recht, das deine Beispiele unterschiedlichen Code generieren können.

    Dies gilt aber ausdrücklich nicht für Arduino.

  8. #8
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    13.01.2014
    Beiträge
    454
    Blog-Einträge
    3
    Zitat Zitat von Wolle62 Beitrag anzeigen
    Nur so aus Neugier, ist so ein Code nun effizienter als ein langer verschachtelter "wenn>dann" Code?
    Was macht der Compiler damit? (Nur ganz grob, Details verstehe ich sowieso noch nicht..)
    Grob gesagt geschehen drei Schritte im Compiler:
    1. Frontend, Sprachspezifisch (bei Arduino C++): Code wird gelesen (geparst) und zu einem Syntaxbaum (A-S-T: abstact syntax tree) verarbeitet.
    2. Middleend: Sprachunabhängig: A-S-T wird analysiert und optimiert.
    3. Backend: Ausführbarer Code (z.B. universeller Bytecode oder CPU-Spezifischer Maschinencode) wird erstellt.

  9. #9
    Benutzer Stammmitglied
    Registriert seit
    28.05.2018
    Beiträge
    45
    Wow, Danke für die Erleuchtung!
    Diese Website "Compiler Explorer" ist mir völlig neu.
    Da könnte ich meinen "Umstandscode" also mal reinhauen und schauen, was bei "komprimierte Funktion" steht.
    Aber letztendlich kommt der gleiche Maschinencode bei raus? Gut zu wissen.
    Ich dachte, mein Anfängercode ist langsamer und größer als einer vom Profi.
    Das muss also nicht immer der Fall sein?

  10. #10
    HaWe
    Gast
    Zitat Zitat von Wolle62 Beitrag anzeigen
    Aber letztendlich kommt der gleiche Maschinencode bei raus? Gut zu wissen.
    Ich dachte, mein Anfängercode ist langsamer und größer als einer vom Profi.
    Das muss also nicht immer der Fall sein?
    auszuschließen ist nichts, mögich ist alles, wenn auch nicht immer wahrscheinlich

Ähnliche Themen

  1. Dreh-Encoder gibt "Rückschlag-Impuls" ab - wieso nur?
    Von t0bias im Forum AVR Hardwarethemen
    Antworten: 1
    Letzter Beitrag: 03.03.2014, 16:08
  2. Dreh-Encoder und Tasten gleichzeitig abfragen
    Von DerSchatten im Forum C - Programmierung (GCC u.a.)
    Antworten: 0
    Letzter Beitrag: 13.05.2011, 20:16
  3. LCD-Display 128x64 mit dem Controler T6963c
    Von heri im Forum PIC Controller
    Antworten: 8
    Letzter Beitrag: 05.06.2007, 22:04
  4. Funktioniert der Pollin-Dreh-Encoder mit BASCOM?
    Von felack im Forum Basic-Programmierung (Bascom-Compiler)
    Antworten: 16
    Letzter Beitrag: 27.06.2006, 17:52
  5. Hyundai 128x64 LC-Display
    Von ShadowPhoenix im Forum Basic-Programmierung (Bascom-Compiler)
    Antworten: 14
    Letzter Beitrag: 01.12.2005, 21:16

Berechtigungen

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

12V Akku bauen