Добрый день форумчане! Помогите немного. Есть Ардуин, кнопка и сервомотор. Должно быть: сервомотор вращается пока нажата кнопка. По факту серва начинает вращаться при нажатии на кнопку. У меня скетч такой: Код (C++): #include <Servo.h>//подключаем библиотеку для работы с сервомотором Servo myservo;//создаем переменную-объект для управления сервомотором int pos = 0;//переменная для хранения угла поворота сервомотора void setup() { pinMode(2, INPUT_PULLUP); myservo.attach(5);// назначаем управляющий пин для сервомотора(номер 5) } void loop() { int sensorVal = digitalRead(2); if (digitalRead(sensorVal) == HIGH) { for(pos=0; pos<=180; pos ++)//делаем цикл от 0 до 180 с шагом 1 { myservo.write(pos);// поворачиваем сервомотор на позицию pos delay(15);//ждем 15 мс, чтобы сервомотор достиг позиции } for(pos = 180; pos>=0; pos --) { myservo.write(pos); delay(15); } } else { myservo.write(LOW); } }
у вас if будет продолжаться пока не отработает - а если надо выйти по состоянию входа (тобишь раньше), то это надо предусмотреть в for - опросив кнопку и сделать break хотите нажав кнопку выставить нужный поворот серво - а потом как - ведь pos опять равен 0 при следующем заходе? pos = old_pos а потом перед break old_pos = pos
Что-то я как-то не совсем понял. Судя по коду кнопка у вас подключена к пину 2, который вы подтягиваете к питанию Код (C++): pinMode(2, INPUT_PULLUP); Но что вы делаете в этих двух строках? Код (C++): int sensorVal = digitalRead(2); if (digitalRead(sensorVal) == HIGH)