Опубликовано 2026-04-29
Используйте плату разработки Arduino для управления углом поворота сервопривода с помощью кнопки. Это одна из наиболее практичных базовых функций в электронном производстве. Эта статья непосредственно дает полное решение. Используйте обычную кнопку. При нажатии сервопривод поворачивается на 90 градусов, а при отпускании возвращается на 0 градусов. Вам понадобится только плата разработки Arduino, сервопривод 9g, кнопка, несколько проводов Dupont и макет. Согласно схеме подключения и приведенному ниже коду, это можно выполнить за 30 минут.
Список необходимого оборудования:
Плата разработки Arduino (приемлема любая модель, в этой статье в качестве примера взята наиболее распространенная модель)
Сервопривод SG90 9g (серво маломощный, подходит для начального уровня)
Сенсорная кнопка (4-контактная 6x6x5 мм)
Резистор 10 кОм (для подтягивающего резистора)
Макет и немного проволоки Dupont.
Этапы подключения (должны быть точными):
1. Подключите линию сигнала сервопривода (обычно оранжевую или желтую) к контакту 9 Arduino.
2. Подключите кабель питания сервопривода (красный) к контакту 5 В.
3. Подключите провод заземления сервопривода (коричневый или черный) к контакту GND.

4. Один контакт кнопки подключен к 5В, а другой контакт подключен к контакту 2.
5. Подключите понижающий резистор десять кОм параллельно между контактом 2 и GND, чтобы гарантировать, что вход НИЗКИЙ, когда он не нажат.
Распространенной ошибкой является то, что отсутствие подтягивающего резистора приведет к хаотичному изменению состояния кнопки. Один конец резистора подключен к контакту 2, а другой конец подключен к GND.
#включатьсервоприводмойсервопривод; //Создаем объект сервопривода int buttonPin = 2; //Вывод для подключения кнопки int buttonState = 0; //Состояние кнопки хранения intсервоприводПоз = 0; // Текущий угол сервопривода void setup() { myServo.attach(9); // Подключаем сигнальную линию сервопривода к контакту 9 pinMode(buttonPin, INPUT); // Установите вывод кнопки в качестве входных данных myServo.write(0); // Инициализируем угол сервопривода равным 0 градусов } voidloop() { buttonState = digitalRead(buttonPin); // Читаем состояние кнопки if (buttonState == HIGH) { // При нажатии myServo.write(90); // Сервопривод поворачивается на 90 градусов Delay(15); // Подождем, пока сервопривод достигнет позиции } else { // Если не нажата myServo.write(0); // Сервопривод возвращается к 0 градусам Delay(15); } }
Логика основного кода заключается в использовании digitalRead() для постоянного определения уровня контакта 2.。Как только кнопка нажата, то есть когда вывод находится в состоянии HIGH, сервопривод выполняет операцию записи (90).。Когда кнопка отпущена, сервопривод возвращается в режим записи (0).. Посредством структурированного написания мы разделяем программу на четыре четко организованных модуля: инициализация, чтение, суждение и выполнение, чтобы на последующих этапах вы могли расширить ее до многоклавишного или многоракурсного режима управления.
Вопрос: Сервопривод вообще не двигается. В чем может быть причина?
Недостаточный источник питания. Сервопривод должен быть запитан отдельно. Сервопривод 9g может напрямую использовать напряжение 5 В от Arduino, а сервопривод большего размера должен питаться от внешнего источника питания.
Вопрос: Нажмите кнопку один раз, и сервопривод повернется один раз. Вернется ли он к нулю при отпускании?
О: В коде логическая ошибка. Убедитесь, что вы используете структуру if-else, представленную выше, а не просто определяете условия после нажатия.
В: Что делать, если рулевой механизм трясется или рулевое управление неправильное?

1. Проверьте, не ослаблена ли сигнальная линия. 2. Добавьте задержку (15) после записи(). 3. Это обеспечит сервоприводу достаточное время действия.
В: Как изменить его так, чтобы он поворачивался на 90 градусов при однократном нажатии и возвращался в ноль при повторном нажатии?
Необходимо добавить переменные для записи статуса. Всякий раз, когда обнаруживается, что кнопка нажата, бит флага изменяется и записывается соответствующий угол.
В: Кнопки реагируют медленно, а иногда и вовсе не реагируют?
Из-за механического джиттера клавиш вы можете добавить задержку(10) после обнаружения изменения уровня, чтобы устранить джиттер, или использовать библиотеку Bounce2.。
Освоив базовое управление одной кнопкой, вы сможете легко реализовать следующие расширенные функции:
1. Две кнопки управляют вперед и назад соответственно.
Кнопка А: нажмите, чтобы перейти на 180 градусов, отпустите, чтобы вернуться к 0 градусам.
Кнопка B: нажмите, чтобы перейти к 45 градусам, отпустите, чтобы вернуться к 0 градусам.
Измените код: добавьте второй значок кнопки и судите отдельно.
2. Одна кнопка для переключения между тремя углами.
// Угол накапливается при каждом нажатии, 0→60→120→0 цикл int angulars[] = {0, 60, 120}; внутренний индекс = 0; if (buttonState == HIGH && !flag) { // Индекс защиты от двойного щелчка = (index+1) % 3; myServo.write(углы[индекс]); флаг = правда; }
3. Длительное нажатие для непрерывного вращения.
Определите продолжительность действия кнопки и продолжайте увеличивать угол после того, как она превысит 500 мс, пока не будет отпущена.
Ниже приведены полные примеры кода с расширенными функциями. Все принципы основаны на структурированной логике написания этой статьи, то есть на четком вводе. Этот ввод состоит из ключевых состояний, за которыми следует обработка, то есть расчет угла, и, наконец, вывод, который используется в качестве сервокоманды.
Акцент на основной момент: суть управления сервоприводом с помощью кнопок Arduino заключается в преобразовании «цифровых сигналов в сигналы ШИМ». Кнопки задают высокий и низкий уровни, а сервопривод поворачивается на заданный угол в соответствии со значением уровня.Пока проводка правильная (подтягивающий резистор нельзя пропускать), а логика кода использует if-else или конечный автомат, можно добиться стабильного управления.。
Вот три предложения действий, которые вы можете предпринять немедленно:
1. Сегодня вечером я построю базовую версию: на основе электрической схемы и кода в этой статье я использую макет для построения полной схемы и лично стану свидетелем вращения сервопривода при нажатии кнопки.
2. Исследование эксперимента путем изменения значения угла: измените состояние 90 градусов на случайные числовые формы, такие как 45 градусов, 135 градусов, 180 градусов и т. д., внимательно обратите внимание на изменения положения руля, вызванные наблюдением, а затем поймите, что диапазон параметров функции write() составляет от нуля до 180 градусов.
3. Добавьте вторую кнопку и используйте текущий код, чтобы скопировать модуль чтения кнопок, чтобы создать прототип продукта с реальными интерактивными характеристиками, которым можно управлять с помощью разных кнопок под разными углами.
У вас уже есть все необходимые знания для создания сервоприводов с кнопочным управлением с нуля. Теперь откройте Arduino IDE, подключите оборудование и проверьте каждый шаг самостоятельно.
Время обновления: 29 апреля 2026 г.
Свяжитесь со специалистом по продукции Kpower, чтобы порекомендовать подходящий двигатель или редуктор для вашего продукта.