一、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