1. 程式人生 > 其它 >arduino串列埠控制電機的正反轉和開關

arduino串列埠控制電機的正反轉和開關

技術標籤:我的學習筆記微控制器arduino

用到了AccelStepperRBD_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停止