Код паузы до нажатия кнопки
Мне нужен какой-то код, чтобы приостановить код Arduino, пока не будет нажата кнопка. У меня есть длинная программа, и в какой-то момент мне нужно условие, что если кнопка на выводе A2 нажата, то идите вперед, иначе ждите.
Я попытался использовать if
с условием, но это не удалось для моей цели. Я думаю, это потому, что, когда(...)
обнаруживает, что кнопка не нажата, она переходит к следующим строкам (как обычно). Но у меня есть длинная программа, и я хочу ждать вечно, пока кнопка не будет нажата.
@Kumar rajit, 👍1
Обсуждение5 ответов
Конструкция, которую вы ищете, называется while
.
Вместо того, чтобы делать "Если кнопка нажата, то продолжайте", вам нужно сделать "пока кнопка не нажата, ничего не делать".
Предполагая, что у вас есть кнопка "active low" (то есть резистор тянет ее до +5 В, когда он не нажат, поэтому digitalRead(A2) == LOW
"нажат"), вы можете сделать:
while (digitalRead(A2) == HIGH) {
// Ничего не делать
}
Поэтому, пока он не нажат (digitalRead(A2) == HIGH
), ничего не делайте. Как только digitalRead(A2)
вернет НИЗКИЙ УРОВЕНЬ (поэтому он больше не == ВЫСОКИЙ
), цикл while завершится, и ваш скетч может продолжить.
Я пишу все о цикле while в статье здесь.
будет ли он продолжаться прямо с того места, где он остановился?.. Скажем, если мой двигатель находится на 67 градусах, он должен возобновиться с того же самого. Делает ли он то же самое?.., @Sonali_B
Вот два способа, которыми вы могли бы подключить кнопку. Если вы подключили его с помощью подтяжки, вам нужно будет проверить на низкий уровень (кнопка заземлит свой выход при нажатии). Если вынуть, кнопка увеличит свой выход при нажатии, и вы протестируетесь на ВЫСОКИЙ уровень.
Если вы будете снова тестировать кнопку менее чем через секунду, не забудьте ее отменить. Переключатели посылают пучок (технический термин :) импульсов в течение значительной доли секунды во время выпечки или хлеба. Подробное обсуждение см. на странице "Переключатели" Ника Гэммона.
Мне нужен код, чтобы приостановить код arduino, пока не будет нажата кнопка.
Для этого я написал простую функцию.
Использование:
buttonWait(<pin_number>);
Код:
/* the function */
void buttonWait(int buttonPin){
int buttonState = 0;
while(1){
buttonState = digitalRead(buttonPin);
if (buttonState == HIGH) {
return;
}
}
}
void loop() {
buttonWait(2); // wait for button press on pin 2
// do something
// ...
}
В этом коде предполагается, что у вас есть съемный резистор, но вы можете легко изменить его для работы с съемным резистором, если почувствуете необходимость:
Смотрите пример кода здесь!
Спасибо, раулдоттех!! Я возился со своим кодом в течение нескольких месяцев, включался и выключался, и сегодня вечером...Я попал в золото!!, @Osprey
@Osprey Это приятно слышать! :), @undo
Батарея не имеет смысла в этой схеме. вы подключили его для использования +5 В от VCC, что правильно, но зачем подключать батарею к +5 В? (Если только вы не планируете обойти внутренний регулятор, а батарея действительно является регулируемым источником питания 5 В?), @Duncan C
Я также поместил параллельно выключателю резистор высокого значения (например. 1 мом). В этом случае у вас есть делитель напряжения, и контактный вход не плавает.
Приостановить программу можно с помощью режима легкого сна, как показано на следующем URL: https://www.youtube.com. /watch?v=GIbSt5mJ5VY
Добро пожаловать в Ардуино! Хотя теоретически это может ответить на вопрос, [было бы предпочтительнее](//meta.stackexchange.com/q/8259) включить сюда основные части ответа и предоставить ссылку для справки., @Juraj
- Как использовать SPI на Arduino?
- Как решить проблему «avrdude: stk500_recv(): programmer is not responding»?
- Как создать несколько запущенных потоков?
- Как подключиться к Arduino с помощью WiFi?
- avrdude ser_open() can't set com-state
- Как узнать частоту дискретизации?
- Что такое Serial.begin(9600)?
- Я закирпичил свой Arduino Uno? Проблемы с загрузкой скетчей на плату
Является ли он активным высоким или активным низким (вы используете подтягивающие или оттягивающие резисторы)?, @Majenko
См.мою правку, пожалуйста. Я просто использую кнопку с резистором. Я тестировал кнопку с разными программами. Все это прекрасно работает., @Kumar rajit
Но вы не ответили на мой вопрос. Резистор подключен к +5 вольт или к GND? Это имеет большое значение для фрагмента кода, который я буду кормить вас с ложечки., @Majenko
Резистор подключен к земле. Помоги мне, @Kumar rajit