Скетч барахлит...
- Войдите на сайт для отправки комментариев
Пнд, 19/10/2015 - 06:10
Доброго всем времени суток. Толи скетч барахлит, толи я. Вобщем суть такая: если порог громкости на микрафоне выше допустимого больше 2 сек., то должен сработать сервопривод, повернувшись на 90 гр.. Если после этого нажать кнопку, то сервопривод вернется в исходное положение. Но первого действия не происходит, а второе выглядит так: нажал кнопку серв поворачивается на 180 гр. и возвращается обратно.
Так и понять не могу, что не так в коде!
Так и понять не могу, что не так в коде!
А почему кнопка проинициализирована как выход? Строка 16
А должна быть как вход? Сорри за тупой вопрос!
А если я поменяю на вход, то значение HIGH мне нужно будет менять на LOW?
А должна быть как вход? Сорри за тупой вопрос!
Да, как вход. Либо вообще удалить эту строку. Входа можно не инициализировать
Зависит от того, к плюсу или к минусу у тебя подключена кнопка вторым концом. Если к плюсу, то оставить
У меня кнопка идет одним концом черзе резистр на землю и к 3 пину. А обратная сторона кнопки идет на питание. Получается мне оставитьнадо!
И еще вопрос, а с кодом датчика шума, все впорядке?
Нет не в порядке. У тебя карент тайм всегда будет равен миллис, пока уровень звука приввшает пороговое значение. И ничего отсчитывать не будет.
1. Комментарии не соответствуют логике. По программе серва должна повернуться если с момента включения прошло более 2 секунд при достаточном пороге шума. Выведите в сериал то что получаете на переменных.
2. AnalogRead вызывается слишком часто.
3. Как подключена кнопка? Подтяжка к чему-либо присутствует? От этого будет зависеть HIGH или LOW.
4. Нет антидребезга, но при такой малой задаче несущественно.
Еще пoдсказка: значение переменной loopTime внутри loop() нигде не нзменяется.
А как тогда отсчитать время именно с того момента, когда порог привысит свое значение?
Почитайте тему "как мигать светодиодом без делай". Принцип будет тот же.
Я прочитал эту тему но там светодиод будет включатся в любом случае после заданных сек., после запуска программы. А мне нужно, что-бы оно начало отсчет, с того момента, как порог громкости превышен!
попробуй
Спасибо попробую!!!
После 27 строки советую поставить x=0; хотя бы. А то серву замучаете. Или в 26 строке условием поставьте x=2000. Мимо не проскочит, но и не сработает несколько раз.
Спасибо Всем. Учту!