Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/arduino/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Arduino:循环中同时只有3件事_Arduino - Fatal编程技术网

Arduino:循环中同时只有3件事

Arduino:循环中同时只有3件事,arduino,Arduino,我通过AccelStepper库得到了运行14个步进器的代码。 但我只想同时运行3台步进电机。 如果需要使用4个(或更多)步进电机,则第4个步进电机应等待其他3个步进电机中的一个完成。 方法:在“空闲插槽”可用时启动步进电机。 我该怎么做 这是我的密码: #include <Max3421e.h> #include <Usb.h> #include <AndroidAccessory.h> #include <AccelStepper.h

我通过AccelStepper库得到了运行14个步进器的代码。 但我只想同时运行3台步进电机。 如果需要使用4个(或更多)步进电机,则第4个步进电机应等待其他3个步进电机中的一个完成。 方法:在“空闲插槽”可用时启动步进电机。 我该怎么做

这是我的密码:

  #include <Max3421e.h>
  #include <Usb.h>
  #include <AndroidAccessory.h>
  #include <AccelStepper.h>

  #define VALUE_OFF 0x0
  #define VALUE_ON 0x1
  #define COMMAND_DRINK 0x2
  #define COMMAND_LED 0x3

  AndroidAccessory acc("Manufacturer",
                 "Model",
                 "Description",
                 "1.0",
                 "http://nichtsda.com",
                 "0000000012345678");


  //pin definitions.  must be PWM-capable pins!
  const int redPin = 2;
  const int greenPin = 3;
  const int bluePin = 4;


  AccelStepper stepper1   (AccelStepper::DRIVER, 23, 12);
  AccelStepper stepper2   (AccelStepper::DRIVER, 27, 11);
  AccelStepper stepper3   (AccelStepper::DRIVER, 31, 11);
  AccelStepper stepper4   (AccelStepper::DRIVER, 35, 11);
  AccelStepper stepper5   (AccelStepper::DRIVER, 39, 11);
  AccelStepper stepper6   (AccelStepper::DRIVER, 43, 11);
  AccelStepper stepper7   (AccelStepper::DRIVER, 47, 11);
  AccelStepper stepper8   (AccelStepper::DRIVER, 51, 11);
  AccelStepper stepper9   (AccelStepper::DRIVER, 24, 11);
  AccelStepper stepper10  (AccelStepper::DRIVER, 28, 11);
  AccelStepper stepper11  (AccelStepper::DRIVER, 32, 11);
  AccelStepper stepper12  (AccelStepper::DRIVER, 36, 11);
  AccelStepper stepper13  (AccelStepper::DRIVER, 40, 11);
  AccelStepper stepper14  (AccelStepper::DRIVER, 44, 11);



  //int stepPin[16]={23,27,31,35,39,43,47,51,24,28,32,36,40,44,48,52};
  int multiplikator = 60000;
  int MengeZutat[16];


  const int max_red = 255;
  const int max_green = 255;
  const int max_blue = 200;

  byte colors[3] = {0, 0, 0}; //array to store led brightness values
  byte rcvmsg[16];



void setup()
{

//set all three of our led pins to output
pinMode(redPin, OUTPUT);
pinMode(greenPin, OUTPUT);
pinMode(bluePin, OUTPUT);
Serial.begin(115200);
acc.powerOn();


stepper1.setMaxSpeed(1800.0);
stepper1.setAcceleration(1000.0);

stepper2.setMaxSpeed(1100.0);
stepper2.setAcceleration(1000.0);

stepper3.setMaxSpeed(1800.0);
stepper3.setAcceleration(1000.0);


stepper4.setMaxSpeed(1800.0);
stepper4.setAcceleration(1000.0);

stepper5.setMaxSpeed(1800.0);
stepper5.setAcceleration(1000.0);

stepper6.setMaxSpeed(1800.0);
stepper6.setAcceleration(1000.0);

stepper7.setMaxSpeed(1800.0);
stepper7.setAcceleration(1000.0);

stepper8.setMaxSpeed(1800.0);
stepper8.setAcceleration(1000.0);

stepper9.setMaxSpeed(1800.0);
stepper9.setAcceleration(1000.0);

stepper10.setMaxSpeed(1800.0);
stepper10.setAcceleration(1000.0);

stepper11.setMaxSpeed(1800.0);
stepper11.setAcceleration(1000.0);

stepper12.setMaxSpeed(1800.0);
stepper12.setAcceleration(1000.0);

stepper13.setMaxSpeed(1800.0);
stepper13.setAcceleration(1000.0);

stepper14.setMaxSpeed(1800.0);
stepper14.setAcceleration(1000.0);

}



