0
최근에 나는 2 개의 if 문을 추가하고 모두 함께 코드를 중지하는 문제가 발생했습니다. 예를 들어, 아래의 코드는 두 개의 gyroX if 문과 함께 작동하지만 일단 두 개의 gyroY if 문을 추가하면 전체 코드가 실행되지 않습니다. 이 문제를 해결하는 방법에 대한 제안은 감사하겠습니다.더 많은 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();
}
코드의 해당 부분이 끊어져도 문제가없는 것으로 보입니다. 어떻게 Servos에 전력을 공급하고 있습니까? Arduino를 통해 전력을 끌어오고 있다면 두 번째 서보 세트가 보드를 움직이고 보드를 닫으려고 할 때 너무 많이 드로잉 할 수 있습니다. 우리에게 프로젝트의 도식을주세요. –
그들은 Arduino와 독립적으로 구동됩니다. 한 번에 4 대의 서보 모터를 모두 움직이게했음을 언급 할 가치가 있습니다. –
전원이 공급되지 않는 경우 공통 접지를 사용합니까? –