Exemple #1
0
  public SensorHandler() {
    distanceSensor = new EV3UltrasonicSensor(SensorPort.S1);
    colorSensor = new EV3ColorSensor(SensorPort.S4);

    distanceProvider = distanceSensor.getDistanceMode();
    colorProvider = colorSensor.getRGBMode();
  }
 public CheckIfSharpCornerThread(
     LineBehaviour line,
     RegulatedMotor leftMotor,
     RegulatedMotor rightMotor,
     EV3ColorSensor colorSensor) {
   this.line = line;
   this.leftMotor = leftMotor;
   this.rightMotor = rightMotor;
   this.colorSensor = colorSensor;
   SampleProvider light = colorSensor.getMode("Red");
   filter = new MedianFilter(light, 2);
 }
  public void test() {

    EV3ColorSensor sensor = new EV3ColorSensor(SensorPort.S1);

    // 模式一:ColorID,一个数
    // SensorMode mode = sensor.getColorIDMode();
    // 模式二:RGB,三个数
    // SensorMode mode = sensor.getRGBMode();
    // 模式三:环境光,一个数,大则亮,小则暗
    // SensorMode mode = sensor.getAmbientMode();
    // 模式四:测量,一个数,大则近,0则远
    SensorMode mode = sensor.getRedMode();

    float[] samples = new float[mode.sampleSize()];

    while (!Button.DOWN.isDown()) {
      mode.fetchSample(samples, 0);
      int k = 0;
      for (float v : samples) log.echo("v[" + (k++) + "]=" + v);
    }
    sensor.close();
  }
  public void init() {
    Button.LEDPattern(2);
    colorSensor = new EV3ColorSensor(s1);
    colorSensor.setFloodlight(Color.WHITE);
    log = new ArrayList<>();
    previousLogging = System.currentTimeMillis();
    logger.info("Initialized");

    Runnable r =
        new Runnable() {
          public void run() {
            while (!stopped) {
              int detectedColorId = colorSensor.getColorID();

              long now = System.currentTimeMillis();
              log.add(String.valueOf(now - previousLogging));
              previousLogging = now;

              if (detectedColorId == lastRegisteredColorId) {
                sleep();
                continue;
              }

              if (detectedColorId != lastDetectedColorId) {
                lastDetectedColorId = detectedColorId;
                readings = 1;
                sleep();
                continue;
              }

              readings++;
              if (detectedColorId < HIGHEST_SIGNAL_COLOR_ID
                  || readings == CONSECUTIVE_READINGS_REQUIREMENT) {
                lastRegisteredColorId = detectedColorId;
                if (detectedColorId != BACKGROUND_COLOR_ID) {
                  sendToBlock("SLEEPER", SleeperColor.convertFromLejosColor(detectedColorId));
                }
              }

              sleep();
            }
          }
        };

    runAsync(r);
  }
Exemple #5
0
  public static void main(String[] args) throws Exception {

    DifferentialPilot pilot = new DifferentialPilot(56f, 126f, Motor.D, Motor.A);
    pilot.setTravelSpeed(150);

    Brick brick = BrickFinder.getDefault();
    Port s1 = brick.getPort("S1"); //
    Port s4 = brick.getPort("S4"); //

    TextLCD lcd = brick.getTextLCD();

    NXTLightSensor lysSensor = new NXTLightSensor(s1); // NXT LYS
    EV3ColorSensor fargeSensor = new EV3ColorSensor(s4); // EV3 LYS

    // COLOR-----------------------------------------------------------------
    SampleProvider fargeSample = fargeSensor.getColorIDMode();
    float[] colorVerdi = new float[fargeSample.sampleSize()];

    // ----------------------------------------------------------------------

    // LYS-------------------------------------------------------------------
    SampleProvider lysSample = lysSensor;
    float[] lysVerdi = new float[lysSample.sampleSize()];

    // ----------------------------------------------------------------------

    Boolean move = true; // Sett til false hvis roboten ikke skal kjøre videre
    // System.out.println("start lokke");

    while (!Button.ESCAPE.isDown()) { // Kjører så lenge vi ikke trykker på exit-knappen
      // Kjør framover hvis vi ikke allerede gjør det
      if (!pilot.isMoving() && move) {
        pilot.forward();
      }

      lysSensor.fetchSample(lysVerdi, 0); // LYS
      float lys = lysVerdi[0];

      fargeSample.fetchSample(colorVerdi, 0); // COLOR
      // float color = colorVerdi[0];
      int color = fargeSensor.getColorID(); // Fungerer dette?

      lcd.clear();
      lcd.drawString("NXT " + lys, 0, 0);
      lcd.drawString("EV3 " + color, 0, 1);

      if (color != Color.BLACK) {

        pilot.rotate(-10); // VENSTRE
      } else if (lys < 48) {

        // pilot.arcForward(-150);
        pilot.rotate(10);
      }
      // Elsen under trengs ikke, da forward kjøres på starten uansett
      else {
        // pilot.forward();
        if (!pilot.isMoving()) {
          pilot.forward();
        }
      }
    } // while
    System.out.println("AVSLUTTET");
  } // main