@Leksaqq

Как сделать тройное нажатие для кнопки в arduino?

Нужно, чтобы при одинарном нажатии кнопки зажигался красный светодиод, при двойном (например, за период 0,5 с) – зелёный, а при тройном (за такой же период) – синий. Через 2 секунды RGB-светодиод должен погаснуть.
  • Вопрос задан
  • 647 просмотров
Пригласить эксперта
Ответы на вопрос 1
@max4107575
Простой код будет выглядеть как-то так:
int ledPin1 = 1;
int ledPin2 = 2; 
int ledPin3 = 3;   // Светодиоды
int inPin = 4;     // кнопка


void setup()
{
    pinMode(ledPin1, OUTPUT);
    pinMode(ledPin2, OUTPUT);
    pinMode(ledPin3, OUTPUT);
    pinMode(inPin, INPUT);
}
 
bool flag = false;
int counter = 0;
uint32_t timer = 0

void loop()
{
    if (digitalRead(inPin) && !flag && millis()-timer < 500 && counter < 3)
    {
        flag = true;
        counter++;
        timer = millis();
    }
    if (!digitalRead(inPin) && flag)
    {
        flag = false;
    }
    if (!flag && millis()-timer > 2000)
    {
        counter=0;
    }
    switch (counter) 
    {
        case 1:
            digitalWrite(ledPin1, true);
            digitalWrite(ledPin2, false);
            digitalWrite(ledPin3, false);
            break;
        case 2:
            digitalWrite(ledPin1, false);
            digitalWrite(ledPin2, true);
            digitalWrite(ledPin3, false);
            break;
        case 3:
            digitalWrite(ledPin1, false);
            digitalWrite(ledPin2, false);
            digitalWrite(ledPin3, true);
            break;
        default:
            digitalWrite(ledPin1, false);
            digitalWrite(ledPin2, false);
            digitalWrite(ledPin3, false);
    }
}

Можно его усовершенствовать, учесть дребезг контактов, можно воспользоваться библиотекой GyverButton
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы