Управление сервы кнопкой
- Войдите на сайт для отправки комментариев
Сб, 22/11/2014 - 23:27
Доброго времени суток.
Помогите, пожалуйста написать работающий код. Необходимо сделать, чтобы удерживании нажатой тактовой кнопки, сервомашинка поворачивала с 0 на 180 градусов в течение 6 секунд. При отпускании кнопки, серва останавливается. Если кнопка разжимается на 3-й секунде, серва застывает на 90 градусах, при повторном нажании она продолжает поворот.
а сам? хоть начни
Я то начала и много вариантов перебрала, но все равно при нажатии проходит полный цикл и серва поворачивает до конца. Вот один из гиблых вариантов:
6с = 6000мс. делим на 180 градусов = 33,33мс на градус
а дальше millis или micros использовать
можно так попробовать. правда на повторное нажатие будет реагировать неадекватно, надо дописывать. но одно долгое нажатие должен правильно отработать
Большое спасибо, при длительном нажатии действительно работает как надо. Код немного дописала, чтобы отпускании и при повторном нажатии лопасть не возвращалась в начальное положение.
Только есть одна проблема - время начинает считываться с момента включения ардуины и никак не зависит от состояния кнопки. Если нажать кнопку на 3 секунде после включения платы, то серва повернет сразу на 90 градусов и дальше будет крутить с нужной скоростью, или же при повтороном нажатии кнопки спустя время лопасть повернется на угол, рассчитанный как будто кнопку не разжимали вовсе.
Вот что пока имеется:
И подскажите пожалуйста как в Arduino IDE можно выводить логи значений переменных, к примеру time, чтобы было легче отслеживать баги?
в setup() поставить Serial.begin(9600);, а там где нужно - делать Serial.println(var);, где var - переменная. Смотреть в Serial monitor, открывается по Ctrl+Shift+M.
Спасибо
Строка 22 зависит только от времени с момента запуска программы, поэтому pos не должна зависеть от millis() напрямую.
может для начала сделать "в лоб" типа такого?
а дальше уже накручивать другие желаемые условия?
кстати для многих серв углы поворота менее 10 и более 70 противопоказаны тк они механически упираются не доезжая. Заставляя серву ехать дальше врядли получится сломать шестерни, но запросто можно спалить моторчик.
Спасибо большое, это действительно работает как надо и ведь так просто. Respect и Уважуха вам
Обращайтесь, тут подскажут ))