洪嵐峰 發表於 2023-3-18 06:49:40

Arduino Pro Mini(P328 版本)製作遙控飛機

所需材料
Arduino Pro Mini(P328 版本)
遙控器(例如基於 nRF24L01+ 的無線遙控器)
馬達控制板(例如 L298N 馬達驅動板)
兩個直流電機
電池或電池盒
其他零件(例如麵包板、連接線等)
程式碼
下面是一個簡單的 Arduino 程式碼範例,可以讓您控制兩個直流馬達,讓遙控飛機前進、後退、轉彎等。


#include <RF24.h>

// 設置遙控器的地址和通道
const uint64_t address = 0xABCDABCDABCD;
const byte channel = 0x60;

RF24 radio(7, 8); // 定義無線模塊的連接腳位
int leftMotor1 = 2; // 馬達控制板上控制左馬達的輸出1
int leftMotor2 = 3; // 馬達控制板上控制左馬達的輸出2
int rightMotor1 = 4; // 馬達控制板上控制右馬達的輸出1
int rightMotor2 = 5; // 馬達控制板上控制右馬達的輸出2

void setup() {
  radio.begin();
  radio.setChannel(channel);
  radio.setPALevel(RF24_PA_LOW);
  radio.openReadingPipe(1, address);
  radio.startListening();
  pinMode(leftMotor1, OUTPUT);
  pinMode(leftMotor2, OUTPUT);
  pinMode(rightMotor1, OUTPUT);
  pinMode(rightMotor2, OUTPUT);
}

void loop() {
  if (radio.available()) {
    int data;
    radio.read(data, sizeof(data));
    int leftSpeed = data;
    int rightSpeed = data;
    // 控制左馬達轉動
    if (leftSpeed >= 0) {
      digitalWrite(leftMotor1, HIGH);
      digitalWrite(leftMotor2, LOW);
      analogWrite(leftMotor1, leftSpeed);
    } else {
      digitalWrite(leftMotor1, LOW);
      digitalWrite(leftMotor2, HIGH);
      analogWrite(leftMotor1, -leftSpeed);
    }
    // 控制右馬達轉動
    if (rightSpeed >= 0) {
      digitalWrite(rightMotor1, HIGH);
      digitalWrite(rightMotor2, LOW);
      analogWrite(rightMotor1, rightSpeed);
    } else {
      digitalWrite(rightMotor1, LOW);
      digitalWrite(rightMotor2, HIGH);
      analogWrite(rightMotor1, -rightSpeed);
    }
  }
}
這個程式碼使用 nRF24L01+ 無線模組,讓您可以通過遙控器控制馬達的轉速。具體來說,這個程式碼會讀取無線模塊的數據,並根據數據的兩個值來控制左右兩個馬達的轉速。

連接腳位
以下是基本連接示意圖,可作參考,具體腳位和連接方法可能因實際硬體有所不同,請務必仔細閱讀硬體元件的規格和說明。

遙控飛機連接示意圖

這個示意圖展示了如何將 Arduino Pro Mini、無線模塊、馬達控制板和直流電機連接在一起。具體來說,Arduino Pro Mini 的 VCC 和 GND 腳位分別連接到電池的正負極,無線模塊的 CE、CSN、SCK、MOSI 和 MISO 腳位分別連接到 Arduino Pro Mini 的 9、10、13、11 和 12 腳位,左右兩個直流馬達則連接到馬達控制板上的對應腳位。在馬達控制板上,每個馬達都需要兩個輸出來控制其轉速,這些腳位則連接到 Arduino Pro Mini 的 2、3、4 和 5 腳位。
頁: [1]
查看完整版本: Arduino Pro Mini(P328 版本)製作遙控飛機