Neues Projekt, diesmal von meiner Freundin

Mindstorms im Unterricht. Ideen, Vorstellungen

Moderator: Moderatoren

Benutzeravatar
the orange
Schreibt ab und zu
Schreibt ab und zu
Beiträge: 41
Registriert: 10. Sep 2008 11:42
Wohnort: Berlin

Neues Projekt, diesmal von meiner Freundin

Beitragvon the orange » 16. Dez 2008 19:20

Hallo Mindstormer! :D
Nachdem mein Projekt der Spurführung mit dem NXT leider gestorben wurde melde ich mal mit dem nächsten Projekt hier.
Falls ich im falschen Forenteil bin, bitte verschieben. ;) Hier gepostet hab ich, weil meine Freundin das Projekt an der TU Be**in hat.
Kurze Erläuterung zum Vorhaben:
die sollen nen Roboter bauen, der ne vorgegebene Spur (gelbes Band mit schwarzer Linie) befahren soll. Auf der Spur gibt es drei Kreuzungen (richtige Kreuzung mit rechts und links einer Sackgasse) , die grün gekennzeichnet sind. Die grüne Kennzeichnung führt in eine Richtung in der am Ende der Sackgasse ein Becher steht der aufgenommen werden soll. Nach Aufnahme des Bechers soll der Robot umdrehen und zur nächsten Kreuzung fahren. Nach Aufnahme von drei Bechern ist ein kurzer Slalom angesagt, bestehend aus drei Säulen. Die Säulen sind farblich gekennzeichnet (gelb und blau), ne gelbe Säule soll rechts herum umfahren werden, ne blaue links herum. Danach kommt ne Wippe und dann das Ziel. Alternativ zur Aufnahme aller drei Becher kann auch jeder Becher einzeln aufgenommen werden und zum Ziel gebracht werden.

Benutzt werden dürfen: 3 Motoren, jeweils 1 Licht-, Tast- und Ultraschallsensor
der Robot darf während der Fahrt nicht fernbedient oder berührt werden.

Gebaut haben wir jetzt eine Fahrmaschine die 3 Becher mitschleifen kann, Lichtsensor ist dran um die Linie zu erkennen und evtl. die Säulen farblich auseinanderhalten kann. Der Ultraschallsensor detektiert die Becher und Säulen.
Bild

Problem: ich hab nicht wirklich den Plan wie ich das alles programmieren soll. Wenns klappt kann meine Freundin die Strecke, auf der gefahren wird, vermessen. Da könnte man dann um die Umdrehungszähler vllt. was organisieren? Oder steh ich so auf dem Schlauch und plane am Ziel vorbei?
Linienverfolgung funktioniert soweit recht gut, das Problem sind eher die Kreuzungen und der Slalom, also das woraufs ankommt.
Wenn jemand ne Idee hat, immer raus damit! :ich:
Woher soll ich wissen was ich denke bevor ich höre was ich sage?!

Benutzeravatar
admin
Administrator
Administrator
Beiträge: 1408
Registriert: 14. Okt 2003 09:59
Wohnort: Salzbergen
Kontaktdaten:

Beitragvon admin » 16. Dez 2008 20:36

erste Frage:

In welcher Sprache programmierst du?

NXT-G oder NXC, RobotC....
8 Bit = 1 Byte | 20 Bit = 1 Kiste
meine Homepage
RobotC.de
EV3 & NXT Wissen

Benutzeravatar
the orange
Schreibt ab und zu
Schreibt ab und zu
Beiträge: 41
Registriert: 10. Sep 2008 11:42
Wohnort: Berlin

Beitragvon the orange » 16. Dez 2008 21:27

Ähm, ich hab von meinen vorherigen Versuchen das Bricx CommandCenter und find das erstmal nicht so verkehrt.
Was ich bis jetzt hab sind ein paar Schleifen für die Becheraufnahme und die Spurführung.
Wobei ich bei der Spurführung nicht weiß ob ich die überhaupt brauche. Die Strecke ist bis auf ein rechtwinklige Ecken zum Abbiegen kerzengerade. Wenn die vermessen ist könnte man vllt. glatt über die Anzahl der Radumdrehungen fahren. Ich weiß ja nicht wie gut die Motoren sind.

