2.2 编写有放回采样 BoostTr 划分测试集。 X_train, y_train, X_test, y_test=BoostTr(X,y,random_state)。该方法有放回采样 n 次得到训练集,n 为 X 中样本 数目。未被采样到的样本为测试样本
时间: 2024-05-14 13:15:01 浏览: 78
以下是使用ARDUINO UNO与HC-SR04、MPU6050以及SG90 9G,实现舵机控制的代码:
```
#include <Servo.h>
#include <Wire.h>
#include <MPU6050.h>
MPU6050 mpu;
Servo servo;
const int trigPin = 9;
const int echoPin = 10;
const int servoPin = 11;
long duration;
int distance;
int servoPos = 90;
int angle = 0;
void setup() {
Serial.begin(9600);
pinMode(trigPin, OUTPUT);
pinMode(echoPin, INPUT);
servo.attach(servoPin);
Wire.begin();
mpu.initialize();
mpu.dmpInitialize();
mpu.setXGyroOffset(220);
mpu.setYGyroOffset(76);
mpu.setZGyroOffset(-85);
mpu.setZAccelOffset(1788);
if (!mpu.testConnection()) {
Serial.println("MPU6050 connection failed");
while (1);
}
}
void loop() {
digitalWrite(trigPin, LOW);
delayMicroseconds(2);
digitalWrite(trigPin, HIGH);
delayMicroseconds(10);
digitalWrite(trigPin, LOW);
duration = pulseIn(echoPin, HIGH);
distance = duration * 0.034 / 2;
//Serial.print("Distance: ");
//Serial.println(distance);
if (distance < 20) {
mpu.dmpInitialize();
mpu.resetFIFO();
mpu.setDMPEnabled(true);
delay(100);
while (distance < 20) {
angle = map(mpu.getRotationY(), -32768, 32767, 0, 180);
if (angle > 180) angle = 180;
if (angle < 0) angle = 0;
servo.write(angle);
delay(10);
digitalWrite(trigPin, LOW);
delayMicroseconds(2);
digitalWrite(trigPin, HIGH);
delayMicroseconds(10);
digitalWrite(trigPin, LOW);
duration = pulseIn(echoPin, HIGH);
distance = duration * 0.034 / 2;
}
servo.write(90);
}
}
```
首先我们引入了Servo.h、Wire.h和MPU6050.h这些库文件,然后定义了HC-SR04的引脚和Servo SG90的引脚。
在setup()函数中,我们开始了串口通讯,初始化了HC-SR04的引脚,连接了Servo SG90并初始化了MPU6050。
在loop()函数中,我们使用了HC-SR04测量距离,并根据距离来控制舵机的旋转角度。如果距离小于20厘米,则使用MPU6050来控制舵机的旋转角度,直到距离大于20厘米为止。
在使用MPU6050控制舵机旋转角度时,我们首先进行了DMP初始化,然后使用resetFIFO()清空FIFO缓冲区,使用setDMPEnabled(true)启用DMP,并等待100毫秒,以便MPU6050能够正确工作。然后我们使用getRotationY()获取Y轴的陀螺仪角速度值,并使用map()将角速度值映射到0-180度的旋转角度范围内,然后将该角度值传递给舵机控制器来控制舵机旋转。
最后,我们使用delay()函数来设置舵机旋转的延迟时间,以便使舵机能够按照指定的角度转动到位。
阅读全文