насчет пьез скорее всего дело реально в них самих, у меня с 1м выхлоп достаточно большой был всегда... (на пьезах типа от открытки)
ну надо просто усилить скорее всего, в звуковуху (инстр вход) пьезу если воткнуть и посмотреть какой там уровень, можно будет примерно понять на сколько надо усилить, можно на ОУ можно на логическом элементе в линейном режиме например... ну и конечно стаб или два диода об плюс минус питание, само собой нужны для "мало ли чо")
но периодически слабые удары воспринимает как сильные т.к. почему-то время движения из точки А в точку Б считывает слишком маленьким значением.
это возможно из-за того как замеряешь время, программная хрень может быть, если это код там типа в лупе вертится или какие-то ардуиновские встроенные фичи для замера времени и тд - на них полагаться стопудов не стоит. мне кажется логичнее не время измерять, а амплитуду между жестко заданными временными участками. типа.
(ну это все для примера)
таймер какой-нибудь настраиваем, прерывание чтоб срабатывало по переполнению, раз в... ну часто, килогерцы.
в прерывании, считываем какое значение висит на АЦП,
если оно выше порога срабатывания,
делаем математику с предыдущим(и) значением(ми), и готова велосити.
если порог не превышен, тупо запоминаем значение, как "последнее"..
теперь запускаем замер АЦП (он несколько своих тиков замеряется можно частоту оцифровки выбрать удобную пусть там себе замеряется)
и выходим из прерывания. ацп тем временем делает свою работу. а мы можем делать чо угодно дальше
не знаю канеш… но в принципе замеры значения между четких временных интервалов, наверное надёжнее. только над наверн анализировать сразу несколько замеров, которые шли до превышения порога, по ним будет точнее, потому что порог мог быть превышен и в начале времени и в конце, мы не знаем, но по нескольким значениям уж точно усреднится..