NXT sharp - Motorproblem

Mindstorms und Delphi, Basic...
Läuft etwas nicht? für den NXT

Moderator: Moderatoren

nears
Schreibt ab und zu
Schreibt ab und zu
Beiträge: 35
Registriert: 3. Nov 2007 15:38

NXT sharp - Motorproblem

Beitragvon nears » 4. Nov 2007 19:53

Hallo,

ich habe mich mal mit NXT# beschäftigt, allerdings damit ein kleines Problem. Ich kann mich wunderbar über bluetooth verbinden. Allerdings verursacht folgendes Programm bei mir Probleme:

Code: Alles auswählen

using System;
using System.Collections.Generic;
using System.Text;
using NKH.MindSqualls;

namespace LegoNxtConsoleSample
{
    class Program
    {
        static void Main(string[] args)
        {
            // Create a NXT brick on COM40.
            NxtBrick brick = new NxtBrick(9);

            // Attach motors to port B and C on the NXT.
            brick.MotorA = new NxtMotor();
           
            // Connect to the NXT.
            brick.Connect();

            brick.MotorA.Run(75, 30);

            // Disconnect from the NXT.
            brick.Disconnect();
        }
    }
}


Das Programm sollte den Motor A ansteuern und um 30 Grad drehen. Führe ich das Programm allerdings öfters hintereinander aus, so reagiert der Motor nur beim ersten mal, und dann nicht wieder. Erst wenn ich das Vorzeichen für die Geschwindigkeit ändere passiert wieder was.
Das obige Beispiel wurde mit http://www.mindsqualls.net/ realisiert.
Ich habe selbiges auch mit http://nxtsharp.fokke.net versucht. Allerdings beide male mit dem selben Ergebnis.

Habt ihr Ideen woran das liegen kann? Wäre für jede Hilfe dankbar.
bis dann
nears

Benutzeravatar
Felixfkccc
Moderator
Moderator
Beiträge: 889
Registriert: 29. Jul 2007 19:27
Wohnort: Niederösterreich (Österreich)
Kontaktdaten:

Beitragvon Felixfkccc » 4. Nov 2007 21:07

Du hast doch die While Schleife vergessen!

Ich glaube das gehört so

Code: Alles auswählen

using System;
using System.Collections.Generic;
using System.Text;
using NKH.MindSqualls;

namespace LegoNxtConsoleSample
{
    class Program
    {
        static void Main(string[] args)
        {
          while(true) {           
            // Create a NXT brick on COM40.
            NxtBrick brick = new NxtBrick(9);

            // Attach motors to port B and C on the NXT.
            brick.MotorA = new NxtMotor();
           
            // Connect to the NXT.
            brick.Connect();

            brick.MotorA.Run(75, 30);

            // Disconnect from the NXT.
            brick.Disconnect();
        }
      }
    }
}

nears
Schreibt ab und zu
Schreibt ab und zu
Beiträge: 35
Registriert: 3. Nov 2007 15:38

und wie löst das mein problem?

Beitragvon nears » 4. Nov 2007 23:08

Hallo,

Danke für deine Antwort.
Ich bin neu auf dem Gebiet NXT. Wie soll eine Endlosschleife mein Problem lösen? Okay der Roboter macht immer wieder das gleiche. Aber ich möchte die Drehung ja nur einmal ausführen und dann später wieder andere Dinge machen. Ich frage mich deshalb, wieso der Roboter nur das erste mal reagiert beim zweiten mal aber einfach stehenbleibt...

nears

Benutzeravatar
Felixfkccc
Moderator
Moderator
Beiträge: 889
Registriert: 29. Jul 2007 19:27
Wohnort: Niederösterreich (Österreich)
Kontaktdaten:

Beitragvon Felixfkccc » 5. Nov 2007 15:25

Code: Alles auswählen

using System;
using System.Collections.Generic;
using System.Text;
using NKH.MindSqualls;

