Hallo liebe Lego Freaks,
Da ich immer nur sporadisch kleine Programme am NXT 2.0 erstellt habe, habe ich nun ein paar detailliertere Fragen an die "echten" Programmierer:
Beim Warte Block muss ich eine Zeit angeben. Bisher habe ich immer einen festen Wert angegeben. Ein aktuelles Projekt erfordert aber nun, dass ich die Zeit als Variable eingeben sollte während dem laufenden Betrieb. Am liebsten die Variable abfragen gleich zu Beginn nach dem Programmstart und dann in den Zeitblock übernehmen. Geht sowas und wenn ja, dann wie ? Die NXT Tastatur hat ja nun auch keine Zahlen zur Verfügung, aber mit den Pfeiltasten könnte man ja wie bei einem Radiowecker die Zeit mit +/- korrigieren bzw. einstellen, z.B. ausgehend von einem fest vorgegebenen Wert 50sec. mit < > das "Feintuning" vornehmen. Dabei keine fremden Hilfsmittel, wie Laptop, Smartfone o.ä., nur die NXT Tasten.
Das selbe müsste ich dann noch haben für die Blöcke der Motorsteuerung. Auch dort will ich Laufzeiten in 0.1 sec. Schritten für die Laufzeit Dauer einstellen.
Für Anregungen, Tips, Anleitungen etc. bin ich Dankbar.
Viele Grüsse,
Tom
Video Channel: http://www.youtube.com/us...oyagetom?feature=watch
brickshelf: http://www.brickshelf.com...ery.cgi?m=voyagetom-01
Flickr: https://www.flickr.com/ph...with/72157711557227973
Hallo Gerald,
vielen Dank.
Ich hatte selbst gegoogelt, aber das war die Suche nach der Nadel im Heuhaufen.
Ich werde mich mal mit den links hier auseinandersetzen
Viele Grüsse,
Tom
Video Channel: http://www.youtube.com/us...oyagetom?feature=watch
brickshelf: http://www.brickshelf.com...ery.cgi?m=voyagetom-01
Flickr: https://www.flickr.com/ph...with/72157711557227973
OK, darauf kann ich aufbauen.
Super links
Noch ne Frage.
Wenn ich 2 Programme habe, kann ich dann die Variablen in beiden Programmen nutzen ?
Programm 1 : Rufe ich bei Bedarf auf und definiere mit den Tasten meine Einschaltdauern etc. Die Variablen bleiben dann gespeichert.
Programm 2 : Damit Steuere ich meine Motoren etc. Das Programm nutzt die in 1 definierten Variablen bis ich 1 erneut aufrufe zum umdefinieren.
Klappt das ?
Klappt es auch, wenn der NXT zwischendurch ausgeschaltet wird ?
Viele Grüsse,
Tom
Video Channel: http://www.youtube.com/us...oyagetom?feature=watch
brickshelf: http://www.brickshelf.com...ery.cgi?m=voyagetom-01
Flickr: https://www.flickr.com/ph...with/72157711557227973
Aus der Hüfte heraus würde ich sagen dass das nicht klappt.
Meine Begründung wäre dass die Variablen am Anfang des Programms initialisiert werden müssen, damit also einen Wert bekommen der in dem entsprechenden Block definiert ist. Speichern um in einem anderen Programm darauf zuzugreifen, geht, glaube ich. nicht.
My Flickr
Blog zum Trainposter V2
LDraw Teile Update 2019-01
Hallo zusammen,
maydayartist gefällt das
Hallo Marco,
Ich kann die Frage nicht beantworten, da ich NXT 2.0 nicht kenne.
Für EV3 / Labview kann ich sie beantworten: JA.
Man kann hier nämlich Werte in Text-Files schreiben, die auf der Karte gespeichert werden.
(Oder sogar intern? keine Ahnung).
Damit kann man Programme untereinander kommunizieren lassen wie auch Werte beim Ausschalten retten
Grüße
Werner
Ich schätze, ich muss es einfach mal probieren.
Ich dachte nur, vielleicht weiss das jemand gerade und hat es schon benutzt.
Bei meinem Sharp PC 1403H Basic Programmierbarer Taschenrechner ist es nämlich so.
Da kann ich mittels Basic Programmen Variablen (von Matrizen) vollschreiben und dann in den Taschenrechner Modus bzw. Matrizenrechnung Modus gehen und dort mit den Werten weiterrechnen. Das ging mit Stab und Balkenelementen für die "von Hand" FEM Berechnung von Fachwerkstrukturen. Das gab bei der FEM Prüfung (als Vertiefungsfach) während dem Studium Note 1.2 .
Auch nach dem Ausschalten bleiben beim PC 1403H die Inhalte der Variablen erhalten.
Es muss ja auch einen Grund haben, warum die Programmierer üblicherweise erst ihre Variablen "initialisieren"...?
Auch von Speicherbausteinen aus dem Elektrotechnik Labor während meiner FH-Zeit kenne ich das. Nur hat man da keine Variablen überschrieben sondern Speicheradressen mit Daten gefüttert.
Ich werde zu gegebener Zeit Berichten...
Viele Grüsse,
Tom
Video Channel: http://www.youtube.com/us...oyagetom?feature=watch
brickshelf: http://www.brickshelf.com...ery.cgi?m=voyagetom-01
Flickr: https://www.flickr.com/ph...with/72157711557227973
Bei der Suche nach möglichen Lösungen las ich auch etwas von einem Bereich in dem die Variablen definiert sind. "Dort" sollten die erhalten bleiben aber das war im Zusammenhang mit NQC Programmierung. Mit einem einfachen NXT-G Programm ging es nicht.
My Flickr
Blog zum Trainposter V2
LDraw Teile Update 2019-01
maydayartist gefällt das
Hallo Tom,
maydayartist gefällt das
Hi,
also in der Anleitung/Hilfe zum Variablenblock steht folgendes:
"Informationsaustausch zwischen einem Programm und einem Eigenen Block"
Wenn du Daten zwischen deinem Hauptprogramm und einem Eigenen Block (bzw. zwischen zwei .rbt-Dateien) austauschen willst, kannst du dies mit zwei Schritten erreichen:
Definiere dieselbe Variable (gleicher Name, gleicher Datentyp) im Hauptprogramm sowie im Eigenen Block.
Benutze diese Variable in den Variablen-Blöcken des Hauptprogramms sowie im Eigenen Block.
Der Schreib- und Lesezugriff auf diese Variable erfolgt nun von allen Stellen auf denselben Speicherort im NXT.
--------------------------------------------------
Ich krieg's aber irgendwie nicht hin...
Ich könnte auch noch damit leben, jedes mal beim Start die Daten neu einzugeben - ist halt weniger komfortabel.
Der link für die Variablen Definition mit +/- war sehr Hilfreich, das klappt.
Allerdings bleibt beim Wechsel von 10 auf 9 die Null stehen im Display, ähnliches gilt bei Vorzeichenwechsel in den neg. Bereich.
Ich denke aber, ein Display Reset an der richtigen Stelle nochmal eingesetzt schafft Abhilfe.
Jetzt habe ich aber ein anderes Problem:
Die Zahlen-Variablen "Zeit" und "Leistung" mit "Auslesen" vor den Motor Block gesetzt...
Datenleitungen gezogen zu den entsprechenden Stellen am Motor Block, Eingangsseite.
Datenleitungen sind gelb, also meines Erachtens ok. Geltungsbereiche für Zeit und Leistung sind eingehalten.
Die entsprechenden Felder im Motor Block werden aber nicht ausgegraut (immer noch editierbar) und beim Testlauf macht der Motor keinen Muks...
Die Edit Werte im Motor Block scheint er also auch nicht zu nehmen.
Auch beim Warte Block (Zeit in sec.) setze ich eine Zahlen Variable (auslesen) davor und verbinde sie mit dem Wecker. Das geht und die Leitung wird gelb, obwohl der Wecker keinen Dateneingang hat. Der Wecker nimmt die Zahl aber auch nicht an und graut auch das Editier Feld nicht aus...
Grüsse,
Tom
Video Channel: http://www.youtube.com/us...oyagetom?feature=watch
brickshelf: http://www.brickshelf.com...ery.cgi?m=voyagetom-01
Flickr: https://www.flickr.com/ph...with/72157711557227973
Lok24
20.10.2015, 09:22
Als Antwort auf den Beitrag von voyagetom
Editiert von
Lok24
20.10.2015, 09:22
Hallo Tom,
wer soll Dir da helfen?
Wie man die Daten über das Programmende rettet hatte ich Dir schon geschrieben, leider keine Antwort, ob das geklappt hat.
Um "Programmfehler" zu suchen braucht man das Programm, eine Beschreibung wie Deine hilft mir leider nicht.
Und eine Definition, was der "Fehler" ist. Ich kenne sehr viel Programme, die zwar fehlerfrei sind, aber nicht machen, was der Programmierer erwartet
Ich habe leider nicht einmal eine Information, welche "Programmiersprache" Du benutzt.
Stelle das Programm mal zum Download ein, vielleicht kann ich es nachvollziehen.
Grüße
Werner