Arduino является открытой микроконтроллерной платформой, которая прославилась в очень короткие сроки благодаря своим мощным функциям и простоте. Arduino – это находка для изобретателя, энтузиаста, художника и т. д. Можно создать собственную систему, не имея глубоких знаний в области базовой электроники и программирования.

В этой статье вы узнаете, как приостановить выполнение кода и возобновить его с помощью кнопочного переключателя. Иногда мы хотим, чтобы наш код запускался только тогда, когда пользователь выполняет какое-либо действие, например, нажимает кнопку, чтобы получить какое-то значение датчика. В материале вы узнаете, как приостановить программу и возобновить ее только одним нажатием кнопки без использования функции задержки, поскольку мы не можем использовать функцию задержки, если программа должна возобновить работу после взаимодействия с пользователем.
Схема подключения показана на следующем рисунке, она основана на Arduino Nano, двух кнопочных переключателей, ЖК-дисплея и нескольких других пассивных электронных компонентов, таких как резистор. ЖК используется здесь только для демонстрации.

Программный код написан на языке программирования Arduino и скомпилирован с использованием Arduino IDE. В скетче мы будем использовать функции CheckButton().Функция CheckButton1() проверяет, нажата кнопка 1 или нет. При нажатии кнопки значение становится высоким для CheckButtonPress1, и программа возвращается к функции цикла.
#include <LiquidCrystal.h>
int Button1 = A0;
int Button2 = A1;
const int rs = 7, en = 6, d4 = 5, d5 = 4, d6 = 3, d7 = 2;
LiquidCrystal lcd(rs, en, d4, d5, d6, d7);
void setup() {
lcd.begin(16, 2);
pinMode(Button1, INPUT);
pinMode(Button2, INPUT);
}
void loop() {
CheckButton1();
CheckButton2();
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("***Program is***");
lcd.setCursor(0, 1);
lcd.print("***Resumed***");
delay(5000);
}
void CheckButton1(){
int CheckButtonPress1 = 0;
while(1){
CheckButtonPress1 = digitalRead(Button1);
//lcd.clear();
lcd.setCursor(0, 0);
lcd.print("Press 1st Button");
lcd.setCursor(0, 1);
lcd.print(" to continue");
if(CheckButtonPress1 == HIGH){
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("1st But. Pressed");
delay(2000);
return;
}
}
}
void CheckButton2(){
int CheckButtonPress2 = 0;
while(1){
CheckButtonPress2 = digitalRead(Button2);
//lcd.clear();
lcd.setCursor(0, 0);
lcd.print("Press 2nd Button");
lcd.setCursor(0, 1);
lcd.print(" to continue");
if(CheckButtonPress2 == HIGH){
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("2nd But. Pressed");
delay(2000);
return;
}
}
}
© digitrode.ru