使用Arduino MPU6050打造平衡車

一、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-hk/n/149004.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
YBKE的頭像YBKE
上一篇 2024-11-04 17:49
下一篇 2024-11-04 17:49

相關推薦

  • 詳解Arduino WS2812

    一、WS2812簡介 WS2812是一種數字RGB LED燈珠,它是一顆RGB三色LED和驅動芯片集成在一個封裝中。WS2812的工作電壓是5V,每個LED的電流為20mA,每一個…

    編程 2025-02-17
  • 從多個方面詳細闡述Arduino 中斷

    一、中斷的基礎知識 1. 中斷定義:中斷是一種計算機系統通信方式,允許計算機處理多個任務並響應外部事件(如硬件終端、軟件信號和外部設備的請求等)。 2. 中斷的分類: 體外中斷和軟…

    編程 2025-01-20
  • 用java控制arduino(用JAVA控制監控探頭)

    本文目錄一覽: 1、如何用 JavaScript 控制 Arduino 2、如何用arduino控制步進電機反向轉動 3、用java編一個手機程序,通過藍牙向arduino發出字符…

    編程 2025-01-07
  • 深入理解Arduino中的millis()函數

    一、millis()函數的原理 在使用Arduino進行開發時,我們經常會使用到millis()函數。這個函數的作用是返回程序運行時間(以毫秒為單位)。這個函數的實現原理是基於計算…

    編程 2024-12-15
  • Arduino開發環境詳解

    一、Arduino開發環境搭建 在使用Arduino之前,需要安裝Arduino開發環境。Arduino官網提供了開發環境的下載鏈接,用戶可以根據所使用的操作系統下載相應的版本。 …

    編程 2024-12-12
  • Arduino下載安裝教程

    一、Arduino編程軟件下載 在進行Arduino編程之前,需要先下載Arduino編程軟件。以下是下載Arduino編程軟件的步驟: 1. 進入Arduino官網下載頁面,選擇…

    編程 2024-12-11
  • Arduino DS18B20溫度傳感器

    一、介紹 DS18B20溫度傳感器是一種數字溫度傳感器,控制協議簡單,數據穩定可靠,而且價格低廉,非常適合用於單片機控制系統中。 DS18B20採用單總線結構,只需要三根引腳即可完…

    編程 2024-12-02
  • Arduino和樹莓派——完美配合的微型計算機

    一、Arduino和樹莓派Pico 1、Arduino是一款開源的微型控制板,它使用了Atmel AVR微控制器,可以編程控制交互式物品。Arduino也包括了Arduino ID…

    編程 2024-11-19
  • Arduino上傳項目出錯:如何解決

    一、arduino上傳項目出錯timeout 當你使用Arduino上傳項目時,如果遇到上傳時間超時的錯誤,這通常意味着您的上傳速度較慢或者您的代碼需要優化。 首先,嘗試使用較低的…

    編程 2024-11-02

發表回復

登錄後才能評論