Code: Alles auswählen

 if (SensorUS(IN_2) <= abstand) {
    if (i==0){
   Off(OUT_AB);
   RotateMotor(OUT_C, GESCHW, 45);
   Wait(1500);
   RotateMotor(OUT_AB, 30,-500);
   Wait(1000);
   RotateMotor(OUT_C, GESCHW, -45);
   Wait(500);
   i=i+1;
   RotateMotor(OUT_A, GESCHW, -540);
   RotateMotor(OUT_A, GESCHW, 540);
   RotateMotor(OUT_AB, GESCHW, 720);
   }
   if (i==1){
   Off(OUT_AB);
   RotateMotor(OUT_C, GESCHW, 45);
   Wait(1500);
   RotateMotor(OUT_AB, 30,-360);
   Wait(1000);
   RotateMotor(OUT_C, GESCHW, -45);
   Wait(500);
   i=i+1;
   RotateMotor(OUT_A, GESCHW, -540);
   RotateMotor(OUT_A, GESCHW, 540);
   RotateMotor(OUT_AB, GESCHW, 720);
   }
   if (i==2){
   Off(OUT_AB);
   RotateMotor(OUT_C, GESCHW, 45);
   Wait(1500);
   RotateMotor(OUT_AB, 30,-270);
   Wait(1000);
   RotateMotor(OUT_C, GESCHW, -45);
   Wait(500);
   i=i+1;
   RotateMotor(OUT_A, GESCHW, -540);
   RotateMotor(OUT_A, GESCHW, 540);
   RotateMotor(OUT_AB, GESCHW, 720);
   }
    if (i==3){
    RotateMotor(OUT_AB, 25,-360);
    light = Sensor (IN_1);
                if (light>=26){
                RotateMotor(OUT_A, GESCHW,-180);
                RotateMotor (OUT_B, GESCHW, 180);
                }
   }
   }

Das ist ein kurzer Auszug aus dem Programm, leider aus naiver Faulheit ohne große Kommentare. Die Begrenzung der Schleifen durch i ist halt durch die Becherzahl, damit man im Anschluss die Säulen detektieren kann.
Falls jemandem was Besseres einfällt, ich bin echt für jeden Mist zu haben! :lol: Danke zumindest schonmal für den Hinweis wegen der Programmiersprache. Das NXT-G ist für mich ein Buch mit sieben Siegeln.

Edit: Motor C bewegt die Schere zum Bechersammeln. Die vierte Schleife ist dann zum Slalomfahren, aber dafür brauch ich noch etwas Zeit und Geduld.
Woher soll ich wissen was ich denke bevor ich höre was ich sage?!

Volnatabu
Schreibt viel
Schreibt viel
Beiträge: 141
Registriert: 30. Nov 2008 00:45
Kontaktdaten:

Beitragvon Volnatabu » 17. Dez 2008 13:45

Ich persönlich finde es besser, wenn man nicht über Radumdrehungen geht. Ist mir zu unsicher. Stell dir vor, die Strecke geht kaputt und wird geflikt, dadurch wird sie nen halben Zentimeter kürzer? Was machst du nun? Jedesma dein Programm umschreiben, wenn die Strecken anders sind? Ich finde das zu umständlich. Für mich muss ein Roboter die Strecke schaffen, auch wenn sie unterschiedlich lang/kurz ist.

Vorschlag zum umrunden der Kindernisse:
Drehe dich in eine Richtung und fahre los. Sobald der Wert des Sonars größer wird drehst du dich weiter in die Richtung, bis der Wert wieder unter einer Schwelle liegt. Das ganze machst du solange, bis der Lichtsensor wieder schwarz findet....
Wäre nur eine Idee von mir und da ich selber noch Anfänger bin, kann ich auch nicht versprechen, dass es klappt, doch wenn es geht, glaube ich das an damit Hindernisse jeder Größe umrunden kann.


PS: Ich wieß nicht, ob es an dem Forum liegt, aber ich habe Probleme den Quellcode zu lesen, weil mit ehr die Einrückungen fehlen...
Mit freundlichen Grüßen
Volnatabu

Benutzeravatar
robofreak
Schreibt super viel
Schreibt super viel
Beiträge: 338
Registriert: 15. Okt 2008 16:22
Wohnort: Österreich/Graz
Kontaktdaten:

Beitragvon robofreak » 17. Dez 2008 14:54

Volnatabu hat geschrieben:PS: Ich wieß nicht, ob es an dem Forum liegt, aber ich habe Probleme den Quellcode zu lesen, weil mit ehr die Einrückungen fehlen...


geht mir genau so..ein paar einrückungen, macros und kommentare würden die lesbarkeit enorm verbessern...

