Selbstfahrendes Modellauto - Logikfehler



  • theliquidwave schrieb:

    Arcoth schrieb:

    Sorry, aber du bist einfach eine Pussy.

    Sowas von einem Moderator... 👍 Traurig, Arcoth!

    Dem kann ich mich nur anschließen.
    Beleidigend zu werden hilft niemandem.
    Das zeugt nur von mangelnder Reife.
    Und dabei bist du wahrscheinlich älter als ich.

    Ich bin halt noch unerfahren. Dazu stehe ich auch.
    Ich lerne gerne Neues. Aber wenn so viel auf dem Spiel steht wie hier und die Zeit nunmal sehr knapp bemessen ist, lasse ich (gerade als "Grünschnabel") die Finger davon!
    Hier geht es um einen Teil meines Abschlusses und den werde ich mir gewiss nicht verhauen, nur weil ich beim umstellen des Compilers Mist baue.
    Zudem weist du ja noch nicht einmal was für ein Compiler da benutzt wird (es wird nämlich der Compiler eines anderen Programmes benutzt!) und folglich kann es da leicht zu Komplikationen kommen.


  • Mod

    theliquidwave schrieb:

    Sowas von einem Moderator... 👍 Traurig, Arcoth!

    Nö, finde ich nicht. :p

    Und dabei bist du wahrscheinlich älter als ich.

    Wahrscheinlich nicht, und wenn dann nicht mehr als ein, zwei Jahre. Ich schaff's schon irgendwie meine Unreifheiten zu kompensieren.
    Ich finde es jedoch nicht unreif dich als Angsthasten zu bezeichnen, ich hatte eher gehofft es würde eine Trotzreaktion provozieren. 🙂

    Ist die IDE so undurchdringbar strukturiert dass solche Änderungen einen Bluescreen auslösen können?

    Aber wenn so viel auf dem Spiel steht wie hier und die Zeit nunmal sehr knapp bemessen ist, lasse ich (gerade als "Grünschnabel") die Finger davon!

    Ich habe bereits erwähnt, dass man da wirklich nicht viel falsch machen kann. Das Plugin wird Einstellungen haben: Du schaust wo dort entweder Warnungen, Flags, Optionen etc. angegeben werden können.

    Zudem weist du ja noch nicht einmal was für ein Compiler da benutzt wird (es wird nämlich der Compiler eines anderen Programmes benutzt!) und folglich kann es da leicht zu Komplikationen kommen.

    Nein. Es gibt schlicht und einfach keine Komplikation. Wenn du eine Konfigurations-Änderung ausprobierst und es 'nicht klappt', nimmst du einfach den letzten Schritt zurück.
    Probier' nach diesem Schema rum. Falls es gar nicht klappen will, wäre ich sogar bereit mir das Programm und das Plugin zu holen, nur um dir einen Gefallen zu tun. Bin ich nett, was? 🕶

    Na gut, wenn du's lassen willst, lass es. Es hilft schließlich nur dir.



  • Tja, mit Beleidigungen löst man bei mir nur Abneigung aus.

    Hier ein Foto des Plugins:
    https://www.mediafire.com/convkey/894e/6c9mjlu7dlgx7vc6g.jpg

    Da gibt es keine Einstellungsmöglichkeiten. Der Punkt "Options" ist nur für die Standardeinstellungen des Hauptprogrammes.
    Ich glaube auch nicht, dass du dir die IDE mit Plugin so einfach besorgen kannst.
    Wir haben diese als fertige Datei von besagtem Professor bekommen und dieser hat das Plugin meines Wissens selbst entwickelt.

    Im Programm WinAVR selbst kann man auch nicht umstellen.
    Und wo man nix einfach per Option umstellen kann, muss man in den Code eingreifen. Und ab diesem Punkt wird es gefährlich. 😮



  • mal bei
    tools -> option (-> iwas in richtung compiler)
    geguckt?



  • Zeig mal bitte in "Options" den Menüpunkt "Tools". BTW, der Compiler und die IDE gibts hier: https://sourceforge.net/projects/winavr/files/



  • Nowaepon schrieb:

    Da gibt es keine Einstellungsmöglichkeiten. Der Punkt "Options" ist nur für die Standardeinstellungen des Hauptprogrammes.

    Das sollte es beabtworten. 😉

    https://www.mediafire.com/convkey/915a/i06y37uwpar323b6g.jpg

    Unter Extensions gibt es einen CTags Tagger.
    Unter Project Tools gibt es nichts.



  • Nowaepon schrieb:

    Tja, mit Beleidigungen löst man bei mir nur Abneigung aus.

    Gut. Da fehlten wohl die Ironie- und Pädagogik-Tags.... Bleib uns trotzdem erhalten! 🙂

    Du hast ja schon gesagt, dass Du Deinen Prof wegen der Warnungen fragen wirst: mach das!
    Allerdings kann ein wenig rumspielen mit den Tools die Du benutzen musst nicht schaden. Das ganze ist schließlich keine schwarze Magie. (Das gilt auch, wenn die gesuchten Einstellungen nicht über die Oberfläche machbar sind.)

    Übrigens: würfelst Du die Zahlen in Deinem Code? Ich erkenne da kein System. Das solltest Du noch ändern.
    Z.B. könntest Du Funktionen schreiben: wie linksfrei() rechtsfrei() o.ä.. Aber abstandlinks < 60 ?! servo(-10) ? Absolut unverständlich!


  • Mod

    Nowaepon schrieb:

    Tja, mit Beleidigungen löst man bei mir nur Abneigung aus.

    Ich hab' dich kein e.g. Arschloch genannt, sondern dich lediglich geneckt. Da gibt's 'nen großen Unterschied.

    Ich glaube auch nicht, dass du dir die IDE mit Plugin so einfach besorgen kannst.

    Nein, aber ich kann die Anleitung lesen (du hoffentlich auch!). Es scheint als ob du Makefiles ändern musst.

    Gut, das ist tatsächlich gar nicht so trivial, aber schau'n wir mal wie das geht: Es gibt in deinem Projektordner irgendwo eine sog. Makefile, in der es eine Option namens CFLAGS oder CXXFLAGS gibt. Sie könnte so aussehen (das Beispiel ist nicht vorbildlich):

    CFLAGS = -g -std=c++11 -funsigned-char
    

    Dort fügst du einfach (ggf. vorne) die bereits erwähnten Warnflags, -Wall und -Wextra , an.

    Nebenbei: Verdammt, die Schreiber dieses Plugins waren wohl doof. Oder zumindest nicht vertraut mit Korrekturlesen.

    You may or may not have used other compilers, but most have a nice simple GUI and a 'compile' button.



  • Um in Beleidigungen Ironie zu sehen muss ich den Text hören oder den Schreiberling kennen (also schon öfter mit ihm geschrieben haben).
    Sonst lässt sich soetwas nur aus dem Zusammenhang erkennen und dieser ist bei einem Einzeiler nicht gegeben.

    Natürlich kann ich ausprobieren an dem Makefile rumzuspielen.
    Allerdings weis ich aus eigener Erfahrung das dies leicht zum totalen Kollaps führen kann. Ich arbeite schließlich schon seit gut einem Jahr mit Mikrocontrollern.
    Es ist natürlich nix das man nicht überwinden kann, aber wie schon weiter oben geschrieben steht hier halt viel auf dem Spiel.
    Darum frage ich da lieber den Professor.

    [quote=Furble Wurble]Übrigens: würfelst Du die Zahlen in Deinem Code? Ich erkenne da kein System. Das solltest Du noch ändern.
    Z.B. könntest Du Funktionen schreiben: wie linksfrei() rechtsfrei() o.ä.. Aber abstandlinks < 60?! servo(-10)? Absolut unverständlich![/quote]

    Keine der Zahlen ist gewürfelt. Zudem wird an unterschiedlichen Stellen des Programmes auch ein unterschiedlicher Abstand benötigt.
    Wenn ich dies wie von dir vorgeschlagen auslagere, wird der Code zum Einen nur größer und die Logik zum Anderen nur unverständlicher (auf den ersten Blick).
    Bei "abstandlinks < 60" muss die linke Bande nicht frei sein, sondern vorhanden sein. Bei "servo(-10)" werden die Räder so eingestellt, dass sie maximal nach links eingeschlagen sind.
    Die einzigen Zahlen die noch optimiert werden müssen sind die Abstände für die Umstellung zur Rechtsorientierung. Aufgrund des defekten Programmes konnte ich diese noch nicht testen.



  • Nowaepon schrieb:

    Furble Wurble schrieb:

    Übrigens: würfelst Du die Zahlen in Deinem Code? Ich erkenne da kein System. Das solltest Du noch ändern.
    Z.B. könntest Du Funktionen schreiben: wie linksfrei() rechtsfrei() o.ä.. Aber abstandlinks < 60?! servo(-10)? Absolut unverständlich!

    Keine der Zahlen ist gewürfelt. Zudem wird an unterschiedlichen Stellen des Programmes auch ein unterschiedlicher Abstand benötigt.
    Wenn ich dies wie von dir vorgeschlagen auslagere, wird der Code zum Einen nur größer und die Logik zum Anderen nur unverständlicher (auf den ersten Blick).
    Bei "abstandlinks < 60" muss die linke Bande nicht frei sein, sondern vorhanden sein. Bei "servo(-10)" werden die Räder so eingestellt, dass sie maximal nach links eingeschlagen sind.
    Die einzigen Zahlen die noch optimiert werden müssen sind die Abstände für die Umstellung zur Rechtsorientierung. Aufgrund des defekten Programmes konnte ich diese noch nicht testen.

    Irgendwann kommst Du natürlich nicht um "Magic numbers" herum, aber der Code, den ich sehe scheint noch recht abstrakt. Und natürlich sind die Zahlen nicht gewürfelt, sondern Expertenwissen, das ich nicht habe. Und am schlimmsten: wenn Ihr den Motor oder Abstandssensor am Modellauto tauscht ändern sich die Zahlen... 😞

    Es mag jetzt gekünstelt scheinen, aber sieh den Unterschied:

    if (abstandvorne < 17)  //Vor Auto ist ein Hinderniss
            {
                if (abstandrechts > 13) //Wenn rechts Platz ist
                {
                    servo(-10);
                    fahr(-25);
    
                }
                else if (abstandlinks > 13) //Wenn links Platz ist
                {
                    servo(10);
                    fahr(-25);
                }
                else    //Wenn auf beiden Seiten kein Platz ist
                {
                    servo(0);
                    fahr(-25);
    
                }
    
            }
    
    if (einschlag_absehbar()) {
           if(linksfrei())
                  links();
           else if (rechtsfrei())
                  rechts();
           else
                  geradeaus(); // kann nicht links, kann nicht rechts...viel Glueck!
    
           vollbremsung();
         }
    

    Das sieht ein wenig unbeholfen aus, aber ich hoffe Du erkennst worauf ich hinaus will.

    Wie dem auch sei: schade, dass Ihr keine Simulation für das Auto habt... Dass Du Dich am Samstag mit Deinem Projekt beschäftigst aber nicht testen kannst, ist doof.
    (Das wäre mal ein schönes Opensource-Projekt für's Forum!) 🙂



  • Naja, hinter "abstandlinks" usw. stecken ja auch schon Funktionen.

    Die Sensoren und den Motor tauschen wir nicht mehr aus.
    Und wenn wir dies tuen würden, so müssten wir in dem hier gezeigten Programmteil keine Änderungen vornehmen.

    Für die Sensoren müsste dann die Linearisierungfunktion der Sensormesswerte und für den Motor der Fahrtenregler anders programmiert werden.

    Ich sehe in deinem Code durchaus den Unterschied. Allerdings würde in rechtsfrei() nichts anderes stehen als:

    if (abstandrechts > 13) //Wenn rechts Platz ist
                {
                    servo(-10);
                    fahr(-25);
    
                }
    

    Dadurch würde dann nur die Fehlersuche erschwert werden, da man ständig hin und her schauen muss. 😉
    Wenn natürlich alles funktioniert kann man darüber reden es so zu machen, um den Code zu komprimieren.



  • Gibt's hier eigentlich noch ein Problem?

    Poste mal deinen aktuellen Code und die Probleme.

    Ich kann absolut nicht verstehen, wie man sich mit PCs und sogar sowas wie Mikoprogrammierung auseinandersetzt - und das seit einem Jahr - aber so unglaublich unbeholfen im Umgang mit dem PC sein kann.

    Weißte, die Aussage, dass du dich nicht traust eine text-Datei zu ändern, weil es danach vielleicht nicht mehr klappt, ist echt schon enorm komisch.

    Aber nun ja, ignoriere das ... die wichtigere Frage ist ja, um was es hier eig. noch geht?


  • Mod

    NaHörMal schrieb:

    Ich kann absolut nicht verstehen, wie man sich mit PCs und sogar sowas wie Mikoprogrammierung auseinandersetzt - und das seit einem Jahr - aber so unglaublich unbeholfen im Umgang mit dem PC sein kann.

    Weißte, die Aussage, dass du dich nicht traust eine text-Datei zu ändern, weil es danach vielleicht nicht mehr klappt, ist echt schon enorm komisch.

    ^ Das.


Anmelden zum Antworten