Программный антидребезг

Здравствуйте. Продолжу тему уже на новом форуме)

Спойлер

uint8_t stat = 0x00;
uint32_t timer;

void setup() {
Serial.begin(9600);
pinMode(2, INPUT);
}

void loop() {

bool pinstat = digitalRead(2);

switch (stat) {

case 0x00:
  if (pinstat)stat = 0x01;
  break;

case 0x01:
  if (!pinstat) {
    timer = millis();
    stat = 0x02;
  }
  break;

case 0x02:
  if (!pinstat) {
    if (millis() - timer >= 1000) {
      stat = 0x00;
      Serial.println("button is pressed");
    }
  } else {
    stat = 0x00;
  }
  break;

}
}

Я проверяю сменился ли статус кнопки с 1 на 0 (так как подтяжка к +5) и далее проверяю на дребезг (1000 мс только для наглядности в протеус)
Всё верно в коде? Что - то не весь код подсвечивается в моём сообсщении

Ирина, не для угнетения прыткого ума, пользы для - почему вы не смотрите исходники уже реализованных проектов? Думаю, что возможно не знаете о них - подскажу kakmyc_btn - отличная библиотека для кнопок! Можно массу информации из ее кода почерпнуть!

2 лайка

Тут, на Амперке обсуждали кто как устраняет дребезг.

@Irinka чтобы подсвечивался весь код между тэгами и кодом нужна как минимум одна пустая строка

@BOOM @Irinka Это патамушта ПУТЬ САНТЬЯГО надо от начала и до конца пройти самому )))

2 лайка

в RP2040 состояния всех 32-х пинов можно прочитать одной командой в переменную uint32_t

Здорово! Я пока не добрался до RP2040.

вот как проверить 10,11 и 12 пины к примеру

uint32_t gpio_state = 0;

  gpio_state = (gpio_get_all() >> 10) & 0b0111;

Aфигеть! Чудеса.
2 вопроса. Скобки для чего? 0b есть в стандарте?
2-е строки всего то…

скобок много не бывает, как-то Евгений Петрович уже это объяснял…

и 0x есть, и просто 0

и вообще…в Греции всё есть…
PS код рабочий, проверено!

Ну, раз Петрович объяснил, тогда нужно по две. А то и по три, для надёжности.

Только вот 0b нету.( Казалось бы на кой в Ардуино придумали binary.h? Тупой народец.

тебе жеж с децтва объясняли - не пей зелёного вина… :smiley:

Вот только галиматню то не я несу.

https://ru.wiktionary.org/wiki/галиматья

Если у тебя и с программированием так жеж…я умываю руки…
ЗЫ не злобно, дружески, код взят из описания аддона (то-есть авторский), то, что разработчик написал херню это к нему :smiley:

Ты это счас реально? 0b11110000 бинарная запись числа 0xF0. Появилась вместе с языком, в 70-х.

1 лайк

Вот для этого и нужны копирайты.

Очень даже реально. Нет такого в стандарте.( Потому и binary.h.