Ich würde auch nicht nach umdrehungen vorgehen da dies wahrscheinlich nicht die erwartete lösung ist und dort nicht so gut ankommmt :D

Vielleicht kannst du ein Bild von der Strecke hier reinstelllen, weil dann könnte ich mir das ganze besser vorstellen :roll:

PS:Der roboter sieht super aus!

Benutzeravatar
the orange
Schreibt ab und zu
Schreibt ab und zu
Beiträge: 41
Registriert: 10. Sep 2008 11:42
Wohnort: Berlin

Beitragvon the orange » 17. Dez 2008 19:41

Danke für das Lob, das Ding verfügt seit heute noch über einen Tastsensor an der Front! :lol:
simple Skizze der Fahrstrecke, mal kurz mit paint entworfen.
Bild

Ok, dann lass ich das mit den Radumdrehungen halt weg, das Problem seh ich dann halt bei den Kreuzungen und Ecken. Die reine Erkennung und Aufnahme der Becher funzt mittlerweile recht gut. Musste aber das Programm von gestern nochmal überarbeiten. Aber das war ja zu erwarten.

Code: Alles auswählen

if (SensorUS(IN_2) <= abstand) {      //wenn Abstand klein
       if (i==0){                                          //1.Schleife Becher aufnehmen
       Off(OUT_AB);                                     //anhalten
       RotateMotor(OUT_C, GESCHW, angle);     //Schere öffnen
       Wait(1500);
       RotateMotor(OUT_AB, 30,500);           //vorfahren
       Wait(1000);
       RotateMotor(OUT_C, -GESCHW, angle);    //Schere schliessen
       Wait(500);
       i=i+1;                                   //i um 1 erhöhen
       RotateMotor(OUT_A, GESCHW, 550);         //halbe Drehung
       RotateMotor(OUT_B, GESCHW, -550);        //halbe Drehung
       RotateMotor(OUT_AB, GESCHW, 720);        //weiterfahren
       }
   }
   if (SensorUS(IN_2) <= abstand) {            //wenn Abstand klein
      if (i==1){                                           //2. Schleife Becher aufnehmen
      Off(OUT_AB);                                      //anhalten
      RotateMotor(OUT_C, GESCHW, angle);       //Schere öffnen
      Wait(1500);
      RotateMotor(OUT_AB, 30,360);             //vorfahren
      Wait(1000);
      RotateMotor(OUT_C, -GESCHW, angle);      //Schere schliessen
      Wait(500);
      i=i+1;                                   //i um 1 erhöhen
      RotateMotor(OUT_A, GESCHW, 550);         //halbe Drehung
      RotateMotor(OUT_B, GESCHW, -550);        //halbe Drehung
      RotateMotor(OUT_AB, GESCHW, 720);        //weiterfahren
      }
   }
   if (SensorUS(IN_2) <= abstand) {             //wenn Abstand klein
      if (i==2){                                //3. Schleife Becher aufnehmen
      Off(OUT_AB);                              //anhalten
      RotateMotor(OUT_C, GESCHW, angle);        //Schere öffnen
      Wait(1500);
      RotateMotor(OUT_AB, 30,270);              //vorfahren
      Wait(1000);
      RotateMotor(OUT_C, -GESCHW, angle);       //Schere schliessen
      Wait(500);
      i=i+1;
      RotateMotor(OUT_A, GESCHW, 550);          //halbe Drehung
      RotateMotor(OUT_A, GESCHW, -550);         //halbe Drehung
      RotateMotor(OUT_AB, GESCHW, 720);         //weiterfahren
      }
   }
   if (SensorUS(IN_2) <= abstand) {              //wenn Abstand klein
    if (i==3){                                   //4.Schleife
    OnFwdReg(OUT_AB, 25,1);                      //weiterfahren
    if (Sensor (IN_3)==1){                       //wenn Tastsensor ausgelöst
    Off(OUT_AB);                                 //anhalten
    light = Sensor (IN_1);
                if (light>=26){                   //wenn Lichtsensor Wert anzeigt
                RotateMotor(OUT_AB, -GESCHW, 360); //zurückfahren
                RotateMotor(OUT_A, GESCHW,180);    //links am Hinderniss vorbei
                RotateMotor (OUT_B, -GESCHW, 180);
                }
   }
   }
   }
 }