namespace LegoNxtConsoleSample
{
    class Program
    {
        static void Main(string[] args)
        {
          while(true) {           
            NxtBrick brick = new NxtBrick(9);

            brick.MotorA = new NxtMotor();
           
            brick.Connect();

            brick.MotorA.Run(75, 30);
           //Hier kommen die Befehle nach den Motor run hin



            brick.Disconnect();
           //Wenn du sie hier reingibst, dann bist du ja schon mit den NXT "disconnectet
        }
      }
    }
}



Da du neu bist im Bereich NXT: Hast du überhaupt 2 NXT?
Denn wenn du einfach nur 1 Motor ansteuern willst dann geht das so:

Code: Alles auswählen

task main() {
         OnFwd(OUT_A, 75); // Dreht Motor A mit 75
         //Wenn du danach noch etwas schreiben willst, muss es hier rein
}



Viel Spaß noch
:wink: Felixfkccc

nears
Schreibt ab und zu
Schreibt ab und zu
Beiträge: 35
Registriert: 3. Nov 2007 15:38

Beitragvon nears » 5. Nov 2007 16:15

Hallo,

danke für deine Antwort. Ich glaub aber du hast mich falsch verstanden, oder ich hab mich schlecht ausgedrückt.

Ich hab ein Fahrzeug das mit 2 Motoren angetrieben wird. Ein dritter Motor ist für das drehen des Sonars zuständig. Dieses möchte ich drehen, wenn das Fahrzeug rückwärts fährt.

Das ganze wollte ich in C# erledigen. Die OnFwd() Funktion ist ja nicht von C# oder täusch ich mich da. Ich hab leider bisher noch nicht so einen Überblick über alle Möglichkeiten die NXT bietet.

Mein Programm verstehe ich insofern nicht, da ich ja im Prinzip zweimal das gleiche an den Roboter schicke, aber es nur das erste mal funktioniert.

Benutzeravatar
Felixfkccc
Moderator
Moderator
Beiträge: 889
Registriert: 29. Jul 2007 19:27
Wohnort: Niederösterreich (Österreich)
Kontaktdaten:

Beitragvon Felixfkccc » 5. Nov 2007 19:20

OOPS :oops: Sorry :oops: :oops:


Welchen Compiler verwendest du denn?
Probiere es nämlich gerade aus :!:

nears
Schreibt ab und zu
Schreibt ab und zu
Beiträge: 35
Registriert: 3. Nov 2007 15:38

Beitragvon nears » 5. Nov 2007 20:10

Ich programmiere mit Microsoft Visual Studio 2005. Bin mir aber net sicher welcher compiler sich dahinter versteckt, bzw. hab auf die Schnelle nichts gefunden, wo ich den einstellen/auswählen könnte. :/

Benutzeravatar
Felixfkccc
Moderator
Moderator
Beiträge: 889
Registriert: 29. Jul 2007 19:27
Wohnort: Niederösterreich (Österreich)
Kontaktdaten:

Beitragvon Felixfkccc » 6. Nov 2007 19:14

Ich programmiere auch mit Visual Studio :verrückt:

Ich habe einen PC (also kein Bluetooth dabei) und habe einen Ednet Bluetoothstecker, doch der ist anscheinend nicht Vistafähig :wut:
Er stürzt jedes mal ab :cry:
Ich kaufe mir in Kürze ein neues!

Ich finde es nämlich toll, dass ich meine C#-Programme mit meinem NXT kombinieren kann!

Felixfkccc

Benutzeravatar
Felixfkccc
Moderator
Moderator
Beiträge: 889
Registriert: 29. Jul 2007 19:27
Wohnort: Niederösterreich (Österreich)
Kontaktdaten:

Beitragvon Felixfkccc » 16. Nov 2007 19:28

Hallo

Funktioniert es bei dir?
Bei mir sagt er die ganze Zeit, dass er keinen neuen Serialport eröffnen kann! :wut:

Code: Alles auswählen

Der Anschluss COM40 ist nicht vorhanden.

Das ist der Error, wenn ich das Programm ausführe! grrrrrr.

Bitte helft mir! Die Verbindung funktioniert ja (Brixc Command Center)


Zurück zu „sonstige Software und Software-Probleme“

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 8 Gäste

Lego Mindstorms EV3, NXT und RCX Forum : Haftungsauschluss