arduino 让9g舵机和四相步进电机同时转动

我仿照网上做了一个超声波+舵机的小雷达,想让它来检测控制步进电机转动,但试了好多方法都不能让他们同时转动,要不一个转一个不转,或者一个转完再一个,运行不了判断语句,只会用millis()来控制俩个舵机同时转,但一个舵机一个步进电机怎么编呀,谢谢

img


这个行不行,一开始是这样想的,按钮按下 ,步进电机开始正反转,如果检测不到物体,就会在几秒钟之后停止转动,后来觉的问题是他俩不能同时转,就单独想了下,刚接触上单片机不太会编
#include <Servo.h>
#include <Stepper.h>
const int STEPS_PER_ROTOR_REV = 32;
const int GEAR_REDUCTION = 64;
int StepsRequired;
const float STEPS_PER_OUT_REV = STEPS_PER_ROTOR_REV * GEAR_REDUCTION;
Stepper steppermotor(STEPS_PER_ROTOR_REV, 4, 6, 5, 7);
Servo sv5; // 建立Servo物件,控制伺服馬達
Servo sv9;
const int sv5Pin = 8; // sv5 接 Pin 8
const int sv9Pin = 9; // sv9 接 Pin 9
const int every555 = 15;
const int every999 = 50;
unsigned long last555 = 0;
unsigned long last999 = 0; // last moving time
unsigned long nowtime1 = 0;
unsigned long nowtime2 = 0;
int dir5 = 1;
int dir9 = -1;
int pos555 = 90;
int pos999 = 90;
void setup() {
sv9.attach(sv9Pin); // 連接數位腳位9,伺服馬達(舵機)的訊號線
sv5.attach(sv5Pin); // pin8, 故意名稱叫 sv5
Serial.begin(9600);
sv9.write(pos999);
sv5.write(pos555);
Serial.println("Test 2 Serbo");
delay(568);
pinMode(10, INPUT);
pinMode(11, INPUT);

void loop( ) {
if (digitalRead(10) == LOW) {
shun();
check555( );
}
else {
sv5.write(0);
}
if (digitalRead(11) == LOW) {
ni();
check999( );
}
else {
sv9.write(0);
}

}
void shun() {
if(millis()-nowtime1 <10000){
nowtime1=millis;
StepsRequired = STEPS_PER_OUT_REV;
steppermotor.setSpeed(500);
steppermotor.step(2*StepsRequired);
}
}
void ni(){
if(millis()-nowtime2<10000){
nowtime2=millis;
StepsRequired = - STEPS_PER_OUT_REV;
steppermotor.setSpeed(500);
steppermotor.step(2*StepsRequired);
}
}
void check555( ) {
if (millis( ) - last555 < every555) return; // 還沒到
last555 = millis( );
pos555 += dir5;
sv5.write(pos555);
if (dir5 == 1) {
if (pos555 > 179) dir5 = -1;
} else {
if (pos555 < 1) dir5 = 1;
}
}
void check999( ) {
if (millis( ) - last999 < every999) return; // 還沒到
last999 = millis( );
pos999 += dir9;
sv9.write(pos999);
if (dir9 == 1) {
if (pos999 > 179) dir9 = -1;
} else {
if (pos999 < 1) dir9 = 1;
}
}

#include <Stepper.h>
#include <Servo.h>

volatile int item;
volatile int item1;
Stepper mystepper(100,4,5,6,7);
Servo servo_9;

void setup(){
item = 0;
item1 = 0;
mystepper.setSpeed(10);
servo_9.attach(9);
pinMode(10, INPUT);
pinMode(3, OUTPUT);
pinMode(11, INPUT);
}

void loop(){
if (item == 1) {
servo_9.write(0);
delay(500);
servo_9.write(180);
delay(500);

}
if (item1 == 1) {
servo_9.write(0);
delay(500);
servo_9.write(180);
delay(500);

}

if (item == 1) {
mystepper.step(10);
mystepper.step(0);

}
if (item1 == 1) {
mystepper.step(10);
mystepper.step(0);

}

if (digitalRead(10) == LOW) {
digitalWrite(3,HIGH);
item = 1;

} else {
item = 0;

}
if (digitalRead(11) == LOW) {
digitalWrite(3,HIGH);
item1 = 1;

} else {
item1 = 0;

}

}
咋样才能整出来呀