Сервоприводы Emax ES08A и Miuzei Micro 9g не поворачиваются под правильным углом?C++

Программы на C++. Форум разработчиков
Ответить
Anonymous
 Сервоприводы Emax ES08A и Miuzei Micro 9g не поворачиваются под правильным углом?

Сообщение Anonymous »

Я пытаюсь повернуть сервоприводы на 90 градусов:

Код: Выделить всё

//Include necessary libraries
#include 
#include  //  0) {
//Loop through all detected blocks
for (int i = 0; i < pixy.ccc.numBlocks; i++) {
//Check for signature 1 (Red)
if (pixy.ccc.blocks[i].m_signature == 1) {
signature1Detected = 1;
}
//Check for signature 2 (Green)
else if (pixy.ccc.blocks[i].m_signature == 2) {
signature2Detected = 1;
}
//Check for signature 3 (Yellow)
else if (pixy.ccc.blocks[i].m_signature == 3) {
signature3Detected = 1;
}
//Check for signature 4 (Blue)
else if (pixy.ccc.blocks[i].m_signature == 4) {
signature4Detected = 1;
}
//Check for signature 5 (White)
else if (pixy.ccc.blocks[i].m_signature == 5) {
signature5Detected = 1;
}
}
}

// --- NEW SERVO LOGIC ---
// This logic uses .write() to set a position (angle)

// Control servo on pin 3 based on signature 1
if (signature1Detected == 1) {
servo1.write(DETECTED_POSITION);
} else {
servo1.write(START_POSITION);
}

// Control servo on pin 5 based on signature 2
if (signature2Detected == 1) {
servo2.write(DETECTED_POSITION);
} else {
servo2.write(START_POSITION);
}

// Control servo on pin 6 based on signature 3
if (signature3Detected == 1) {
servo3.write(DETECTED_POSITION);
} else {
servo3.write(START_POSITION);
}

// Control servo on pin 9 based on signature 4
if (signature4Detected == 1) {
servo4.write(DETECTED_POSITION);
} else {
servo4.write(START_POSITION);
}

// Control servo on pin 10 based on signature 5
if (signature5Detected == 1) {
servo5.write(DETECTED_POSITION);
} else {
servo5.write(START_POSITION);
}
// --- END OF SERVO LOGIC ---

//Print outputs in simple English
if (signature1Detected == 1) {
Serial.println("Red (Signature 1)");
}
if (signature2Detected == 1) {
Serial.println("Yellow (Signature 2)");
}
if (signature3Detected == 1) {
Serial.println("Green (Signature 3)");
}
if (signature4Detected == 1) {
Serial.println("Blue (Signature 4)");
}
if (signature5Detected == 1) {
Serial.println("White (Signature 5)");
}
if (signature1Detected == 0 && signature2Detected == 0 && signature3Detected == 0 && signature4Detected == 0 &&  signature5Detected == 0) {
Serial.println("No blocks detected from signatures 1-5");
}

//Reset variables for next loop
signature1Detected = 0;
signature2Detected = 0;
signature3Detected = 0;
signature4Detected = 0;
signature5Detected = 0;

//Delay to match 60 fps
delay(16);
}
...и они всегда подходят к краю своего рабочего диапазона и просто покачиваются назад, по какой причине это происходит?
У меня есть 5 сервоприводов, подключенных к Arduino Uno через макетную плату. Входные данные поступают от pixy2. Попытка повернуть сервоприводы на 90 градусов и удерживать до тех пор, пока сигнал не перестанет приниматься.

Подробнее здесь: https://stackoverflow.com/questions/798 ... rect-angle
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C++»