Здравствуйте. Помогите, пожалуйста, разобраться... Я хочу запрограммировать моторы подсоединенные к motor shield так, чтобы М1 вращался со скоростью 255, а М2 со скоростью 150. В следующем скетче это возможно сделать? #define SPEED_LEFT 6 #define SPEED_RIGHT 5 #define DIR_LEFT 7 #define DIR_RIGHT 4 void go(int speed, bool reverseLeft, bool reverseRight, int duration) { analogWrite(SPEED_LEFT, speed); analogWrite(SPEED_RIGHT, speed); digitalWrite(DIR_LEFT, reverseLeft ? LOW : HIGH); digitalWrite(DIR_RIGHT, reverseRight ? LOW : HIGH); delay(duration); } void setup() { for(int i = 5; i <= 8; i++) pinMode(i, OUTPUT); } void loop() { // Вращение go(255, false, true, 5000); // Пауза go(0, false, false, 1000); // Вращение go(255, true, false, 5000); // Пауза go(0, false, false, 1000); } Заранее благодарен.
Да, просто разделите параметры функции go: Код (Text): void go(int speedLeft, int speedRight, bool reverseLeft, bool reverseRight, int duration) { analogWrite(SPEED_LEFT, speedLeft); analogWrite(SPEED_RIGHT, speedRight); digitalWrite(DIR_LEFT, reverseLeft ? LOW : HIGH); digitalWrite(DIR_RIGHT, reverseRight ? LOW : HIGH); delay(duration); } …и используйте: Код (Text): go(255, 150, false, false, 1000);
Спасибо за совет. Этот вариант я пробовал, но тут программа выдает ошибку "too few arguments to function void go(int, int, bool, bool, int)" при этом выделяет строку void go(int speedLeft, int speedRight, bool reverseLeft, bool reverseRight, int duration)
Вам стоит немного больше узнать о функциях в языке C. Компилятор заругался и чётко описал в чём проблема: «не хватает аргуметов для функции void go(int, int, bool, bool, int)» То есть, ожидается, что их теперь будет 5, а вы где-то передали меньше. Видимо 4, оставив записи из предыдущего примера `loop`.