1310servo tuda: различия между версиями

Материал из УМКИwiki
Перейти к навигации Перейти к поиску
(Новая страница: «<code> ////////////////////////////////////////////// // 2019.07.25 woronin, umkiedu@gmail.com // работа с Сервомотором // Rob…»)
 
Нет описания правки
 
(не показаны 3 промежуточные версии 2 участников)
Строка 1: Строка 1:
<code>
<syntaxhighlight lang="C++">
  //////////////////////////////////////////////
  //////////////////////////////////////////////
  //    2019.07.25 woronin,  umkiedu@gmail.com
  //    2025.01.21 woronin,  umkiedu@gmail.com
  //    работа с Сервомотором
  //    работа с шестью Сервомоторами, плавное перемещение от 15 до 180 градусов
  //    Robot UMKI controller  K6_3
  //    Robot UMKI controller  K6_3
  //    повроты серво мотора
  //    повроты серво мотора
  //////////////////////////////////////////////
  //////////////////////////////////////////////
#include <Servo.h> // подключаем библиотеку для работы с сервоприводом
#include <Servo.h>
Servo servo1; // объявляем переменную servo типа "servo1"
 
void setup() // процедура setup
#define NUM_SERVOS 6
{
 
servo1.attach(A7); // привязываем сервопривод к аналоговому выходу А7
Servo servos[NUM_SERVOS];
}
const int servoPins[] = {9, 10, 11, 12, 13, 14}; // Пин каждого сервопривода
void loop() // процедура loop
 
{
void setup() {
servo1.write(0); // ставим угол поворота под 0
  for (int i = 0; i < NUM_SERVOS; ++i) {
delay(2000); // ждем 2 секунды
    servos[i].attach(servoPins[i]);
servo1.write(90); // ставим угол поворота под 90
    servos[i].write(90);  // Установить все сервоприводы в начальную позицию 90 градусов
delay(2000); // ждем 2 секунды
  }
servo1.write(180); // ставим угол поворота под 180
}
delay(2000); // ждем 2 секунды
 
}
void loop() {
</code>
  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);
  }
}
 
 
</syntaxhighlight>


[[Категория:Видео эпизоды УМКИ]]
[[Категория:Видео эпизоды УМКИ]]
[[Категория:Примеры программирования Arduino]]

Текущая версия от 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);
  }
}