[infostudents] [infostudents]re: HWP Blatt07

  • From: Alexander Nutz <alex_nutz@xxxxxx>
  • To: infostudents@xxxxxxxxxxxxx
  • Date: Fri, 06 Jul 2007 11:23:23 +0200

Hi,
ihr könnt unsere Lösung ja mal bei euch testen - wahrscheinlich nicht die die eleganteste Lösung, aber er macht bei uns ungefähr, was er soll (unser Eindruck ist, dass der Kompass extrem leicht zu irritieren ist).
Also fahren tut er auf jeden Fall, und sich drehen auch.
ich hoffe es hilft
alex

Stier Denis schrieb:
Hi,
ich wollte nur mal eben Anfragen ob bereits jemand ne funktionierende Lösung hat, bzw. oder ob ihr auch in solche Probleme gerannt seit wie wir? Also in unserem Fall besonders das der Javelin sich jedesmal aufhängt wenn man geradeausfahren und danach rotieren will.Beides einzeln funktioniert. Falls jemand was weiß oder was funktionierendes hat wär es toll wenn er es hier reinstellen könnte so das wir wenigstens einen Hardwaredefekt ausschließen können.
Danke.
-Denis , Jonas

import stamp.core.*;
import Compass;
import LCDTerminal;
import Rotate;

public class blatt7aufgabe1 {

  static LCDTerminal LCDDisplay = new LCDTerminal();
  static int VergleichsW;
  static int AktuellerW;
  static Compass KMP = new Compass();
  static int x = 0;
  static int leftSpeed = 175;
  static int rightSpeed = 175;

  /*static PWM ServoMotorL = new PWM(CPU.pin13,175,2304) ;
  static PWM ServoMotorR = new PWM(CPU.pin12,175,2304);

  static void ServoControl(int Offset, boolean leftDir, boolean rightDir){

          if (leftDir) {leftSpeed -= Offset;} else {leftSpeed += Offset;}
          if (rightDir) {rightSpeed += Offset;} else {rightSpeed -= Offset;}
          ServoMotorL.update(leftSpeed,2304) ;
          ServoMotorR.update(rightSpeed,2304)  ;
          } */

  public static void main () {
    while (true) {

      int n1=268,n2=272;
      LCDDisplay.clearScr();LCDDisplay.write("Norden");
      Rotate.rotate(n1,n2);CPU.delay(15000);//drehe nach Norden

      KMP.runCompass();VergleichsW = KMP.getAngle();

      Rotate.ServoControl(4,true,true);
      for (x=0;x<50;x++) {
        KMP.runCompass(); AktuellerW = KMP.getAngle();

        if(AktuellerW>n2||AktuellerW<n1)
          Rotate.rotate(n1,n2);
        CPU.delay(750);
        }
      Rotate.ServoControl(4,false,false);



      int o1=358,o2=2;
      //Der Roboter hat sich beim umschalten von Norden nach Osten immer nur um 
etwa
      //30° gedreht. Mit folgenden Werten klappte es exakt:o1=59,o2=61;
      LCDDisplay.clearScr();LCDDisplay.write("Osten");
      Rotate.rotate(o1,o2);CPU.delay(15000);

      KMP.runCompass();VergleichsW = KMP.getAngle();

      Rotate.ServoControl(4,true,true);
      for (x=0;x<50;x++) {
        KMP.runCompass(); AktuellerW = KMP.getAngle();

        if(AktuellerW>o2||AktuellerW<o1)
          Rotate.rotate(o1,o2);
        CPU.delay(750);
        }
      Rotate.ServoControl(4,false,false);



      int s1=133,s2=137;
      LCDDisplay.clearScr();LCDDisplay.write("Startpunkt");
      Rotate.rotate(s1,s2);CPU.delay(15000);

      KMP.runCompass();VergleichsW = KMP.getAngle();

      Rotate.ServoControl(4,true,true);
      for (x=0;x<71;x++) {
        KMP.runCompass(); AktuellerW = KMP.getAngle();

        if(AktuellerW>s2||AktuellerW<s1)
          Rotate.rotate(s1,s2);

        CPU.delay(750);
        }
      Rotate.ServoControl(4,false,false);

      while(true) {}
            }
            }
            }

Other related posts: