Плавающий контакт: ложное нажатие кнопки
- Войдите на сайт для отправки комментариев
Сб, 07/03/2020 - 14:13
После подключения геймпада, во время теста были выявлены ложные рандомные нажатия, регистрируемые контроллером даже при выключенном самом геймпаде.
- Значения (analogRead) ложных нажатий и контролируемых мной - одинаковы
- Подтягивающий резистор не решает проблему
- Использование delay неуместно
- Триггера Шмидта в наличии нет
Необходимо либо избавиться от случайных сигналов, либо дать понять микроконтроллеру, где "мои" нажатия, а где - случайные
Задержку использовать очень нежелательно, так как мне необходимо добиться мгновенного реагирования на нажатие кнопки
На PSB_RED ложные нажатия практически отсутствуют
На PSB_PINK нажатий больше
Буду благодарен за помощь в решении проблемы
#include <PS2X_lib.h> #include <AccelStepper.h> PS2X ps2x; byte Type = 0; byte vibrate = 0; int RX=0,RY=0,LX=0,LY=0; AccelStepper Stepper1(1,13,12); const int fan = 9; void setup(){ Serial.begin(9600); pinMode(fan,OUTPUT); Stepper1.setMaxSpeed(3000); Stepper1.setAcceleration(13000); ps2x.config_gamepad(3,6,5,7, true, true); Type = ps2x.readType(); } void loop(){ analogWrite(fan,255); ps2x.read_gamepad(false, vibrate); if(ps2x.NewButtonState()) { if (ps2x.Button(PSB_RED)){ Serial.println(PSB_RED); } if (ps2x.Button(PSB_PINK)){ Serial.println(PSB_RED); } } }
Задержку использовать очень нежелательно, так как мне необходимо добиться мгновенного реагирования на нажатие кнопки
Я не так долго занимаюсь ардуино и не представляю, как это располагается в коде. Могли бы вы написать с объявлением переменных и функций setup() and loop() ?
Это располагается в коде библиотеки, которую Вы используете. О нежелательности каких задержек Вы пишете после этого?
Задержка перед считыванием значения кнопки, когда кнопку необходимо удерживать некоторое время с использованием millis. Дело в том, что у меня при удержании кнопки нет постоянного сигнала - аппаратный вывод TX мигает
Могли бы вы написать с объявлением переменных и функций setup() and loop() ?
«Дяденька, ты, пожалуйста, это разжуй, положи мне в ротик, а когда оно переработается и лишнее выйдет, не забудь мне попку подтереть».
kadnedir, «с объявлением переменных и функций setup() and loop()» пишут за деньги в коммерческом разделе форума. Welcom to the real world, baby!
Кто-нибудь понимает, на каком языке это написано: "когда кнопку необходимо удерживать некоторое время с использованием millis"?
Не нужно компенсировать некомпетентность остротами. Не эквивалентно, знаете ли ;)
Удивлен, мне казалось это очевидным способом. Я точно обращаюсь за советом по адресу?
В приведённом фрагменте отсутствует задержка и наличествует мгновенная реакция на нажатие кнопки или даны критерии отличия пользовательских нажатий на кнопку от случайных помех?
В приведенном фрагменте присутствует задержка inc и это пример того, что мне не нужно. Конструкция, как я написал выше, основана на millis.
Пробовал использовать другой способ, но по неизвестным мне причинам (возможно, ввиду малых познаний) он не выполняет свою работу, а именно: после установки значения buttonState = 1 цикл не начинает по новой увеличивать значение (RED_buttonState_count++). Так же, RED_buttonState_count-- не сбрасывает счетчик до 0
Я действительно не знаю, что мне использовать для решения. Если есть возможность подсказать так, чтобы я понял, подскажите. Я не прошу писать для меня код. Это касается моей учебы и я отношусь к этому как к навыку, который никто за меня приобрести не способен.
Не нужно компенсировать некомпетентность остротами. Не эквивалентно, знаете ли ;)
Ты недооцениваешь мою некомпетентность. Её ничем скомпенсировать невозможно
Я точно обращаюсь за советом по адресу?
Нет!
Если хочешь что-то кроме глума, выкладывай схему подключения, потому что фраза
- Подтягивающий резистор не решает проблему
на 99% означает, что ты что-то неправильно подключил.
Это что? Твоя схема? Или левое картинко, стыренное с какого-то сайта?
Если твоя, то где на ней обещанный
Подтягивающий резистор
который
?
Враги украли?
Самым наглым образом
левое картинко, стыренное с какого-то сайта
К сожалению, не имею возможности качественно нарисовать схему. Но думаю, этого достаточно для понимания. Я пробовал два варианта, более того, менял 3,3 на 5V (2-я пикча), ничего. Ставил конденсатор на питание (GND и 3,3) - тоже.
Я расстраиваюсь
К сожалению, не имею возможности качественно нарисовать схему. Но думаю, этого достаточно для понимания.
А старым, дедовским способом, ручкой, на бумажке, без наскальной живописи? Примерно так: