0
最近我遇到了一個問題,我添加了2個以上的語句,它將我的代碼全部停在一起。例如,下面的代碼將與兩個gyroX if語句一起工作,但是一旦我添加這兩個陀螺儀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();
}
沒有看起來應該導致掛斷的那部分代碼看起來不對。你如何爲舵機提供動力?如果你通過Arduino獲得電源,當第二組伺服器試圖移動和關閉電路板時,你可能會畫得太多。給我們一個項目的示意圖。 –
它們獨立於Arduino供電。還值得一提的是,我曾經有過四個舵機同時動作。 –
如果他們獨立供電,你有共同點嗎? –