Obs mit der Säulenerkennung ganz unten so hinhaut weiß ich noch nicht, kann den NXT nur am Läppi meiner Freundin anklemmen weil mir der Treiber fehlt. Somit kann ich die neuen Programme nicht immer sofort probieren und anpassen.
Hat jemand von euch ne Idee wie ich die Erkennung der Kreuzungen (sind ja mit grün markiert, der grüne Strich geht nen Stück in die Richtung wo der Becher steht) realisiere? Über Eingrenzung der Helligkeitswerte, also im Bereich von xx bis xx drehe dich, du Sau? :roll:
Woher soll ich wissen was ich denke bevor ich höre was ich sage?!

Volnatabu
Schreibt viel
Schreibt viel
Beiträge: 141
Registriert: 30. Nov 2008 00:45
Kontaktdaten:

Beitragvon Volnatabu » 17. Dez 2008 22:22

Ich würde es so machen:
Man liest grün und dann ein bisschen nach rechts drehen, wenn da der grüne Bereich weitergeht, dann zum Becher und wenn da nicht der grüne Bereich ist, dann in die andere Richtung drehen. Und das halt n-mal, damit man den Kurs auch verändern kann.
Mit freundlichen Grüßen

Volnatabu

Benutzeravatar
the orange
Schreibt ab und zu
Schreibt ab und zu
Beiträge: 41
Registriert: 10. Sep 2008 11:42
Wohnort: Berlin

Beitragvon the orange » 18. Dez 2008 10:32

