Как реализовать: кнопка перехватывает управление сервоприводом у джойстика?

avex
Offline
Зарегистрирован: 11.03.2017

Привет всем! 

В проекте пользователь управляет двумя сервоприводами с помощью джойстика. На каждый сервопривод есть кнопка, которая в случае нажатия должна перехватить управление у джойстика - в результате должно произойти определенное в коде перемещение сервопривода. То есть, пользователь, даже, если будет двигать рычаг джойстика, после нажатия этой кнопки не сможет управлять сервиком по соответствующему направлению в течение времени, определенном в коде. (Надеюсь, точно описал проблему).

Сами коды управления джойстиком, сервоприводом и обработки нажатия кнопки самые простые, думаю, нет смысла приводить их здесь. 

Меня интересует, как после нажатия кнопки в течение некоторого времени не давать ардуине как считывать данные с пинов, соединенных с осями х и у джойстика, так и исполнять основную программу.

Есть идеи/опыт, как это реализовать?

Voodoo Doll
Voodoo Doll аватар
Offline
Зарегистрирован: 18.09.2016
bool bypass=false;
void loop(){
  bypass=digitalRead(кнопка);
  if(bypass){
    крутитьпрограммно();
  }else{
    крутитьсджоя();
  }
  bypass=false;
}
qwone
qwone аватар
Offline
Зарегистрирован: 03.07.2016

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();
}

 

vvadim
Offline
Зарегистрирован: 23.05.2012

заводите переменную состояния
state=0
играетесь джойстиком

нажали кнопку, изменили состояние
state=1
включили таймер, серва бегает куда нужно, что то ещё делаем, джой не доступен
таймер дотикал - state=0, обнулили таймер, продолжаем игрища с джойстиком

 

andriano
andriano аватар
Offline
Зарегистрирован: 20.06.2015

avex пишет:

Сами коды управления джойстиком, сервоприводом и обработки нажатия кнопки самые простые, думаю, нет смысла приводить их здесь. 

Код блокировки ничуть не сложнее кода управления джойстиком или сервоприводом, поэтому думаю, нет смысла его здесь приводить.