Selbstfahrendes Modellauto - Logikfehler
-
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!)
-
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?
-
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.