一、Arduino MPU6050舵機
Arduino是一款基於開放式硬件和軟件的物聯網開發平台,擁有強大的社區支持,可以在系統上運行無數種不同的模塊和傳感器。
其中,MPU6050是一種集成了三軸陀螺儀、三軸加速度計和溫度傳感器的數字傳感器,可用於控制各種機械和機器人,如平衡車。而舵機則是一種廣泛用於控制運動方向的機械設備,兩者的配合能夠實現平衡車的控制和移動。
以下是將MPU6050和舵機結合的一些基本示例代碼。
#include
#include
#include
Servo myservo;
MPU6050 mpu;
int16_t ax, ay, az, gx, gy, gz; // 存儲MPU6050傳回的值
void setup()
{
myservo.attach(9); // 建立舵機信號與Arduino D9的連接
Serial.begin(115200); // 初始化串口
while (!Serial); // 等待串口連接成功後再執行後續代碼
Serial.println("Initializing I2C devices...");
mpu.initialize(); // 初始化MPU6050
Serial.println(mpu.testConnection() ? "Connected" : "Connection failed");
}
void loop()
{
mpu.getMotion6(&ax, &ay, &az, &gx, &gy, &gz); // 獲取MPU6050的運動值
// 將在X軸上的運動值映射到舵機的角度範圍
int servo_angle = map(ax, -17000, 17000, 0, 180);
myservo.write(servo_angle); //將當前的舵機位置設為映射到的角度值
Serial.print(servo_angle);
Serial.write('\t');
Serial.print(ax);
Serial.write('\t');
Serial.print(ay);
Serial.write('\t');
Serial.print(az);
Serial.write('\t');
Serial.print(gx);
Serial.write('\t');
Serial.print(gy);
Serial.write('\t');
Serial.println(gz);
delay(10);
}
二、Arduino MPU6050讀取數據
MPU6050可以通過I2C帶寬與Arduino通訊,並將其讀取的數據轉換為設備的姿態信息。以下是由MPU6050獲取姿態數據的基本示例代碼:
#include
#include
MPU6050 mpu;
int16_t ax, ay, az, gx, gy, gz; // 存儲MPU6050傳回的值
void setup()
{
Serial.begin(115200); // 初始化串口
while (!Serial); // 等待串口連接成功後再執行後續代碼
Serial.println("Initializing I2C devices...");
mpu.initialize(); // 初始化MPU6050
Serial.println(mpu.testConnection() ? "Connected" : "Connection failed");
}
void loop()
{
mpu.getMotion6(&ax, &ay, &az, &gx, &gy, &gz); // 獲取MPU6050的運動值
Serial.print(ax); // 記錄X軸上的加速度計數值
Serial.write('\t');
Serial.print(ay); // 記錄Y軸上的加速度計數值
Serial.write('\t');
Serial.print(az); // 記錄Z軸上的加速度計數值
Serial.write('\t');
Serial.print(gx); // 記錄X軸上的陀螺儀計數值
Serial.write('\t');
Serial.print(gy); // 記錄Y軸上的陀螺儀計數值
Serial.write('\t');
Serial.println(gz); // 記錄Z軸上的陀螺儀計數值
delay(10);
}
三、Arduino MPU6050平衡車
使用MPU6050和舵機,可以製作一個基於Arduino的平衡車。以下是這個項目的基本示例代碼:
#include
#include
#include
Servo servoL; // 左邊的舵機對象
Servo servoR; // 右邊的舵機對象
MPU6050 mpu;
int16_t ax, ay, az, gx, gy, gz; // 存儲MPU6050傳回的值
void setup()
{
servoL.attach(9); //將左舵機信號與Arduino D9的連接建立
servoR.attach(10); //將右舵機信號與Arduino D10的連接建立
Serial.begin(115200); // 初始化串口
while (!Serial); // 等待串口連接成功後再執行後續代碼
Serial.println("Initializing I2C devices...");
mpu.initialize(); // 初始化MPU6050
Serial.println(mpu.testConnection() ? "Connected" : "Connection failed");
}
void loop()
{
mpu.getMotion6(&ax, &ay, &az, &gx, &gy, &gz); // 獲取MPU6050的運動值
int servo_adjustment;
if (ay 9800) //當前的加速度計測量值向後
{
servo_adjustment = map(ay, 9800, 17000, 45, 60);
servoL.write(90 - servo_adjustment);
servoR.write(90 + servo_adjustment);
}
else // 靜止狀態,向前或向後
{
servoL.write(90);
servoR.write(90);
}
Serial.print(ax); // 記錄X軸上的加速度計數值
Serial.write('\t');
Serial.print(ay); // 記錄Y軸上的加速度計數值
Serial.write('\t');
Serial.println(servo_adjustment); // 記錄左右舵機的調整程度
delay(10);
}
四、總結
通過該文章的解讀,我們了解到了如何使用Arduino MPU6050來控制舵機和平衡車,這為我們製作更加複雜的設備提供了基礎。
原創文章,作者:YBKE,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/149004.html
微信掃一掃
支付寶掃一掃