//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 градусов и удерживать до тех пор, пока сигнал не перестанет приниматься.
Я пытаюсь повернуть сервоприводы на 90 градусов: [code]//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); } [/code] ...и они всегда подходят к краю своего рабочего диапазона и просто покачиваются назад, по какой причине это происходит? У меня есть 5 сервоприводов, подключенных к Arduino Uno через макетную плату. Входные данные поступают от pixy2. Попытка повернуть сервоприводы на 90 градусов и удерживать до тех пор, пока сигнал не перестанет приниматься.