ARDUINO Помогите с опросом кнопки

КотКокос

✩✩✩✩✩✩✩
6 Май 2019
1
0
Всем привет) помогите реализовать код программы, сам я начинающий в этом деле.
1. Хочу производить опрос кнопки по заданному времени:
Например: если в течении 10 секунд кнопка не нажата, то выполняется другой код программы, если нажата то выполнить другой, как осуществить условие знаю, а как произвести опрос по времени, это я не знаю. Как это можно просто выполнить? желательно без лишних библиотек.
2. Если кнопка нажата в течении указанно времени то выполнить код программы, иначе другой код выполнить. Это можно выполнить?
Благодарю за внимание.
 

D_Jackas

★✩✩✩✩✩✩
2 Май 2019
21
16
Вот думаю поступить как модераторы комьюнити, отправить гуглить. А если посерьезнее, то по сути раз понимаешь логику, то тебе остается написать\найти библиотеку для работы по таймеру. К примеру вот.
Исходя из того чтот я понял чего ты хочешь и так как люблю извращаться и не люблю сильно заморачиваться, то примерно как-то вот так:
C++:
#include "GyverTimer.h"

// создать таймер, в скобках период в миллисекундах
GTimer_ms myTimer(10000);
const int BUTTON = 2;

void setup() {
  Serial.begin(9600);
}

void checkBtn() {
    if (digitalRead(BUTTON) == HIGH)
    {
        Serial.println("Кнопка нажата");
    } else {
        Serial.println("Чуда не произошло, кнопка не нажата! Выполним другую функцию");
    }
}

void otherFunction() {
    Serial.println("Я другая функция!");
}

void loop() {
  if (myTimer.isReady())
    Serial.println("действие 1!");
}
Или как то так:
C++:
int timer = 10000;
unsigned long myTimer;
const int BUTTON = 2;

void setup() {
    Serial.begin(9600);
}

void otherFunction() {
    Serial.println("Я другая функция!");
}

void loop(){
    if (millis() - myTimer >= timer)
    {
        if (digitalRead(BUTTON) == HIGH) //Проверяем нажата ли кнопка
        {
            Serial.println("Кнопка нажата");
        } else {
            Serial.println("Чуда не произошло, кнопка не нажата! Выполним другую функцию");
            otherFunction();
        }
    }else {
        //Тут можно проверять в течении всех 10с нажата ли кнопка то же условием
    }
    myTimer = millis();
}

Вроде так. Мог где нить ошибку допустить т.к. писал в дороге..



//P.S. ДЛЯ ОСОБО ПРИДИРЧИВЫХ И ОCОБЕННО МОДЕРАТОРОВ. ПИШУ С ТЕЛЕФОНА И ПОВТОРЮ МОГУ ДОПУСТИТЬ ОШИБКУ ИЛИ ЧТО ТО УПУСТИТЬ =)!!!!