void loop()
{

if (acc.isConnected()) {
acc.read(rcvmsg, sizeof(rcvmsg), 1);






 if (rcvmsg[14] == COMMAND_LED ) {
  byte value = rcvmsg[15];
  if (value == VALUE_ON) {
    colors[0] = rcvmsg[0] + 128;
    colors[1] = rcvmsg[1] + 128;
    colors[2] = rcvmsg[2] + 128;
    analogWrite(redPin, map(colors[0], 0, 255, 0, max_red));
    analogWrite(greenPin, map(colors[1], 0, 255, 0, max_green));
    analogWrite(bluePin, map(colors[2], 0, 255, 0, max_blue));
  }
  else if (value = VALUE_OFF) {
    colors[0] = 0;
    colors[1] = 0;
    colors[2] = 0;
    analogWrite(redPin, map(colors[0], 0, 255, 0, max_red));
    analogWrite(greenPin, map(colors[1], 0, 255, 0, max_green));
    analogWrite(bluePin, map(colors[2], 0, 255, 0, max_blue));
  }
 }



 if (rcvmsg[14] == COMMAND_DRINK ) {
  byte value = rcvmsg[15];
  if (value == VALUE_ON) {

    //int sleepPin[16]={25,29,33,37,41,45,49,53,22,26,30,34,38,42,46,50};


    stepper1.move(rcvmsg[0]*multiplikator);
    stepper1.setEnablePin(25);

    stepper2.move(rcvmsg[1]*multiplikator);
    stepper2.setEnablePin(29);

    stepper3.move(rcvmsg[2]*multiplikator);
    stepper3.setEnablePin(33);

    stepper4.move(rcvmsg[3]*multiplikator);
    stepper4.setEnablePin(25);

    stepper5.move(rcvmsg[4]*multiplikator);
    stepper5.setEnablePin(37);

    stepper6.move(rcvmsg[5]*multiplikator);
    stepper6.setEnablePin(41);

    stepper7.move(rcvmsg[6]*multiplikator);
    stepper7.setEnablePin(45);

    stepper8.move(rcvmsg[7]*multiplikator);
    stepper8.setEnablePin(49);

    stepper9.move(rcvmsg[8]*multiplikator);
    stepper9.setEnablePin(53);

    stepper10.move(rcvmsg[9]*multiplikator);
    stepper10.setEnablePin(22);

    stepper11.move(rcvmsg[10]*multiplikator);
    stepper11.setEnablePin(26);

    stepper12.move(rcvmsg[11]*multiplikator);
    stepper12.setEnablePin(30);

    stepper13.move(rcvmsg[12]*multiplikator);
    stepper13.setEnablePin(34);

    stepper14.move(rcvmsg[13]*multiplikator);
    stepper14.setEnablePin(38);

  }
  else if (value == VALUE_OFF ) {



    stepper1.run();
    if (stepper1.isRunning() == false) {
      stepper1.disableOutputs();
    }

    stepper2.run();
    if (stepper2.isRunning() == false) {
      stepper2.disableOutputs();
    }


    stepper3.run();
    if (stepper3.isRunning() == false) {
      stepper3.disableOutputs();
    }

    stepper4.run();
    if (stepper4.isRunning() == false) {
      stepper4.disableOutputs();
    }

    stepper5.run();
    if (stepper5.isRunning() == false) {
      stepper5.disableOutputs();
    }

    stepper6.run();
    if (stepper6.isRunning() == false) {
      stepper6.disableOutputs();
    }

    stepper7.run();
    if (stepper7.isRunning() == false) {
      stepper7.disableOutputs();
    }

    stepper8.run();
    if (stepper8.isRunning() == false) {
      stepper8.disableOutputs();
    }


    stepper9.run();
    if (stepper9.isRunning() == false) {
      stepper9.disableOutputs();
    }

    stepper10.run();
    if (stepper10.isRunning() == false) {
      stepper10.disableOutputs();
    }

    stepper11.run();
    if (stepper11.isRunning() == false) {
      stepper11.disableOutputs();
    }

    stepper12.run();
    if (stepper12.isRunning() == false) {
      stepper12.disableOutputs();
    }


    stepper13.run();
    if (stepper13.isRunning() == false) {
      stepper13.disableOutputs();
    }

    stepper14.run();
    if (stepper14.isRunning() == false) {
      stepper14.disableOutputs();
    }




  }
}



}
}
#包括
#包括
#包括
#包括
#定义值_OFF 0x0
#在0x1上定义值_
#定义命令0x2
#定义命令指示灯0x3
AndroidAccessory acc(“制造商”,
“模型”,
“说明”,
"1.0",
"http://nichtsda.com",
"0000000012345678");
//引脚定义。必须是PWM功能引脚!
常数int redPin=2;
常数int greenPin=3;
常数int bluePin=4;
AccelStepper-stepper1(AccelStepper::DRIVER,23,12);
AccelStepper-stepper2(AccelStepper::DRIVER,27,11);
AccelStepper stepper3(AccelStepper::DRIVER,31,11);
加速步进器步进器4(加速步进器::驱动器,35,11);
AccelStepper-stepper5(AccelStepper::DRIVER,39,11);
加速步进器步进器6(加速步进器::驱动程序,43,11);
AccelStepper步进器7(AccelStepper::DRIVER,47,11);
加速步进器步进器8(加速步进器::驱动器,51,11);
加速步进器步进器9(加速步进器::驱动程序,24,11);
AccelStepper-stepper10(AccelStepper::DRIVER,28,11);
加速步进器步进11(加速步进器::驱动程序,32,11);
加速步进器步进12(加速步进器::驱动程序,36,11);
加速步进器步进13(加速步进器::驱动程序,40,11);
AccelStepper步进器14(AccelStepper::DRIVER,44,11);
//int stepPin[16]={23,27,31,35,39,43,47,51,24,28,32,36,40,44,48,52};
整数倍频器=60000;
int MengeZutat[16];
常数int max_red=255;
常量int max_green=255;
常数int max_blue=200;
字节颜色[3]={0,0,0}//用于存储led亮度值的阵列
字节rcvmsg[16];
无效设置()
{
//将所有三个led引脚设置为输出
引脚模式(红色引脚,输出);
引脚模式(绿色引脚,输出);
引脚模式(蓝引脚,输出);
序列号开始(115200);
acc.powerOn();
步进1.设置最大速度(1800.0);
步进1.设定加速度(1000.0);
步进2.setMaxSpeed(1100.0);
步进2.设定加速度(1000.0);
步进3.设置最大速度(1800.0);
步进3.设定加速度(1000.0);
步进电机4.setMaxSpeed(1800.0);
步进4.设定加速度(1000.0);
步进5.设定最大速度(1800.0);
步进5.设定加速度(1000.0);
步进电机6.setMaxSpeed(1800.0);
步进6.设定加速度(1000.0);
步进电机7.setMaxSpeed(1800.0);
步进7.设定加速度(1000.0);
步进电机8.setMaxSpeed(1800.0);
步进8.设定加速度(1000.0);
步进电机9.setMaxSpeed(1800.0);
步进9.设定加速度(1000.0);
步进10.设定最大速度(1800.0);
步进10。设定加速度(1000.0);
步进11.设置最大速度(1800.0);
步进11.设定加速度(1000.0);
步进12.设置最大速度(1800.0);
步进12.设定加速度(1000.0);
步进13.设置最大速度(1800.0);
步进13.设定加速度(1000.0);
步进14.设置最大速度(1800.0);
步进14.设定加速度(1000.0);
}
void循环()
{
如果(根据断开连接()){
acc.read(rcvmsg,sizeof(rcvmsg),1);
如果(rcvmsg[14]==命令指示灯){
字节值=rcvmsg[15];
如果(值==value\u ON){
颜色[0]=rcvmsg[0]+128;
颜色[1]=rcvmsg[1]+128;
颜色[2]=rcvmsg[2]+128;
模拟写入(红色,贴图(颜色[0],0,255,0,最大红色));
analogWrite(绿色,贴图(颜色[1],0,255,0,最大绿色));
模拟写入(蓝针,地图(颜色[2],0,255,0,最大蓝色));
}
否则如果(值=值\u关闭){
颜色[0]=0;
颜色[1]=0;
颜色[2]=0;
模拟写入(红色,贴图(颜色[0],0,255,0,最大红色));
analogWrite(绿色,贴图(颜色[1],0,255,0,最大绿色));
模拟写入(蓝针,地图(颜色[2],0,255,0,最大蓝色));
}
}
if(rcvmsg[14]==命令){
字节值=rcvmsg[15];
如果(值==value\u ON){
//int sleepPin[16]={25,29,33,37,41,45,49,53,22,26,30,34,38,42,46,50};
步进1.move(rcvmsg[0]*多路复用器);
步进1.可设置引脚(25);
步进2.移动(rcvmsg[1]*多画面机);
步进2.可设置引脚(29);
步进3.移动(rcvmsg[2]*多画面机);
步进3.可设置引脚(33);
步进4.移动(rcvmsg[3]*多画面机);
步进4.可设置引脚(25);
步进5.移动(rcvmsg[4]*多画面机);
步进5.可设置引脚(37);
步进6.移动(rcvmsg[5]*多画面机);
步进6.可设置引脚(41);
步进7.移动(rcvmsg[6]*多画面机);
步进器7.可设置引脚(45);
步进8.移动(rcvmsg[7]*多画面机);
步进8.可设置引脚(49);
步进9.移动(rcvmsg[8]*多画面机);
步进9.可设置引脚(53);
步进10.移动(rcvmsg[9]*多画面机);
步进10。可设置引脚(22);
步进11.移动(rcvmsg[10]*多画面机);
步进11.可设置引脚(26);
步进12.移动(rcvmsg[11]*多画面机);
步进12.可设置引脚(30);
步进13.移动(rcvmsg[12]*多画面机);
步进13.可设置引脚(34);
步进14.移动(rcvmsg[13]*多画面机);
步进14.可设置引脚(38);
}
else if(value==value\u OFF){
stepper1.run();
if(stepper1.isRunning()==false){
步骤1.禁用输出();
}
stepper2.run();
if(StepR2.isRunning()==false){
步骤2.禁用输出();
}
stepper3.run();
if(StepR3.isRunning()==false){
步骤3.禁用输出();
}
stepper4.run();
if(stepper4.isRunning()==false){
步进4.禁用输出();
}
stepper5.run();
if(stepper5.isRunning()==false){
步骤5.禁用输出();
}
stepper6.run();
if(stepper6.isRunning()==false){
步进6.禁用输出();
}
stepper7.run();
if(stepper7.isRunning()==false){
步进7.禁用输出();
}
stepper8.run();
if(stepper8.isRunning()==false){
步进8.禁用输出();
}
stepper9.run();
if(stepper9.isRunning()==false){
步进9.禁用输出();
}
steper10.run();
如果(步进10.isRu
AccelStepper *slot1;
AccelStepper *slot2;
Accelstepper *slot3;
slot1 = &stepper1;