27 авг. 2025

Arduino управление сервомоторами через кнопки

Ниже пример кода, который позволяет, через измерение напряжение на пинах, устанавливать положение сервомотора в нужное. Проверка напряжение на пине проводится 10 раз в секунду. Не забывайте ставить резистор в 10 кОм для точного определения поступающего напряжения.

Arduino управление сервомоторами через  кнопки
#define VERSION "0.00" //Версия  прошивки

#include <Servo.h> //Библиотека для  серво моторов

#define PINBUTTON0 A0 //Пин  первой кнопки
#define PINBUTTON1 A1 //Пин второй кнопки
#define PINSERVO0 5 //Пин первой  сервы
#define PINSERVO1 6 // Пин второй сервы

Servo Servo0; //Объявление первой сервы
Servo Servo1; //Объявление второй  сервы

const int Servo0StartPosition = 0; //Начальное положение первой сервы
const int Servo1StartPosition = 0; //начальное положение второй сервы
const int Servo0FinichPosition = 180; //Конечное положение первой сервы
const int Servo1FinichPosition = 180; //Конечное положение второй сервы

uint32_t Timer0 = 0; //Таймер

void setup() //иницилизация
{
  Confing(); //Функция первичной настройки
}

void loop() //Постоянно повторяющиеся  функции
{
  if(millis() - Timer0 > 100) //Делаем раз в 100 мс
  {
    Timer0 = millis(); // Обнуление таймера
    ControlServa(); //Управление сервомоторами
  }
}

void Confing() //иницилизация
{
  Serial.begin(115200); //Иницилизация  сериала
  Serial.setTimeout(50); //Ограничение времени приема из сериала
  pinMode(PINBUTTON0, INPUT); // Переводим пин в  резим  измеренеия вольтажа
  pinMode(PINBUTTON1, INPUT); // Переводим пин в  резим  измеренеия вольтажа
  Servo0.attach(PINSERVO0); //Иницилизация  запуска сервомотора
  Servo1.attach(PINSERVO1); //Иницилизация  запуска сервомотора
  Serial.print("START OK!");
}

void ControlServa() //Управление сервами
{
  if(digitalRead(PINBUTTON0)) //Проверка нажания  первой  кнопки
  {
    Servo0.write(Servo0FinichPosition); //Конечное состояние
  }
  else
  {
    Servo0.write(Servo0StartPosition); //первичное состояние
  }
  if(digitalRead(PINBUTTON1)) //Проверка  нажатия второй  кнопки
  {
    Servo1.write(Servo1FinichPosition); //Конечное состояние
  }
  else
  {
    Servo1.write(Servo1StartPosition); //первичное состояние
  }
}

Craftum Конструктор сайтов Craftum