If statement 添加更多if语句后,程序停止

If statement 添加更多if语句后,程序停止,if-statement,arduino,gyroscope,servo,If Statement,Arduino,Gyroscope,Servo,最近我遇到了一个问题,我添加了两个以上的if语句,它一起停止了我的代码。例如,下面的代码将使用两个gyroX if语句,但一旦我添加了这两个gyroY if语句,整个代码将无法运行。如有任何关于如何解决此问题的建议,将不胜感激 #include <Wire.h> #include <Servo.h> Servo servo1; Servo servo2; Servo servo3; Servo servo4; int pos1 = 0; int pos2 = 0;

最近我遇到了一个问题,我添加了两个以上的if语句,它一起停止了我的代码。例如,下面的代码将使用两个gyroX if语句,但一旦我添加了这两个gyroY if语句,整个代码将无法运行。如有任何关于如何解决此问题的建议,将不胜感激

#include <Wire.h>
#include <Servo.h>

Servo servo1;
Servo servo2;
Servo servo3;
Servo servo4;

int pos1 = 0;
int pos2 = 0;

long gyroX, gyroY, gyroZ;

void setup() {
  Serial.begin(9600);
  Wire.begin();
  setupMPU();
  servo1.attach(4);
  servo2.attach(5);
  servo3.attach(6);
  servo4.attach(7);
}

void loop() { 
  recordGyroRegisters();
  if(gyroX <= 0)
  {
      pos1 += 1;
      servo1.writeMicroseconds(pos1);
      servo3.writeMicroseconds(pos1);
  }
  if(gyroX > 0)
  {
      pos1 -= 1;
      servo1.writeMicroseconds(pos1);
      servo3.writeMicroseconds(pos1);
  }
  if(gyroY <= 0)  //PROBLEM OCCURS WHEN I ADD THIS FUNCTION
  {
      pos2 += 1;
      servo2.writeMicroseconds(pos2);
      servo4.writeMicroseconds(pos2);
  }
  if(gyroY > 0)   //PROBLEM OCCURS WHEN I ADD THIS FUNCTION
  {
      pos2 -= 1;
      servo2.writeMicroseconds(pos2);
      servo4.writeMicroseconds(pos2);
  }
}

void setupMPU(){
  Wire.beginTransmission(0b1101000); 
  Wire.write(0x6B); 
  Wire.write(0b00000000); 
  Wire.endTransmission();  
  Wire.beginTransmission(0b1101000); 
  Wire.write(0x1B); 
  Wire.write(0x00000000); 
  Wire.endTransmission(); 
  Wire.beginTransmission(0b1101000);
  Wire.write(0x1C);  
  Wire.write(0b00000000); 
  Wire.endTransmission(); 
}

void recordGyroRegisters() {
  Wire.beginTransmission(0b1101000);
  Wire.write(0x3B); 
  Wire.endTransmission();
  Wire.requestFrom(0b1101000,6);
  while(Wire.available() < 6);
  gyroX = Wire.read()<<8|Wire.read();
  gyroY = Wire.read()<<8|Wire.read(); 
  gyroZ = Wire.read()<<8|Wire.read(); 
}
#包括
#包括
伺服伺服1;
伺服2;
伺服3;
伺服4;
int pos1=0;
int pos2=0;
长陀螺X、陀螺Y、陀螺Z;
无效设置(){
Serial.begin(9600);
Wire.begin();
setupMPU();
伺服1.连接(4);
2.连接(5);
3.连接(6);
伺服4.连接(7);
}
void loop(){
记录寄存器();
中频(gyroX 0)
{
pos1-=1;
servo1.writeMicroseconds(位置1);
servo3.writeMicroseconds(位置1);
}
if(gyroY 0)//添加此函数时出现问题
{
pos2-=1;
servo2.writeMicroseconds(pos2);
servo4.writeMicroseconds(位置2);
}
}
void setupMPU(){
导线开始传输(0b1101000);
线写入(0x6B);
连线写入(0b00000000);
导线端传动();
导线开始传输(0b1101000);
线写入(0x1B);
连线写入(0x00000000);
导线端传动();
导线开始传输(0b1101000);
线写入(0x1C);
连线写入(0b00000000);
导线端传动();
}
无效记录寄存器(){
导线开始传输(0b1101000);
线写入(0x3B);
导线端传动();
请求自(0b1101000,6)的电线;
while(Wire.available()<6);

gyroX=Wire.read()如果
,为什么不使用
else?
它会工作得更快

if(gyroX <= 0)
{
  ...
}
else if(gyroX > 0)
{
}

if(gyroY <= 0)  //PROBLEM OCCURS WHEN I ADD THIS FUNCTION
{
}
else if(gyroY > 0)   //PROBLEM OCCURS WHEN I ADD THIS FUNCTION
{
}
if(gyroX 0)
{
}
if(gyroY 0)//添加此函数时出现问题
{
}

代码的这一部分看起来没有什么问题,应该会导致挂起。你是如何给伺服系统供电的?如果你通过Arduino获取电力,那么当第二组伺服系统试图移动并关闭电路板时,你可能会消耗太多。给我们一个项目示意图。它们的供电独立于Arduino。这是一个问题同样值得一提的是,我已经让所有四个伺服同时运行。如果它们是独立供电的,你有共同点吗?它到底是如何挂起的?你是否只注释了If语句,还是注释了
recordGyroRegisters()中的部分考虑使用“<代码>长< /代码>变量的内容添加调试打印。是的,伺服设备与同一电池并联连接。因此它们有共同点。