ja, ich denke dass ich das irgendwie so machen werde.Wobei es schon arg schwer wird das grün von gelb und schwarz auseinanderzuhalten. Der Sensor hängt ja etwas höher damit er auch die Säulen "sehen" kann. :(
Woher soll ich wissen was ich denke bevor ich höre was ich sage?!

Benutzeravatar
the orange
Schreibt ab und zu
Schreibt ab und zu
Beiträge: 41
Registriert: 10. Sep 2008 11:42
Wohnort: Berlin

Beitragvon the orange » 4. Jan 2009 16:27

So, erstmal einmal Allen noch ein gesundes Neues! :lol:
Der erste Fahrversuch auf der Teststrecke ist jämmerlich in die Hosen gegangen, das mit dem seitlichen Tragarm geht nicht weils an der Wippe scheitert. :(
Also mussten wir uns was neues ausdenken, herausgekommen ist das hier:
Bild
Bild
Die Becheraufnahme funktioniert jetzt über ne Art Greifer, der sich an den Becher schiebt und dann nach oben hebt und hinten in nen Fangkorb wirft. Funktioniert sogar einigermaßen gut. Nur muss der Roboter genau gerade vorm Becher stehen.
Der Lichtsensor ist jetzt schwenkbar, gekoppelt an den Greifarm. So kann ich Strecke und Säulen erkennen, je nachdem wie der Greifarm steht.
Woran ich jetzt gerade scheitere/grüble ist zum einen das Befahren der Kreuzung und dann der mistige Slalom um die Säulen. Aber da lässt sich vllt. noch was finden. Irgendwie muss man hier die eierlegende Wollmilchsau programmieren. :cry:
Das Problem was ich jetzt mit den Kreuzungen hab ist, das ich zwar erstmalig eventuell das grün erkenne und abbiegen kann, nur auf dem Rückweg das Ganze nicht mehr funzt. Warum? Der grüne Bereich ist relativ lang. Wenn ich von der Becheraufnahme komme würde er sofort am Anfang von grün ne Kreuzung suchen.
Hat da jemand ne Idee wie man das umgehen kann? Hab da mal kurz über weitere Schleifen nachgedacht. Man müsste mitzählen/speichern ob man rechts oder links abgebogen ist und dann halt irgendwie an der Kreuzung dann halt wieder links um auch in die richtige Richtung weiterzufahren. Aber der richtige Ansatz fehlt noch.
derzeitiges Programm:

Code: Alles auswählen

sub black() {

  rota_A = MotorRotationCount(OUT_A);
  light = Sensor(IN_1);
  OnFwdReg(OUT_AB, GESCHW,1); // fahren
   turntime=TURNTIME; // setzt Drehzeit zurück
    if (light >= schwarz) { // wenn Wert größer als Grenzwert
      endtime = CurrentTick()+turntime; // setzt Endzeit
      state = rem; // wechsle Status auf LEFT
   }
    if (Sensor(IN_1)>>schwarz && Sensor(IN_1) <=gelb) {
    state=kreuzung;
    }
    if (SensorUS(IN_2) <= abstand && i<=2) {      //wenn Abstand klein
       state = becher;
       }
   if (SensorUS(IN_2) <= abstand && i==3) {              //wenn Abstand klein
     state = ausweichen;
   }
 }
sub left() {
  light = Sensor(IN_1);
  OnFwd(OUT_B, GESCHW/2); // nach
   OnFwd(OUT_A, GESCHW); // links
   if (light <= schwarz) { // wenn Wert kleiner als Grenzwert
    rem = LEFT;
      state = BLACK; // wechsle Status auf BLACK
   }
   else if (endtime <= currenttime) { // wenn die Drehzeit vorbei ist
      fturn(); // erhöht Drehzeit
      endtime = CurrentTick()+turntime; // setzt Endzeit
      state = RIGHT; // wechsel auf RIGHT
   }
}

sub right() {
  light = Sensor(IN_1);
  OnFwd(OUT_A, GESCHW/2); // nach
   OnFwd(OUT_B, GESCHW); // rechts
    if (light <= schwarz) { // wenn Wert kleiner als Grenzwert
      rem = RIGHT;
      state = BLACK; // wechsle Status auf BLACK
   }
   else if (endtime <= currenttime) { // wenn die Drehzeit vorbei ist
      fturn(); // erhöht Drehzeit
      endtime = CurrentTick()+turntime; // setzt Endzeit
      state = LEFT; // wechsel auf LEFT
   }
}

sub aufnahme() {
       Off(OUT_AB);                           //anhalten
       if (SensorUS(IN_2) <= abstand){
       RotateMotor(OUT_AB, -20,90);
       }
       else{
       RotateMotor(OUT_C, -20, angle);     //Greifarm senken
       Wait(1000);
       RotateMotor(OUT_AB, GESCHW,270);           //vorfahren
       Wait(1000);
       RotateMotor(OUT_C, 20, angle);    //Greifarm heben
       Wait(500);
       i=i+1;                                   //i um 1 erhöhen
       RotateMotor(OUT_A, GESCHW, 550);         //halbe Drehung
       RotateMotor(OUT_B, GESCHW, -550);        //halbe Drehung
       state=BLACK;
       }
       }
sub slalom() {
  OnFwdReg(OUT_AB, GESCHW,1);                      //weiterfahren
    if (Sensor (IN_3)==1){                       //wenn Tastsensor ausgelöst
    Off(OUT_AB);                                 //anhalten
    RotateMotor(OUT_C, -20, 40);
    light = Sensor (IN_1);
                if (light>=26){                   //wenn Lichtsensor Wert anzeigt
                RotateMotor(OUT_AB, -GESCHW, 360); //zurückfahren
                RotateMotor(OUT_A, GESCHW,180);    //links am Hinderniss vorbei
                RotateMotor (OUT_B, -GESCHW, 180);
                }
   }
}
sub Kreuzung(){
Off(OUT_AB);
RotateMotor(OUT_A, GESCHW,180);
RotateMotor(OUT_B,-GESCHW,180);
 if(Sensor(IN_1) >>schwarz && Sensor(IN_1) <=gelb) {
 RotateMotor(OUT_A,GESCHW, 330);
 RotateMotor(OUT_B,-GESCHW,330);
 OnFwdReg(OUT_AB, GESCHW, 1);
 state=BLACK;
 }
 else {
 RotateMotor(OUT_A, -GESCHW, 180);
 RotateMotor(OUT_B, GESCHW, 180);
 RotateMotor(OUT_A,-GESCHW, 330);
 RotateMotor(OUT_B,GESCHW,330);
 state=BLACK;
 }
}
task main() {  // Starte Programm
   FirstTick();
  SetSensorTouch(IN_3);
  SetSensorLight(IN_1); // Definiert IN_1 als Lichtsensor
  SetSensorLowspeed(IN_2);
  i=0;
  while(true) { // Solange nicht Beendet
      currenttime = CurrentTick(); // Speichert aktuelle Systemzeit in Variable
      light = Sensor(IN_1); // Liest den Sensor aus
      rota_A= MotorRotationCount(OUT_A);
      rota_B= MotorRotationCount(OUT_B);
    ultra=SensorUS(IN_2);
    if (state == BLACK) { // wenn Status=BLACK
         black(); // Rufe Funktion black() auf
      }
       else if (state == LEFT) { // wenn Status=LEFT
         left(); // Rufe Funktion left() auf
      }
      else if (state == RIGHT) { // wenn Status=RIGHT
         right(); // Rufe Funktion right() auf
      }
      else if (state ==becher){
      aufnahme(); //rufe Funktion Aufnahme() auf
      }
      else if (state==ausweichen){
      slalom();
      }
     else if (state==kreuzung){
      Kreuzung();
      }
   ResetScreen();
   }
}

Wie man sieht ist der Slalom noch nicht weiter, dafür muss ich mir dann mal ein paar Säulen basteln um da weiterzuspielen...
Für Anregungen zum Thema bin ich immer offen.
Woher soll ich wissen was ich denke bevor ich höre was ich sage?!

Benutzeravatar
the orange
Schreibt ab und zu
Schreibt ab und zu
Beiträge: 41
Registriert: 10. Sep 2008 11:42
Wohnort: Berlin

Beitragvon the orange » 7. Jan 2009 17:32

Sorry für die ständigen Doppelposts, aber sonst wird die Sache zu unübersichtlich.
Bin grad am werkeln was den Slalom betrifft, Becheraufnahme funzt soweit recht gut. Die Kreuzungen kommen dann dran.
Problem, der hängt sich in ner Schleife auf und ich weiß nicht warum. Entweder steht er vor der Säule und dreht den Greifarm hoch und runter ohne was anderes zu machen oder er fährt ohne Stopp rückwärts obwohl er ja anhalten soll.

Code: Alles auswählen

sub slalom() {
  OnFwdReg(OUT_AB, GESCHW,1);                      //weiterfahren
    if (Sensor (IN_3)==1){                       //wenn Tastsensor ausgelöst
    Off(OUT_AB);                                 //anhalten
    RotateMotor(OUT_C, -20, 40);                 //Greifarm bewegen um
    Wait(500);                                   //Lichtsensor zu drehen
    light = Sensor (IN_1);
                if (light>=26){                   //wenn Lichtsensor Wert anzeigt
                RotateMotor(OUT_C,20,40);         //Greifarm zurück
                while (SensorUS(IN_2)<<35){       //Rückwärts bis Abstand >35
                OnFwdReg(OUT_AB,-GESCHW,1);
                }
                if (SensorUS(IN_2) >= 35) {       //wenn Abstand >35
                OnFwd(OUT_A,GESCHW);
                OnRev(OUT_B,GESCHW);
                Wait(500);
                Off(OUT_AB);
                OnFwdReg(OUT_AB,GESCHW,1);
                Wait(1000);
                Off(OUT_AB);
                OnFwd(OUT_A,GESCHW);
                OnRev(OUT_B,GESCHW);
                Wait(500);
                Off(OUT_AB);
                OnFwdReg(OUT_AB,GESCHW,1);
                Wait(1000);
                Off(OUT_AB);
                state=BLACK;
                }  }


Teilweise dreht er auch vollkommen durch und will vorwärts fahren usw.
Was hab ich falsch gemacht? :oops:
Woher soll ich wissen was ich denke bevor ich höre was ich sage?!

Benutzeravatar
sirs
Schreibt viel
Schreibt viel
Beiträge: 274
Registriert: 17. Mär 2008 16:45
Wohnort: Bayern!

Beitragvon sirs » 8. Jan 2009 17:11

sorg mal für eine einheitliche Lichtstärke in deinem Zimmer!

Code: Alles auswählen

... if (light>=26) ...

Ich bin mir sicher, dass das nicht immer genau zutrifft, zB wenn die Sonne scheint

Wenns dann noch nicht funzt, einfach posten :wink:
Es grüßt euch sirs! hier klicken :)
Das KÄSEPARADOX: Je mehr Käse, desto mehr Löcher. Je mehr Löcher, desto weniger Käse. -> Mehr = Weniger

Benutzeravatar
the orange
Schreibt ab und zu
Schreibt ab und zu
Beiträge: 41
Registriert: 10. Sep 2008 11:42
Wohnort: Berlin

Beitragvon the orange » 8. Jan 2009 19:12

Naja daran sollte es nicht liegen, es gibt ja noch ne zweite if-Anweisung mit Lichtwerten unter 26 ;)
Das Problem trat nach Verschieben des Wait hinter die Lichtsensorübertragung eigentlich nicht mehr auf. Neues Problem, der US spinnt, irgendwie erkennt der nix mehr bzw. klappt das mit den Werten nicht. Im Programm sind die US-Werte mit den cm identisch oder?
Woher soll ich wissen was ich denke bevor ich höre was ich sage?!


Zurück zu „Unterricht & AG“

Wer ist online?

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

Lego Mindstorms EV3, NXT und RCX Forum : Haftungsauschluss