arduino串列埠控制電機的正反轉和開關
阿新 • • 發佈:2021-01-11
用到了AccelStepper和RBD_SerialManager兩個標頭檔案
#include "AccelStepper.h"
#include <RBD_SerialManager.h>
RBD::SerialManager usb;
// 電機步進方式定義
#define FULLSTEP 4 //全步進引數
#define HALFSTEP 8 //半步進引數
// 定義步進電機引腳
#define motor1Pin1 8 // 一號28BYJ48連線的ULN2003電機驅動板引腳 in1
#define motor1Pin2 9 // 一號28BYJ48連線的ULN2003電機驅動板引腳 in2
#define motor1Pin3 10 // 一號28BYJ48連線的ULN2003電機驅動板引腳 in3
#define motor1Pin4 11 // 一號28BYJ48連線的ULN2003電機驅動板引腳 in4
int motorRun = 0;
// 定義兩個步進電機物件
// 定義中ULN2003驅動板引腳順序為 in1-in3-in2-in4
// 1號電機設定為全步進執行,2號電機設定為全步進執行
AccelStepper stepper1(HALFSTEP, motor1Pin1, motor1Pin3, motor1Pin2, motor1Pin4);
void setup()
{
usb.start();
stepper1.setMaxSpeed(2000); // 設定電機最大速度為2000
stepper1.setSpeed(300); // 初始化電機速度為300
usb.println("請輸入引數:");
}
void loop()
{
if (usb.onReceive())
{
// 檢查串列埠快取是否有資料等待傳輸
if(usb.isCmd("speed"))
{
int param = usb.getParam().toInt();
stepper1.setSpeed(param);
motorRun = 1;
usb.print("電機速度:");
usb.println(param);
}
if(usb.isCmd("stop"))
motorRun = 0;
stepper1.disableOutputs();
}
if(motorRun == 1)
stepper1.runSpeed();
}
在IDE串列埠輸入格式是speed,800逆時針,speed,-800順時針。stop停止