Добрый день. Буду признателен если поможете разобраться. Есть UNO c motor shield, к нему подключены два простых двигателя к разъемам M1 и M2. К ардуино к цифровому порту 2 подключен приемник на 433 МГц. Так же есть пульт от реле с двумя кнопками тоже работающий на 433 МГц. Для управления двигателями, этим пультом, использую код: Код (C++): #include <RCSwitch.h> RCSwitch mySwitch = RCSwitch(); #include <AFMotor.h> AF_DCMotor motor1(1); AF_DCMotor motor2(2); int value; void setup() { mySwitch.enableReceive(0); Serial.begin(115000); motor1.setSpeed(255); motor2.setSpeed(255); motor1.run(RELEASE); // stop motor2.run(RELEASE); // stop } void loop () { if( mySwitch.available() ){ value = mySwitch.getReceivedValue(); Serial.println(value); if (value == 5568 ) { //Вперед motor1.run(FORWARD); motor2.run(FORWARD);; } else if (value == 5424) { //Назад motor1.run(BACKWARD); motor2.run(BACKWARD); } В данном случае двигатели меняют направление движения, но работают постоянно. Можно ли сделать так, чтобы двигатели работали только при удержании кнопки на пульте и останавливались если кнопку отпустить?
У вас использованы только команды "Вперед" (5568) и "Назад" (5424). Добавьте обработку команды "Стоп", где программа будет это выполнять при определенном значении. Наверняка этот обработчик есть в используемой библиотеке. Значение определите тем же путем, что и два имеющихся определяли.
непосредственно сделать то, что вы хотите - нельзя. Пульты не посылают сигнал постоянно, они делают это периодически.Поэтому единственный алгоритм, который подходит под вашу задачу - запрограммировать моторы так, чтобы они останавливались, если сигнал не пришел в течении последних, скажем, 200 миллисекунд
Спасибо за ответ, но вся суть вопроса в том, как в данном случае избавиться от необходимости в третьей кнопке "стоп". Дело в том, что я пробовал разные варианты написания и другие библиотеки для приемника 433 Мгц, но не могу разобраться, как написать условие, что бы при нажатии кнопки пульта двигатели крутились до того момента, как я отпустил кнопку. Например при установке данного набора на колесную платформу где один двигатель с одной стороны и один с другой, необходимо, что бы при нажатии кнопки, платформа двигалась в определенную сторону, только до того момента пока кнопка зажата.
Не смешивайте понятия "кнопка" и "команда". Отсутствие "нажатий" кнопок "Вперед" или "Назад" - это и есть команда "Стоп". Телевизор что делает, если пульт не трогать ?