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