Добрый день. Пытаюсь сделать гексапода на 18 сервах. Использую Ардуино Уно и шилд от Амперки этот: http://amperka.ru/product/arduino-multiservo-shield При подключении лап (6 лап по 3 серва) каждая отдельно работает нормально. Подключая до 4 лап одновременно тоже проблем нет. Причем любые. Но если включаю все 6, они все начинают хаотично двигаться в случайном направлении Подскажите, что может быть проблемой Спасибо
Напряжение поднять? Или нужно аккум мощнее с тем же напряжением? Я пальчиковые аккумуляторы использую
Советую прочитать что такое электрический ток, и усвоить основные законы. Без этого далеко не уедете.
Код (C++): /* #1 Серва1 упр. выв -> 2 , 3, 4, 5, 6 (servo_pin[]) +5В -> +5В GND -> GND резистор нижний выв -> GND средний выв -> A0, A1, A2, A3, A4 (R_pin[]) верхний выв -> +5 */ //#1 uint8_t i = 0 ; const int number_of_servo = 5; const int servo_pin[] = { 2 , 3, 4, 5, 6 } ; uint16_t servo_value[] = { 544, 544, 544, 544, 544 } ; // величина на серве 544-2400 мкс. uint8_t servo[] = { 0, 0, 0, 0, 0 } ; const int R_pin[] = { A0, A1, A2, A3, A4 } ; // нога резистора void setup() { //#1 for (i = 0; i < number_of_servo; i++) { pinMode (servo_pin[i], OUTPUT); digitalWrite (servo_pin[i], servo[i] = 0); } i = 0; } void loop() { //#1 3 миллисекунд обслуживание сервы 1 static uint32_t past_1 = 0 ; if (servo[i] && (micros() - past_1 >= servo_value[i])) digitalWrite (servo_pin[i], servo[i] = 0); if (micros() - past_1 >= 3000) { // если прошло 3000 микросек i = (i + 1) % number_of_servo; past_1 = micros() ; digitalWrite (servo_pin[i], servo[i] = 1); servo_value[i] = map (analogRead(R_pin[i]), 0, 1023, 544, 2400); } }