1310servo tuda: различия между версиями
		
		
		
		
		
		Перейти к навигации
		Перейти к поиску
		
				
		
		
	
Woronin (обсуждение | вклад) Нет описания правки  | 
				Woronin (обсуждение | вклад)  Нет описания правки  | 
				||
| Строка 1: | Строка 1: | ||
<syntaxhighlight lang="C++">  | <syntaxhighlight lang="C++">  | ||
  //////////////////////////////////////////////  |   //////////////////////////////////////////////  | ||
  //       |   //     2025.01.21 woronin,  umkiedu@gmail.com  | ||
  //     работа с   |   //     работа с шестью Сервомоторами, плавное перемещение от 15 до 180 градусов  | ||
  //     Robot UMKI controller  K6_3  |   //     Robot UMKI controller  K6_3  | ||
  //     повроты серво мотора  |   //     повроты серво мотора  | ||
  //////////////////////////////////////////////  |   //////////////////////////////////////////////  | ||
#include <Servo.h>  | |||
void setup() //   | #define NUM_SERVOS 6  | ||
{  | |||
Servo servos[NUM_SERVOS];  | |||
const int servoPins[] = {9, 10, 11, 12, 13, 14};  // Пин каждого сервопривода  | |||
void setup() {  | |||
  for (int i = 0; i < NUM_SERVOS; ++i) {  | |||
    servos[i].attach(servoPins[i]);  | |||
    servos[i].write(90);  // Установить все сервоприводы в начальную позицию 90 градусов  | |||
  }  | |||
}  | |||
void loop() {  | |||
  for (int i = 0; i < NUM_SERVOS; ++i) {  | |||
    moveServo(i, 90, 180, 15);  // Повернуть сервопривод от 90 до 180 градусов  | |||
    delay(3000);                // Ждать 3 секунды  | |||
    moveServo(i, 180, 90, 15);  // Вернуться обратно к 90 градусам  | |||
    delay(500);                 // Небольшая пауза перед следующим сервоприводом  | |||
  }  | |||
}  | }  | ||
void   | // Функция для плавного перемещения сервопривода от одного угла к другому  | ||
{  | void moveServo(int index, int startAngle, int endAngle, int stepDelay) {  | ||
  for (int angle = startAngle; angle <= endAngle; angle++) {  | |||
    servos[index].write(angle);  | |||
    delay(stepDelay);  | |||
  }  | |||
  for (int angle = endAngle; angle >= startAngle; angle--) {  | |||
    servos[index].write(angle);  | |||
    delay(stepDelay);  | |||
  }  | |||
}  | }  | ||
</syntaxhighlight>  | </syntaxhighlight>  | ||
Текущая версия от 15:47, 21 января 2025
 //////////////////////////////////////////////
 //     2025.01.21 woronin,  umkiedu@gmail.com
 //     работа с шестью Сервомоторами, плавное перемещение от 15 до 180 градусов
 //     Robot UMKI controller  K6_3
 //     повроты серво мотора
 //////////////////////////////////////////////
#include <Servo.h>
#define NUM_SERVOS 6
Servo servos[NUM_SERVOS];
const int servoPins[] = {9, 10, 11, 12, 13, 14};  // Пин каждого сервопривода
void setup() {
  for (int i = 0; i < NUM_SERVOS; ++i) {
    servos[i].attach(servoPins[i]);
    servos[i].write(90);  // Установить все сервоприводы в начальную позицию 90 градусов
  }
}
void loop() {
  for (int i = 0; i < NUM_SERVOS; ++i) {
    moveServo(i, 90, 180, 15);  // Повернуть сервопривод от 90 до 180 градусов
    delay(3000);                // Ждать 3 секунды
    moveServo(i, 180, 90, 15);  // Вернуться обратно к 90 градусам
    delay(500);                 // Небольшая пауза перед следующим сервоприводом
  }
}
// Функция для плавного перемещения сервопривода от одного угла к другому
void moveServo(int index, int startAngle, int endAngle, int stepDelay) {
  for (int angle = startAngle; angle <= endAngle; angle++) {
    servos[index].write(angle);
    delay(stepDelay);
  }
  for (int angle = endAngle; angle >= startAngle; angle--) {
    servos[index].write(angle);
    delay(stepDelay);
  }
}