Хочу научить своего робота поворачивать при столкновении препятствия и контактного бампера, разворот программирую через прерывания. Мой код: вопрос: как в прерывании заставить поворачивать робот определенное время, в моем коде робот после срабатывания левого контактного бампера, робот просто начинает разворот и продолжает его бесконечно. пробовал delay(2000); потом смена контактов колес на обратные, но не работает, хотя выше delay для устранения дребезга срабатывает. Заранее спасибо за ответы, прошу сильно тапками не кидать, начинающий я =)
так оно и есть, из этого вытекает вопрос: как отсчитывать время в самом прерывании или заставить крутиться колеса определенно кол-во оборотов
Не отсчитывать. Прерывание должно завершиться максимально быстро. Вся работа должна происходить в loop. Если надо, то в прерывании устанавливаете переменные, которые loop обрабатывает.
вы взводите в прерывании флаг (переменную), а в loop() Отрабатывайте функцию поворота, обнуляя переменную (флаг) когда поворот будет завершен.
т.е. вся суть: в прерывании устанавливаю переменную (из моего примера: bumperleft_state), а весь код реализую в loop