Как реализовать: кнопка перехватывает управление сервоприводом у джойстика?
- Войдите на сайт для отправки комментариев
Привет всем!
В проекте пользователь управляет двумя сервоприводами с помощью джойстика. На каждый сервопривод есть кнопка, которая в случае нажатия должна перехватить управление у джойстика - в результате должно произойти определенное в коде перемещение сервопривода. То есть, пользователь, даже, если будет двигать рычаг джойстика, после нажатия этой кнопки не сможет управлять сервиком по соответствующему направлению в течение времени, определенном в коде. (Надеюсь, точно описал проблему).
Сами коды управления джойстиком, сервоприводом и обработки нажатия кнопки самые простые, думаю, нет смысла приводить их здесь.
Меня интересует, как после нажатия кнопки в течение некоторого времени не давать ардуине как считывать данные с пинов, соединенных с осями х и у джойстика, так и исполнять основную программу.
Есть идеи/опыт, как это реализовать?
bool bypass=false; void loop(){ bypass=digitalRead(кнопка); if(bypass){ крутитьпрограммно(); }else{ крутитьсджоя(); } bypass=false; }millis в помощь
Да джойстик лучше подключать так Полный скетч здесь https://yadi.sk/d/dybqAUdo3FW2hW
Головной файл выкладываю
/* Class_do_analog.ino #1 потенциометр ->A0 Принцип кода:запустить функцию и передать величину при изменении состояния */ //#1 потенциометр #include "Cl_do_analog.h" const byte pin = A0; void Do_change(void); Cl_do_analog R(pin, // пин & Do_change);// какую функцию надо сделать void Do_change(void) { Serial.println(R.val); } void setup() { Serial.begin(9600); //#1 потенциометр R.setup(); } void loop() { //#1 потенциометр R.loop(); }заводите переменную состояния
state=0
играетесь джойстиком
нажали кнопку, изменили состояние
state=1
включили таймер, серва бегает куда нужно, что то ещё делаем, джой не доступен
таймер дотикал - state=0, обнулили таймер, продолжаем игрища с джойстиком
Сами коды управления джойстиком, сервоприводом и обработки нажатия кнопки самые простые, думаю, нет смысла приводить их здесь.
Код блокировки ничуть не сложнее кода управления джойстиком или сервоприводом, поэтому думаю, нет смысла его здесь приводить.