#include "AccelStepper.h"
#include <IRremote.h>
#define STEP_SPEED 200 // 设置速度 200pps每秒
#define STEP_MOTOR_PIN1 2
#define STEP_MOTOR_PIN2 3
#define STEP_MOTOR_PIN3 4
#define STEP_MOTOR_PIN4 5
#define STEP_MOTOR_EN_PIN 6
#define IR_PIN 7
IRrecv irrecv(IR_PIN);
AccelStepper stepper(8, STEP_MOTOR_PIN1, STEP_MOTOR_PIN3, STEP_MOTOR_PIN2, STEP_MOTOR_PIN4, true);
void setup() {
Serial.begin(9600);
irrecv.enableIRIn();
stepper.setEnablePin(STEP_MOTOR_EN_PIN);
stepper.enableOutputs();
stepper.setPinsInverted(true, true, true, true, false);
stepper.setMaxSpeed(600); //最大速度设置 600pps每秒
stepper.setSpeed(0); //速度设置 0
}
bool flag_start = false;
int speed = 0;
int now_pos;
void loop() {
// 检查红外接收器是否接收到信号,并执行对应的操作
if (irrecv.decode()) {
// 根据接收到的红外命令执行对应的操作
Serial.println(irrecv.decodedIRData.command);
switch (irrecv.decodedIRData.command) {
case 48:
now_pos = 1000;
flag_start = !flag_start;
if(flag_start){
speed = 200;
stepper.setSpeed(speed); //速度设置 400pps每秒
}else{
stepper.setSpeed(0); //速度设置 400pps每秒
}
Serial.print("num: 1");
break;
case 25:
now_pos = 0;
Serial.print("num: 0");
break;
case 69:
now_pos = 1000;
flag_start = !flag_start;
if(flag_start){
speed = 200;
stepper.setSpeed(speed); //速度设置 400pps每秒
}else{
stepper.setSpeed(0); //速度设置 400pps每秒
}
Serial.print("num: 1");
break;
case 70:
now_pos = 2000;
if(flag_start){
speed += 20;
stepper.setSpeed(speed); //速度设置 400pps每秒
}
Serial.print("num: 2");
break;
case 71:
now_pos = 3000;
if(flag_start){
speed -= 20;
stepper.setSpeed(speed); //速度设置 400pps每秒
}
Serial.print("num: 3");
break;
case 68:
now_pos = 4000;
Serial.print("num: 4");
break;
case 64:
now_pos = 5000;
Serial.print("num: 5");
break;
case 67:
now_pos = 6000;
Serial.print("num: 6");
break;
case 7:
now_pos = 7000;
Serial.print("num: 7");
break;
case 21:
now_pos = 8000;
Serial.print("num: 8");
break;
case 9:
now_pos = 9000;
Serial.print("num: 9");
break;
case 24:
if(flag_start){
speed += 20;
stepper.setSpeed(speed); //速度设置 400pps每秒
}
Serial.print("++");
break;
case 82:
Serial.print("--");
break;
case 22:
Serial.print("--");
break;
case 13:
Serial.print("--");
break;
default:
// Serial.print(" other button");
break;
}
Serial.println();
irrecv.resume();
}
stepper.runSpeed();
}