/* //速度是由数字 0.1 到 1 控制,1 的速度最快 //@转速越慢 == 扭力越大 */ #define DIR_PIN 2 //@定义控制方向引脚 #define STEP_PIN 3 //@定义步进控制引脚 void setup() { pinMode(DIR_PIN, OUTPUT); //@通过 pinMode 函数设置方向引脚为输出模式 pinMode(STEP_PIN, OUTPUT); //@通过 pinMode 函数设置步进引脚为输出模式 } void loop() { rotateDeg(360, 1); //@旋转360度 delay(1000); //@延时1秒 rotateDeg(-360, .1); //@反向旋转360度 delay(1000); //@延时1秒 //rotate a specific number of microsteps (8 microsteps per step) //a 200 step stepper would take 1600 micro steps for one full revolution rotate(1600, .5); delay(1000); rotate(-1600, .25); //@反向 delay(1000); } /* //@函数: rotate //@变量: steps, speed */ void rotate(int steps, float speed) { //@旋转deg变量给定角度,负值为反向 //@速度是由数字 0.1 到 1 控制,1 的速度最快,速度越慢,扭力越大 int dir = (steps > 0)? HIGH:LOW; steps = abs(steps); digitalWrite(DIR_PIN,dir); float usDelay = (1/speed) * 70; for(int i=0; i < steps; i++) { digitalWrite(STEP_PIN, HIGH); delayMicroseconds(usDelay); digitalWrite(STEP_PIN, LOW); delayMicroseconds(usDelay); } } /* //@函数: rotate //@变量: steps, speed */ void rotateDeg(float deg, float speed) { //@旋转deg变量给定角度,负数为反向 //@速度是由数字 0.1 到 1 控制,1 的速度最快,速度越慢,扭力越大 int dir = (deg > 0)? HIGH:LOW; //@当 deg 角度变量大于0时,声明整型变量 dir 等于高电平,反之等于低电平 digitalWrite(DIR_PIN,dir); //@通过 Arduino 的 digitalWrite 函数,将 DIR_PIN 引脚写入上一行 dir 高电平或低电平 int steps = abs(deg)*(1/0.225); //@声明整型变量 steps float usDelay = (1/speed) * 70; //@声明浮点数变量 usDelay for(int i=0; i < steps; i++) { digitalWrite(STEP_PIN, HIGH); delayMicroseconds(usDelay); digitalWrite(STEP_PIN, LOW); delayMicroseconds(usDelay); } }
0 留言
留言
您的留言将被人工审核,请勿发表色情、反动言论。
您可能感兴趣
Arduino + GP2Y1010AU0F 颗粒传感器 测PM2.5
Arduino + GP2Y1010AU0F颗粒传感器教程:使用Arduino和GP2Y1010AU0F传感器检测环境中的PM2.5颗粒物浓度,提...