Пример #1
0
int ColorJudge::isColorRGB(){
	rgb_raw_t rgb_val;
	ev3_color_sensor_get_rgb_raw(EV3_PORT_2, &rgb_val);
	if ( (30 < rgb_val.r && rgb_val.r < 60) && 
			 (90< rgb_val.g && rgb_val.g <150) && 
			 (10< rgb_val.b && rgb_val.b < 40)  ) { //green
		msg_f("Green", 2);
		return 3;
	} else if ( (20 < rgb_val.r && rgb_val.r < 40) && 
							(60 < rgb_val.g && rgb_val.g < 150) && 
							(30 < rgb_val.b && rgb_val.b < 130)) { //blue
		msg_f("Blue", 2);
		return 2;
	} else if ( (100 < rgb_val.r ) && 
							(rgb_val.g < 100) && 
							(10 < rgb_val.b && rgb_val.b < 25)) { //red
		msg_f("Red", 2);
		return 5;
	}else if ( (150 < rgb_val.r && rgb_val.r < 255) && 
						 (200 < rgb_val.g) && 
						 (0 < rgb_val.b && rgb_val.b < 50) ) { //yellow
		msg_f("Yellow", 2);
		return 4;
	} else {
		return 0;
	}
}
Пример #2
0
void Tracer::run() {
  const float Kp = 0.83;        // 比例係数
  const int target = 10;        // 白・黒の中間値
  const int bias = 0;

  msg_f("running...", 1);
  int diff = colorSensor.getBrightness() - target;
  float turn = Kp * diff + bias;
  leftWheel.setPWM(pwm - turn);
  rightWheel.setPWM(pwm + turn);
}
Пример #3
0
void Lifter::terminate() {
    msg_f("Stopped.", 1);
    liftHand.stop();
}
Пример #4
0
void Tracer::terminate() {
  msg_f("Stopped.", 1);
  leftWheel.stop();
  rightWheel.stop();
}