|
#include <AccelStepper.h>
#include <MultiStepper.h>
#define STEPPER1_DIR_PIN 2
#define STEPPER1_STEP_PIN 3
#define STEPPER2_DIR_PIN 8
#define STEPPER2_STEP_PIN 9
#define Ena_PIN 10 //使能位為引腳10。(低電平電機(jī)禁止運(yùn)動(dòng),高電平電機(jī)有效)
AccelStepper stepper1(AccelStepper::DRIVER, STEPPER1_STEP_PIN, STEPPER1_DIR_PIN); // 配置電機(jī)1 的脈沖引腳 方向引腳
AccelStepper stepper2(AccelStepper::DRIVER, STEPPER2_STEP_PIN, STEPPER2_DIR_PIN); // 配置電機(jī)2 的脈沖引腳 方向引腳
#define a 400 //電機(jī)旋轉(zhuǎn)一圈的脈沖數(shù)
long positions[2]; //2個(gè)電機(jī)坐標(biāo)位置
/*庫(kù)函數(shù)說(shuō)明
* setMaxSpeed ----------設(shè)置步進(jìn)電機(jī)最大運(yùn)行速度
* setAcceleration ------設(shè)置步進(jìn)電機(jī)加速度
* setSpeed--------------設(shè)置步進(jìn)電機(jī)運(yùn)行速度
* targetPosition--------獲取步進(jìn)電機(jī)運(yùn)行目標(biāo)位置
* currentPosition ------獲取步進(jìn)電機(jī)運(yùn)行當(dāng)前位置
* setCurrentPosition----復(fù)位步進(jìn)電機(jī)初始位置
* move------------------設(shè)置步進(jìn)電機(jī)運(yùn)動(dòng)的相對(duì)目標(biāo)位置
* moveTo----------------設(shè)置步進(jìn)電機(jī)運(yùn)動(dòng)的絕對(duì)目標(biāo)位置
* run-------------------步進(jìn)電機(jī)運(yùn)行(先加速后減速模式)
* runSpeed--------------步進(jìn)電機(jī)運(yùn)行(勻速模式)
* runToNewPosition------電機(jī)運(yùn)行到用戶指定位置值,目標(biāo)位置為絕對(duì)位置。此函數(shù)將“block”程序運(yùn)行。即電機(jī)沒(méi)有到達(dá)目標(biāo)位置前,Arduino將不會(huì)繼續(xù)執(zhí)行后續(xù)程序內(nèi)容。這一點(diǎn)很像Arduino官方Stepper庫(kù)中的step函數(shù)。
*/
void setup()
{
//
Serial.begin(9600);
//
pinMode(Ena_PIN, OUTPUT);
digitalWrite(Ena_PIN, 1);
//
stepper1.setMaxSpeed(a*5); //設(shè)置1#電機(jī)最大速度
stepper1.setSpeed(a*3.0); //設(shè)置1#電機(jī)速度
stepper1.setAcceleration(a*4); //設(shè)置1#電機(jī)加速度
//stepper2.setMaxSpeed(CIRCLE_Puls*1.5);
//stepper2.setSpeed(CIRCLE_Puls*1.0);
// stepper2.setAcceleration(CIRCLE_Puls/4);
delay(1000);
}
void loop()
{
/*================1、絕對(duì)位置運(yùn)動(dòng)1---向前轉(zhuǎn)3圈=============================*/
//設(shè)置電機(jī)的目標(biāo)位置
positions[0] = a*100;
//positions[1] = CIRCLE_Puls*3;
stepper1.runToNewPosition(positions[0]);
//串口反饋1#電機(jī)當(dāng)前的位置
Serial.print("1# Motor Current Position is: ");
Serial.println(stepper1.currentPosition());
delay(2000);
/*================2、絕對(duì)位置運(yùn)動(dòng)2---到零位=============================*/
/*
//設(shè)置電機(jī)的目標(biāo)位置
positions[0] = CIRCLE_Puls*0;
//positions[1] = CIRCLE_Puls*0;
stepper1.runToNewPosition(positions[0]);
//串口反饋1#電機(jī)當(dāng)前的位置
Serial.print("1# Motor Current Position is: ");
Serial.println(stepper1.currentPosition())*
delay(2000);*/
} |
評(píng)分
-
查看全部評(píng)分
|