voyagetom
13.10.2015, 22:56

Frage zu NXT 2.0 Programmierung

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


3 vorhergehende Beiträge sind ausgeblendet

Alle anzeigen Immer alle anzeigen Beitragsbaum

freakwave
15.10.2015, 07:49

Als Antwort auf den Beitrag von voyagetom

+1Re: Frage zu NXT 2.0 Programmierung

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


gefällt das


Tagl
15.10.2015, 20:00

Als Antwort auf den Beitrag von freakwave

Editiert von
Tagl
15.10.2015, 20:06

+1Re: Frage zu NXT 2.0 Programmierung

Hallo zusammen,

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.


Dem würde ich zustimmen.

Was aber gehen sollte, ist die beiden Programme parallel laufen zu lassen.
Dafür gibt es glaube ich auch entsprechende Blöcke, oder man kann einen "Abzweig" in eine Verbindung zweier Blöcke machen. Hab da schon lang nix mehr gemacht.
Hier ist ein Link, die Seite kann auch auf Englisch umgestellt werden.
Speichen über das Ausschalten hinaus geht aber soweit ich weiß nicht.

Gruß
Marco


Steinregal Flickr

[image]


maydayartist gefällt das


Lok24
16.10.2015, 08:00

Als Antwort auf den Beitrag von Tagl

Re: Frage zu NXT 2.0 Programmierung

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



voyagetom
16.10.2015, 22:02

Als Antwort auf den Beitrag von Lok24

Re: Frage zu NXT 2.0 Programmierung

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


freakwave
16.10.2015, 23:05

Als Antwort auf den Beitrag von voyagetom

+1Re: Frage zu NXT 2.0 Programmierung

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.


Bei meinem Sharp PC 1403H Basic Programmierbarer Taschenrechner ist es nämlich so.


Einen 1403!!!

Ich hab es nur bis zum 1401 geschafft! Mann das waren Dinger, das Ding in Assembler mittels POKE programmieren... Das waren Zeiten in denen man ein Byte noch schätzen konnte :-) Muss ich meinen wieder mal suchen...

Das ultimative Rechengerät war ja der 1350


My Flickr
Blog zum Trainposter V2
LDraw Teile Update 2019-01


maydayartist gefällt das


Lok24
17.10.2015, 08:49

Als Antwort auf den Beitrag von voyagetom

+1Re: Frage zu NXT 2.0 Programmierung

Hallo Tom,

Es muss ja auch einen Grund haben, warum die Programmierer üblicherweise erst ihre Variablen "initialisieren"...?


Ja, schindet Eindruck

Es gibt genügend Programmiersprachen wo man Variablen nicht deklarieren muss.
Früher war das wichtig(er) für das Reservieren von Speicherplatz, aber das interessiert ja keinen mehr.
Außerdem bei der objektorientierten Programmierung, wo die Variable "A" ja keine Zahl, sondern ein Netzwerkanschluss oder ein Word-Dokument sein könnte, da wäre es schon gut zu wissen welche Eigenschaften und Methoden sie hat, die erbt sie über die Deklaration.

Probiers mal mit den Text-Files, geht auch beim NXT.

Grüße

Werner



maydayartist gefällt das


voyagetom
20.10.2015, 01:12

Als Antwort auf den Beitrag von freakwave

Re: Frage zu NXT 2.0 Programmierung

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

Re: Frage zu NXT 2.0 Programmierung

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



freakwave
20.10.2015, 10:05

Als Antwort auf den Beitrag von Lok24

Re: Frage zu NXT 2.0 Programmierung

Tom benutzt das NXT-G, das grafische Interface out-of-the Box sozusagen.

Das mit der Dauer am Motor ist so eine Sache. Ich habe gelesen, kann leider nicht mehr sagen wo, dass der Verbinder auf dei Uhr (logischerweise Zeit) in Wirklichkeit ein Winkel ist. Das fiel mir auf als ich einen Motor eine zufällige Dauer laufen lassen wollte, Zahl zwischen 5 und 20, also gedachten 5 und 20 Sekunden, Motor machte aber nur einen schüternen Muckser, nicht mehr.

Ich muss in den nächsten Tagen mein MOC auch zum Leben erwecken und ein wenig programmieren bzw. Linien ziehen, dann kann ich mehr sagen.

Gerald


My Flickr
Blog zum Trainposter V2
LDraw Teile Update 2019-01


Lok24
20.10.2015, 10:13

Als Antwort auf den Beitrag von freakwave

Re: Frage zu NXT 2.0 Programmierung

Hallo Gerald,

I see!

Sieht meinem LabView für EV3 ähnlich aber anders.
Er könnte aber hier mal einen Screenshot seines Programms einstellen?
Wird sich doch zum Laufen bringen lassen....

Grüße

Werner



5 nachfolgende Beiträge sind ausgeblendet

Alle anzeigen Immer alle anzeigen

Gesamter Thread: