Я хочу регистрировать нажатия кнопок с помощью программы Python, которую я написал с помощью Raspberry Pi 3. Мои кнопки подключены как к земле, так и к контактам 22 и 27 GPIO. Однако, когда кнопки нажаты, это не дает постоянное значение True, но оно меняется очень быстро, поэтому я получаю что-то вроде «Правда, Ложь, Правда, Правда, Ложь, Ложь, Ложь, Правда, Правда», когда все должно быть правдой.
Однако, когда кнопка не нажата, она дает постоянную ложь. Я проверил все провода и пробовал с резисторами и без них (10k и 4.7k), но они дают тот же результат.
Есть ли способ исправить эту проблему? Пробовал также с разными переключателями, но все они дают одинаковый результат. Это провода со стандартными перемычками.
Это то, что называется подпрыгиванием . Вы должны ожидать, что любой механический переключатель будет делать это до нескольких десятков мс при включении и отключении.
Чтобы справиться с этим, вы выполняете устранение дребезга в программном обеспечении. Обычно это означает, что вы не считаете новое состояние кнопки действительным, пока не увидите это состояние постоянно в течение 50 мс или около того.
Если подпрыгивание сохраняется, пока вы удерживаете кнопку нажатой, значит, кнопка неисправна. Замени это.
В большинстве руководств говорится, что у вас должно быть только два провода, подключенных к кнопке: один от контакта GPIO к кнопке и один от кнопки к земле. Это не сработало для меня, как должно. У меня все еще есть «провод GPIO», подключенный к кнопке, но рядом с землей есть резистор 10 кОм. Другой звук кнопки я подключил к 3.3в. Убедитесь, что вы не используете ничего выше 3,3 В, потому что контакты GPIO не могут работать с напряжением выше 3,3 В!
кл.
Нил_UK
Тони Стюарт EE75