Selbstfahrendes Modellauto - Logikfehler
-
Nowaepon schrieb:
In zweien der if-Anweisungen habe ich stat zwei Gleichheitszeichen nur eines geschrieben. Das korrigiere ich gleich.
Fällt euch sonst noch etwas auf?
Mit einem Gelichheitszeichen ist das eine Zuweisung. Die Variable hat dann den Wert, auf den du eigentlicch testen wolltest.
Das deckt sich doch ganz gut mit deiner Fehlerbeschreibung.Schalte den Warnlevel vom Compiler auf Maximum und beachte die Warnungen die dann kommen.
Behandele diese wie Fehler und beseitige deren Ursache.So ein Fehler (nur ein Gleichheitszeichen bei if) erkennt der Compiler, wenn du ihn läßt.
(Am Besten, du erhöhst den Warnlevel noch bevor du den Fehler beseitigst und schaust dir die Meldung mal an.)
-
Leider kann ich den Warnlevel nicht erhöhen, da es sich bei dem Compiler und ein Plugin für ProgrammersNotepad handelt. Dieses wurde uns ebenfalls vorgegeben und wenn ich da Hand anlege zerstöre ich bei meinem Wissensstand darüber wohl mehr, als ich ausbessern würde.
Ich spreche aber den Professor mal darauf an, danke.
-
Nowaepon schrieb:
Leider kann ich den Warnlevel nicht erhöhen, da es sich bei dem Compiler und ein Plugin für ProgrammersNotepad handelt. Dieses wurde uns ebenfalls vorgegeben und wenn ich da Hand anlege zerstöre ich bei meinem Wissensstand darüber wohl mehr, als ich ausbessern würde.
Faule Ausrede.
-
SeppJ schrieb:
Nowaepon schrieb:
Leider kann ich den Warnlevel nicht erhöhen, da es sich bei dem Compiler und ein Plugin für ProgrammersNotepad handelt. Dieses wurde uns ebenfalls vorgegeben und wenn ich da Hand anlege zerstöre ich bei meinem Wissensstand darüber wohl mehr, als ich ausbessern würde.
Faule Ausrede.
Leider nein.
Dieses Projekt ist sehr wichtig.
Das verhaue ich mir nicht, indem ich mir den Compiler zerschiesse.
Da frage ich lieber den Professor.
Wenn du sowas direkt beim ersten Mal kannst, ist das ja wunderbar.
Ich kann es jedenfalls nicht.
-
Ich verstehe nicht. Warnungen hindern niemanden daran etwas zu kompilieren, wenn
-Werrornicht ebenfalls angegeben wird. Im Zweifelsfall können Warnungen auch als TODO-Liste betrachtet werden, wobei ich diese unmittelbar erledigen würde.
-
Es geht mir nicht um das Kompilieren als solches.
Sondern um die Konfiguration des Copilers als solches (für einen höheren Warnlevel).
-
Was zum Teufel soll denn da nicht klappen!? Einfach
-Wall -Wextramit angeben? Da geht genau gar nichts schief.Sorry, aber du bist einfach eine Pussy.
-
Grünschnabel halt. Kannste nichts machen.
-
Und wenn Nowaepon gar nicht auf seinem System arbeitet, sondern auf dem des "Professors"?
-
Arcoth schrieb:
Sorry, aber du bist einfach eine Pussy.
Sowas von einem Moderator...
Traurig, Arcoth!Ich finde, dass seine Aussage legitim ist.
-
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.
-
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.jpgDa 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: wielinksfrei() rechtsfrei()o.ä.. Aberabstandlinks < 60?!servo(-10)? Absolut unverständlich!
-
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
CXXFLAGSgibt. Sie könnte so aussehen (das Beispiel ist nicht vorbildlich):CFLAGS = -g -std=c++11 -funsigned-charDort fügst du einfach (ggf. vorne) die bereits erwähnten Warnflags,
-Wallund-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!)