Я делаю пистолет с резиновой лентой, но я не могу заставить кнопку работать с моим кодом, чтобы включить сервопривод?
#include <Servo.h>
const int buttonPin = 3;
int buttonState = 0;
Servo myservo;
void setup() {
myservo.attach(2);
pinMode(buttonPin, INPUT);
}
void loop() {
buttonState = digitalRead(buttonPin);
if (buttonState == HIGH){ myservo.write(90); }
else { myservo.write(155); }
delay(1000);
}
@Jonah W, 👍0
Обсуждение2 ответа
▲ 1
Просто поместите кнопку между контактом 3 и GND и используйте внутренний подтягивающий резистор следующим образом:
#include <Servo.h>
const int buttonPin = 3;
int buttonState = 0;
Servo myservo;
void setup()
{
myservo.attach(2);
pinMode(buttonPin, INPUT_PULLUP);
}
void loop()
{
buttonState = digitalRead(buttonPin);
if(buttonState == LOW)
{
myservo.write(90);
}
else
{
myservo.write(155);
}
delay(1000);
}
,
@Nyos
▲ 0
Есть две проблемы, на которые следует обратить внимание при использовании кнопки:
- Плавающий вход: => с использованием подтягивающего или подтягивающего резистора, см. раздел Использование подтягивающего/подтягивающего резистора
- Явление дребезга => Отказ См. устранение дребезга кнопки
,
@Rozona Zoro
Поскольку частота импульсов сервопривода составляет около 50 Гц, период синхронизации составляет около 20 мс. Этого более чем достаточно для устранения дребезга кнопок, так что в этом нет необходимости., @the busybee
Смотрите также:
- C++ против языка Arduino?
- avrdude ser_open() can't set com-state
- Как читать и записывать EEPROM в ESP8266
- Float печатается только 2 десятичных знака после запятой
- устаревшее преобразование из строковой константы в 'char*'
- Запрограммировать ATMega328P и использовать его без платы Arduino.
- Разница между print() и println()
- Как исправить: Invalid conversion from 'const char*' to 'char*' [-fpermissive]
А что именно не работает? Что, по вашему мнению, происходит или не происходит? Чего вы ожидали?, @chrisl
Таким образом, предполагается, что сервопривод перемещается, когда я нажимаю кнопку, но сервопривод просто перемещается взад и вперед случайным образом., @Jonah W
Плавающий ввод. Покажи свою проводку., @Majenko
Вы также можете распечатать buttonState и проверить его значение в последовательном мониторе., @Paul